【问题标题】:ER diagram to relational schema with two relationships between two entitesER 图到关系模式,两个实体之间有两种关系
【发布时间】:2018-10-27 08:34:56
【问题描述】:

我有一个这样的 ER 图 - ER Diagram

我必须将其转换为关系模式

到目前为止,我有这个 - 员工(Employee_id、ssn、薪水、电话)
孩子(child_id、姓名、年龄、Employee_id)

在 Departments 和 Employee 之间,我不确定是否应该创建一个额外的实体,或者是否应该将 employee_id 插入 Departments?我被卡住的原因是因为他们有两个关系<work in><manage>...

【问题讨论】:

    标签: database entity-relationship


    【解决方案1】:

    以下是您需要考虑的规则:

    1. 一个部门可以管理多少员工?
    2. 一个员工可以为多少个部门工作?

    如果 (1) 的答案大于 1,则在这个方向上存在 1 到多的关系。如果 (2) 的答案大于 1,那么在相反方向上也存在 1:M 关系。因此,实体之间存在多对多关系,您需要一个额外的实体(例如,Employment)来在数据库中维护这种关系。

    顺便说一句,如果您将employee_id 插入到部门中,您对 (1) 的回答是“不超过 1”,这可能是不正确的。如果您将dept_id 插入到员工中,您对 (2) 的回答是“不超过 1”,这更合理。 最后,ER 图中显示的关系数量不一定转化为应该创建的物理实例(表)的数量。

    希望对你有帮助

    【讨论】:

    • 嗨安东,首先感谢您的帮助。情况如下: 员工在部门工作;每个部门由一名员工管理。每个员工都在一个部门工作。所以这将是“多对一”和“一对一”的关系,我相信。我想创建一个额外的表的原因是因为这两个实体之间有 2 个关系。我不知道如何以正确的方式呈现它们。
    • 嘿@Peter。我明白了,是的,有两种关系......所以“每个部门由一名员工管理”在 Depts 中转换为 manager/employee_id,而“每个员工在一个部门工作”在Employees 中转换为 dept_id。您不需要单独的实体来维护这些关系
    • 谢谢安东。对于-”“每个部门都由员工管理”转换为部门中的经理/员工 ID”...如果员工是潜在模式中的经理,我该如何呈现?对于第二个“每个员工都在一个部门工作”转换为员工中的 dept_id。
    • > 如果员工是潜在架构中的经理,我该如何呈现?不确定我是否理解“模式视角”。在 ER 图中,这表示为(第二个)单独的关系(例如“管理部门”)。在物理数据库模式中,这一事实由 Dept 表中的 manager_id 字段表示,该字段(如果您想强制执行)在 Employee 中具有对 employee_id(主键)的外键引用。 IE。 manager_id 列将包含管理此部门的员工的 ID
    • 嗨安东,如果我把它转换成这个,这有意义吗? Employee (Employee_id, ssn, Salary, phone, Department_id) 部门 (Department_id, dno, dname, budget, Manager_id) Child (child_id, name, age, Employee_id) Manager_id 有一个外键引用 Employee_id(主键)在 Employee
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 2014-12-11
    相关资源
    最近更新 更多