我的目标是获取与给定联系人相关的发票,如果我从名为“contactinvoices”(交叉表)的表中获取数据,那么我看到该表为空。我通过直接从发票表中请求“contactid”(contacts)=“costumerid”(发票)来解决该问题。我现在看到这种方法适用于联系人和帐户表以及发票和报价。如何区分没有交叉表的M:N关系与M:N关系与交叉表
答案 0 :(得分:2)
没有交叉表,你不能拥有多对多的关系。让我们回顾一些术语:
让我们以客户和订单为例。客户可以有多个订单,但订单只能有一个客户(即使多个订单可以拥有相同的客户)。这是通过具有CustomerId字段的订单来实现的。
让我们以作者和书籍为例。作者可以写多本书,一本书可以由一位或多位作者撰写。具有AuthorId的Book将无法实现此关系,这是需要交叉表的位置。它包含AuthorId和BookId。如果两个作者在同一本书上工作,则交叉表将具有两个具有相同BookId和不同AuthorId的记录,从而允许M:N关系。
如果关系的使用略有不同,您也可以同时拥有两者。例如,假设您有联系人和订单,而客户是联系人,订单也有一个或多个处理订单的销售代表。现在Contact表和Order表相关两次。 Order表可以具有CustomerId属性,该属性实际上是Contact Table的外键。但是,也可能存在Orders和Sales Reps的交叉表,其中Sales Reps又是Contact表的外键。
因此,在回答您的问题时,您如何区分?如果它有一个交叉表,它是一个M:N关系,如果没有,则不是。