我想知道如何最好地表示数据库中的以下情况。
您有一个角色表。只有几个:[经理,股票,垫子,默认]。 员工与商店之间存在多对多关系。 一家商店可以有许多员工,而一名雇员可以在许多商店受雇。此外,员工在每个与其关联的商店中只能扮演一个角色。
下面是否为这些表建模的正确方法?有更好的方法吗?
CREATE TABLE EmployeeStore
(
Id
StoreId
EmployeeId
EmployeeRoleId
)
CREATE TABLE Store
(
Id
Name
)
CREATE TABLE Employee
(
Id
...
)
CREATE TABLE Role
(
Id
...
)
答案 0 :(得分:0)
通常,当存在多对多关系时,请记住必须为该“多对多”关系创建一个新表,两个表的主键在那里都充当外键,并且这两个表的组合作为新表中的主键。让我用一个例子来清除它:
假设我们有一个表STUDENTS
,具有不同的属性,如student_id(pk), Student_name
等,还有另一个名为subject
的表,具有不同的属性,如subjectCode(pk), subject_faculty, subject_duration
等
这两个表之间的关系是多对多的,因为一个学生可以注册一个以上的科目,而一个学科可以有很多学生,在这种情况下,我们制作了一个新的第三张表StudentsSubject
,其中有{{ 1}}和student_id
作为现有表的外键,并且这两个属性的组合充当该表的主键,您可以对其进行详细研究。