SQL-为员工建模的角色

时间:2018-12-14 21:56:56

标签: mysql sql sql-server database modeling

我想知道如何最好地表示数据库中的以下情况。

您有一个角色表。只有几个:[经理,股票,垫子,默认]。 员工与商店之间存在多对多关系。 一家商店可以有许多员工,而一名雇员可以在许多商店受雇。此外,员工在每个与其关联的商店中只能扮演一个角色。

下面是否为这些表建模的正确方法?有更好的方法吗?

CREATE TABLE EmployeeStore
(
    Id 
    StoreId
    EmployeeId
    EmployeeRoleId 
)

CREATE TABLE Store
(
    Id 
    Name
)

CREATE TABLE Employee
(
    Id 
    ...
)

CREATE TABLE Role
(
    Id 
    ...
)

1 个答案:

答案 0 :(得分:0)

通常,当存在多对多关系时,请记住必须为该“多对多”关系创建一个新表,两个表的主键在那里都充当外键,并且这两个表的组合作为新表中的主键。让我用一个例子来清除它:

假设我们有一个表STUDENTS,具有不同的属性,如student_id(pk), Student_name等,还有另一个名为subject的表,具有不同的属性,如subjectCode(pk), subject_faculty, subject_duration

这两个表之间的关系是多对多的,因为一个学生可以注册一个以上的科目,而一个学科可以有很多学生,在这种情况下,我们制作了一个新的第三张表StudentsSubject,其中有{{ 1}}和student_id作为现有表的外键,并且这两个属性的组合充当该表的主键,您可以对其进行详细研究。