【发布时间】:2019-04-11 09:34:26
【问题描述】:
我正在尝试为员工培训网站绘制数据库。
它的工作原理如下:
将为每位员工分配一个或多个模块。
每个模块都将被分配一个或多个课程。
同一模块可以分配给多个员工,同一课程可以分配给多个模块。
每门课程都有一个已完成的状态,并且每个模块也将具有一个已完成状态,这取决于该员工的该模块的所有课程何时完成。
那么这会是第三级关系吗?还是三重多对多关系? 数据库将如何设置?
这是我目前的想法。
员工
EmployeeID
Name
模块
ModuleID
ModuleName
Status
课程
CourseID
CourseName
Status
员工模块
EmployeeID
ModuleID
模块课程
ModuleID
CourseID
我不认为这是正确的,因为课程不会对每个员工都是独一无二的,但它会是每个模块,这不是目标。
如何改进此设计?
【问题讨论】:
-
员工是直接分配课程还是分配模块?换句话说,是否可以为员工分配课程的部分,或者他们是否总是必须完成所修课程中的所有模块?
-
为了避免混淆,Module 是父级, course 是子级。 (这是客户如何构建它的)。因此,员工将被分配一个包含课程的模块。他们将被分配完整的模块,而不是其中的一部分
标签: sql-server database database-design many-to-many