我正在尝试绘制描述以下内容的ER图:
- “部门”雇用“员工”
- 有些“员工”是“特殊”并且具有更多属性
- 一些“员工”(“特殊”和非特殊)是“经理”
- “经理”管理“部门”
所以,为了传达这一点,我有:
Department ------(employs)------- Employee-----<--------Special
| |
|-----------(manages)----------
根据我的理解,我不能在2个实体之间建立2个关系。那我怎么处理这种情况呢?
答案 0 :(得分:11)
没有理由你不能在同一个实体之间建立多重关系,你在这方面的理解是错误的。
当然,你必须确定这些关系会捕获不同的信息,并且你不会将单一关系的两个方面误认为是两种不同的关系。您的示例似乎是在两个实体之间建立两种关系的良好候选者。
答案 1 :(得分:3)
嗨伙伴看这个图,希望有所帮助
答案 2 :(得分:3)
更好的方法是在Employee表IsManager中添加一个位字段,所以如果他是一名经理,这意味着他是他所在部门的经理。
答案 3 :(得分:1)
您的雇佣和管理关系将是两个连接表。例如考虑下面的表格和字段:
Department
DepartmentID
DepartmentName
Employee
EmployeeID
EmployeeName
SpecialEmployee
EmployeeID
Attr1
Attr2
现在您可以继续并将Employee和Department链接起来:
DepartmentEmploys
DepartmentEmploysID
DepartmentID
EmployeeID
ManagesDepartment
ManagesDepartmentID
EmployeeID
DepartmentID
现在您的关系不会重叠或干扰。您的图表中似乎绘制的内容是正确的。两个实体之间可以有多个关系。
答案 4 :(得分:0)
应该只有一个类别的员工如果您有多个类别的员工,则可以将Employee类设为子类别。 父母:雇员 第一个孩子:特别雇员 第二个孩子:普通员工