0

我的目标是获取与给定联系人相关的发票,如果我从名为“contactinvoices”(相交表)的表中获取数据,那么我看到这个表是空的。我通过使用“contactid”(联系人)=“costumerid”(发票)直接从发票表中请求记录来解决了这个问题。正如我现在看到的,这种方法适用于联系人和帐户表以及发票和报价单。如何区分没有相交表的 M:N 关系与有相交表的 M:N 关系

4

1 回答 1

2

如果没有交集表,您就不能拥有多对多关系。让我们回顾一些术语:

男:1

让我们以客户和订单为例。一个客户可以有多个订单,但一个订单只能有一个客户(即使多个订单可以有同一个客户)。这是通过具有 CustomerId 字段的订单来实现的。

男:女

让我们以作者和书籍为例。一个作者可以写多本书,而一本书可以由一个或多个作者写。具有 AuthorId 的 Book 不会实现这种关系,这就是需要 intersect 表的地方。它包含一个 AuthorId 和一个 BookId。如果两个 Author 在同一本书上工作,则 intersect 表将有两条具有相同 BookId 和不同 AuthorId 的记录,从而允许 M:N 关系。

M:1 & M:N?

如果关系的用途略有不同,您也可以同时拥有两者。例如,假设您有联系人和订单,客户是联系人,订单也有一个或多个销售代表处理订单。现在 Contact 表和 Order 表关联了两次。Order 表可能有一个 CustomerId 属性,该属性实际上是 Contact 表的外键。但是也可能有一个 Orders 和 Sales Reps 的交叉表,其中 Sales Reps 又是 Contact 表的外键。


因此,在回答您的问题时,您如何区分?如果它有一个相交表,它是一个 M:N 关系,如果它没有,它不是。

于 2013-06-24T12:11:58.827 回答