我有一个员工表,我想跟踪他们的操作系统首选项。 他们可以有多个操作系统偏好:
Employee
- ID
- Name
- OS_Prefs_ID
OSTypes
- ID
- OperatingSystemName
- Version
OS_Prefs
- ID
- OSTypes_ID
Employee和OS_Pref之间的关系是“一对多”还是“多对多”?
我猜测Employees(1)到OS_Prefs(很多),对于OSTypes和OS_Prefs,似乎它是OS_Prefs(很多)到OSTypes(1)。正确?
答案 0 :(得分:1)
许多对多
非常简单地说,员工可以拥有许多操作系统,而操作系统可以拥有许多员工。
这就是为什么你需要使用包含两个ID
的第三个表的原因答案 1 :(得分:1)
我猜测Employees(1)到OS_Prefs(很多),对于OSTypes和OS_Prefs,似乎它是OS_Prefs(很多)到OSTypes(1)。正确?
这就是应该的方式,使得从Employee到OSType的关系多对多
但为此你需要稍微改变你的架构:
员工
OSTypes
OS_Prefs
答案 2 :(得分:1)
是员工之间的关系 和OS_Prefs“一对多”或“多对 许多“?
我猜员工(1)来 OS_Prefs(很多)和OSTypes和 OS_Prefs,它似乎是OS_Prefs (很多)到OSTypes(1)。正确?
是的,没错。
顺便说一下,你真正想要建模的关系是员工< - > OSTypes。这是一种多对多的关系。由于这不能(很好地)使用两个表完成,因此使用第三个表(OS_Prefs)将多对多分解为一对多和一对多。这是一种常见的技术,称为join table。答案 3 :(得分:0)
正如我所见,一对一。
这样做:
Employee
- ID
- Name
OSTypes
- ID
- OperatingSystemName
- Version
OS_Prefs
- EmployeeID
- OSTypes_ID