一个关系可以 link 三个或更多实体吗?
Can a relationship link three or more entities?
我有一个具有六个属性的实体 employees
:employee_number
(唯一键)、first_name
、last_name
、address
、phone_number
,以及 hire_date
。但是,有两种类型的员工:"Service Technicians" 和 "Sales Associates"。
每种不同类型的员工都有 "job specific" 属性。服务技术人员具有 model_expertise
和 pager_number
属性,销售人员具有 commission
和 salary
属性。
我不确定如何在 ER 图中表示它。我有一个列出了属性的 employees
实体,是否可以从 employees
到 technicians
和 associates
建立关系?像 is_type
这样的关系:可以 link 一个实体到两个这样的实体的关系吗?
如果不是,怎么办?
你们有一段经典的 subtype/supertype 关系。原始的 ER 符号没有针对这种情况的特定符号,尽管可以将子类型表示为没有弱键的弱实体。 ER 模型的许多扩展被开发来解决这个问题。这是一个例子:
圆圈中的 d
表示不相交的子类型,这意味着 Employee
可以是 Technician
或 Associate
,但不能两者兼而有之。另一个选项是 o
用于重叠。
但是,不要将您的 supertype/subtype 关系与三向关系混淆。相反,最好将其视为 2 个二元关系,不相交是一种相互制约。真正的 3 向(和更高)关系(例如供应商、零件和区域之间的 many-to-many-to-many 关联)在 ER 图中当然是可能的。这是区分 ER 模型和旧网络数据模型的特征之一。
我有一个具有六个属性的实体 employees
:employee_number
(唯一键)、first_name
、last_name
、address
、phone_number
,以及 hire_date
。但是,有两种类型的员工:"Service Technicians" 和 "Sales Associates"。
每种不同类型的员工都有 "job specific" 属性。服务技术人员具有 model_expertise
和 pager_number
属性,销售人员具有 commission
和 salary
属性。
我不确定如何在 ER 图中表示它。我有一个列出了属性的 employees
实体,是否可以从 employees
到 technicians
和 associates
建立关系?像 is_type
这样的关系:可以 link 一个实体到两个这样的实体的关系吗?
如果不是,怎么办?
你们有一段经典的 subtype/supertype 关系。原始的 ER 符号没有针对这种情况的特定符号,尽管可以将子类型表示为没有弱键的弱实体。 ER 模型的许多扩展被开发来解决这个问题。这是一个例子:
圆圈中的 d
表示不相交的子类型,这意味着 Employee
可以是 Technician
或 Associate
,但不能两者兼而有之。另一个选项是 o
用于重叠。
但是,不要将您的 supertype/subtype 关系与三向关系混淆。相反,最好将其视为 2 个二元关系,不相交是一种相互制约。真正的 3 向(和更高)关系(例如供应商、零件和区域之间的 many-to-many-to-many 关联)在 ER 图中当然是可能的。这是区分 ER 模型和旧网络数据模型的特征之一。