Database ERD-实体关系图-复杂和棘手的关系
下面是一个场景 两个完全不同的实体以相同的方式与第三个实体独立相关。我们如何在ERD中表示它?或(增强ER) 例:Database ERD-实体关系图-复杂和棘手的关系,database,entity-relationship,erd,Database,Entity Relationship,Erd,下面是一个场景 两个完全不同的实体以相同的方式与第三个实体独立相关。我们如何在ERD中表示它?或(增强ER) 例: 学生“借”书(从图书馆) 系“借”书(从同一图书馆) 如果我两次定义“借用”关系,它在图中的外观将是笨拙的,也会增加实现的复杂性 同时,我不能声明三元关系,因为学生和系在关系实例中没有相互关联 然而,我找不到更好的办法 我该如何解决它呢?如果维基百科是可信的,那么它允许继承。为什么你没有一个借款人实体(具有适当的关系),并有学生和系的子类呢?如果维基百科是可信的,那么它允许继承
- 学生“借”书(从图书馆)
- 系“借”书(从同一图书馆)李>
我该如何解决它呢?如果维基百科是可信的,那么它允许继承。为什么你没有一个借款人实体(具有适当的关系),并有学生和系的子类呢?如果维基百科是可信的,那么它允许继承。为什么你没有一个借款人实体(具有适当的关系),并让学生和系的子类化呢?我也遇到过类似的问题——公司或个人可以订购产品 您有一个
订单
,可以属于个人
,也可以属于公司
——那么您将该关系与什么联系起来?我想订单将有一个公司ID
,和一个个人ID
外键,但如何使它们具有排他性?返回的数据不一定相同-例如,公司
没有名
/姓
字段
我想可以通过返回一个
名称
来完成,如果是人
则从名字
/姓氏
构建字符串,如果是公司
,请使用公司名称
字段。我也遇到过类似的问题,公司或个人可以订购产品
您有一个订单
,可以属于个人
,也可以属于公司
——那么您将该关系与什么联系起来?我想订单将有一个公司ID
,和一个个人ID
外键,但如何使它们具有排他性?返回的数据不一定相同-例如,公司
没有名
/姓
字段
我想可以通过返回一个
名称
来实现,如果是人
则从名字
/姓氏
中构建字符串,如果是公司
则使用公司名
字段。感谢您的回复。这绝对是一个解决办法。我只是想知道实现过程中的复杂性,即表创建。如果在编程环境中是这样,那么它将是最合适的解决方案。在DB上下文中,我仍然不确定。@Firefox:除了“图表上的外观笨拙”之外,您要解决的真正问题是什么?我只是在寻找一个在实现过程中不太复杂但满足所有要求的解决方案。当我提到,笨拙和笨拙时,是两个重复的关系案例,这也导致数据库中有多个表。@Firefox:关系不会产生表,实体会产生表。我不认为拥有两个“借来的”关系有什么错。如果这确实会导致问题(例如外键的命名),请给它们起一个稍微不同的名字。可能是我遗漏了什么。但是,我相信这种关系会导致表格。例如:借用关系生成一些表,如借阅记录,其中存储学生/系和书本的外键以及一些属性,如开始日期等。感谢您的回复。这绝对是一个解决办法。我只是想知道实现过程中的复杂性,即表创建。如果在编程环境中是这样,那么它将是最合适的解决方案。在DB上下文中,我仍然不确定。@Firefox:除了“图表上的外观笨拙”之外,您要解决的真正问题是什么?我只是在寻找一个在实现过程中不太复杂但满足所有要求的解决方案。当我提到,笨拙和笨拙时,是两个重复的关系案例,这也导致数据库中有多个表。@Firefox:关系不会产生表,实体会产生表。我不认为拥有两个“借来的”关系有什么错。如果这确实会导致问题(例如外键的命名),请给它们起一个稍微不同的名字。可能是我遗漏了什么。但是,我相信这种关系会导致表格。例如:借阅关系生成一些表,如借阅记录,其中存储学生/系和书本的外键,以及一些属性,如开始日期等。我是通过泛化实现的。例如:在你的情况下,我会创建客户表。个人和公司是其子类。Customer包含customerId。OrderInfo指向customerId,您可以从中推断您的订购者是否是公司/个人。我是通过泛化实现的。例如:在你的情况下,我会创建客户表。个人和公司是其子类。Customer包含customerId。OrderInfo指向customerId,从中可以推断您的订购者是否是公司/个人。