在ER图中,是否可以将两个弱实体相互关联?如果可能,如何唯一地识别其中的记录?
答案 0 :(得分:3)
这当然是可能的。考虑以下ER图,其中发票由线组成,并且收据被分解为分配给发票行的相应行。可以将多个收据行分配给同一InvoiceLine。它可能有点做作,但它可以作为一个例子。
InvoiceLine
实体集由(InvoiceNumber, LineNumber)
标识。同样,ReceiptLine
实体集由(ReceiptNumber, LineNumber)
标识。
任何实体集之间关系的决定因素是多角色中实体集的决定因素的组合。实体集是弱还是常规,或者您是否有两个或更多实体集涉及关系并不重要。在1:1(或1:1:1等)关系的情况下,所涉及的任何实体集都可以用作决定因素。
在我们的示例中,ReceiptLine
是多角色中唯一设置的实体(由Paid
关系菱形旁边的N表示)。这意味着关系由ReceiptLine
的行列式确定,即(ReceiptNumber, LineNumber)
。
如果我们将ER图转换为表格模型,我们会得到以下结果:
我直接翻译它以帮助您查看图表之间的对应关系,但在实践中,我们可以将Paid
关系关系反规范化为ReceiptLine
实体关系,以获得更简单的物理模型。这只能用于与单个确定实体集的关系,因此首先了解一般方法非常重要。