我不太确定如何在ER图中阅读三元关系。假设这是给出的三元关系:
需要手指两个实体集,并以此来阅读它。
手指账户和用户: 一个账户和一个用户可以与M个项目相关联。
手指账户和项目: 一个账户和一个项目可以与M个用户相关联。
手指项目和用户: 一个项目和一个用户可以与1个账户相关联。
这些配对关系是否总是一对一的关系,或者可能有多少对?
我不太确定如何在ER图中阅读三元关系。假设这是给出的三元关系:
需要手指两个实体集,并以此来阅读它。
手指账户和用户: 一个账户和一个用户可以与M个项目相关联。
手指账户和项目: 一个账户和一个项目可以与M个用户相关联。
手指项目和用户: 一个项目和一个用户可以与1个账户相关联。
这些配对关系是否总是一对一的关系,或者可能有多少对?
回答有点迟了,但可能对未来的读者有所帮助。
假设三元关系有参与实体A、B和C(对于度数>3的情况,它会变得非常复杂)。
阅读这个关系的方法是始终将3个参与实体中的2个隔离出来,并查看它们如何相对第三个实体。并且需要对所有可能的配对进行此操作。
更具体地说:每次配对的2个实体都需要被视为“之一”,并且要回答的问题是“多少”第三个实体可以对应于此配对。
"一个A和一个B可以{拥有/与/属于}X?C的?"
。我们需要根据我们的业务模型来回答X?
应该是1
还是N
。这是要分配给连接三元关系与实体C
之间的边上的三元关系的基数。
必须为所有可能的组合(不是排列,因为配对顺序无关紧要)重新制定此短语。因此,为了回答问题有多少对?
,简单的数学规定在2个事物的组中组合3个事物的可能方式是:
3!/(2!*(3-2)!)= 3
。
因此,使用我们的业务模型回答所有可能的问题短语为:
A和B中的一个和C中的一个可以{拥有/与/属于}C的? X?
A和C中的一个和B中的一个可以{拥有/与/属于}B的? Y?
B和C中的一个和A中的一个可以{拥有/与/属于}A的? Z?
我借用了我在网上找到的这张图片。
这张图反映了我们业务模式的现实情况:
1名医生为1位特定患者记录M次治疗
1名医生为N位患者记录1种特定治疗
1位患者接受1名医生提供的1种特定治疗
因此,三元关系记录(log)
是参与实体治疗-患者-医生
(按照该顺序)之间的M-N-1关系。
虽然回答有些晚,但可能对未来的读者有所帮助。是的,@user2276094,你说得对。
正如你所提到的,三元关系中的多重性是通过将一个实体(目标实体)与另外两个实体隔离开来设计的,并将目标实体(例如员工)与另外两个实体(例如客户和分支机构)的一个固定对相关联。
因此,您可以将这些关系中的多重性表述为(例如员工在分支机构注册客户):
对于一个固定的员工实例和一个分支机构实例,可能会有客户,也可能没有客户(因为一些员工可能不会注册客户,他们可能参与其他职责)。
对于一个固定的分支机构实例和一个客户实例,必须有且仅有一个员工(因为一个客户只能由一个员工注册一次)。
对于一个固定的员工实例和一个客户实例,必须有且仅有一个(假设客户只能在一个分支机构注册)。
很可能这是一个层次结构,意味着有许多账户和许多用户。它也意味着账户小于或等于用户。这意味着更多的用户对应一个账户。我很可能会使用三叉数据结构和字典树。