2011-09-23 212 views
1

这里是场景。ERD - 实体关系图 - 复杂而棘手的关系

两个完全不同的实体以相同的方式与第三个实体独立相关。我们如何在ERD中表示它?或(增强ER)

例:

  • 学生 “借” 书(从库)
  • 部门 “借” 书(从同一个库)。

如果我两次定义'BORROWS'关系,它在图中的外观方面会很笨拙和笨拙,并且增加了实现的复杂性。

与此同时,我不能声明三元关系,因为STUDENT和DEPARTMENT在关系实例中没有相互关系。

但是,我找不到更好的方法。

我该如何解决?

回答

1

如果要相信维基百科,Enhanced ER允许继承。为什么你没有BORROWER实体(有适当的关系),并且有STUDENT和DEPARTMENT子类?

+0

感谢您的答复aix。 这绝对是一个解决方案。 我只是想知道实现过程中的复杂性,即创建表。 如果在编程环境中出现这种情况,那么它将是最合适的解决方案。我仍然不确定在数据库环境中。 – Firefox

+0

@Firefox:除了“图表上的尴尬和笨拙的外观”之外,您试图解决的真正问题是什么? – NPE

+0

我只是在实施过程中寻找一种不太复杂的解决方案,但却满足所有要求。 当我提到,尴尬和笨拙,这是两个重复关系的情况下,这也导致数据库中的多个表。 – Firefox

0

我一直有类似的问题 - 公司或个人可以订购产品。

你有一个order,它可以属于personcompany - 那么你把关系链接到什么?我在想订单会有一个companyId和一个personId外键,但是如何让它们独占?返回的数据不一定相同 - 例如,company没有first name/last name字段。

我想这可能由具有name返回来完成,并且在person的情况下建立串出的firstname/lastname,并在company的情况下使用companyname领域。

+1

我是通过泛化来完成的。例如:在你的情况下,我会创建Customer表。人与公司是其子类。客户包含customerId。 OrderInfo指向customerId,从中您可以推导出您的订购者是否是公司/个人。 – Firefox