【问题标题】:SQL - Modeling Roles For EmployeesSQL - 为员工建模角色
【发布时间】:2018-12-14 21:56:55
【问题描述】:

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

您有一个角色表。只有几个:[经理,股票,收银员,默认]。 员工和商店之间存在多对多的关系。 一家商店可以有很多员工,一个员工可以在很多商店工作。此外,一名员工在他/她关联的每个商店中只能拥有一个角色。

如果下面这些表格的建模方法正确?有没有更好的办法?

CREATE TABLE EmployeeStore
(
    Id 
    StoreId
    EmployeeId
    EmployeeRoleId 
)

CREATE TABLE Store
(
    Id 
    Name
)

CREATE TABLE Employee
(
    Id 
    ...
)

CREATE TABLE Role
(
    Id 
    ...
)

【问题讨论】:

  • 如果一个员工在每个商店只能拥有一个角色,那么在 EmployeeStore 中的 (StoreId, EmployeeId) 上可能存在唯一约束或主键。
  • 如果您想在查询中使用 USING 子句,那么也许将这些 id 字段重命名为与这些外键相同的名称。

标签: mysql sql sql-server database modeling


【解决方案1】:

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

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

这两个表之间的关系是多对多的,因为一个学生可以注册多个学科,一个学科可以有多个学生,针对这种情况,我们制作了一个新的第三个表StudentsSubjectstudent_idsubjectCode作为现有表的外键,这两个属性的组合作为这个表的主键,你可以研究一下。

【讨论】:

    猜你喜欢
    • 2011-08-21
    • 1970-01-01
    • 2015-12-08
    • 2018-05-08
    • 2018-03-11
    • 2020-02-08
    • 1970-01-01
    • 2021-10-06
    • 2017-05-16
    相关资源
    最近更新 更多