我可以在一个表中的主键和第二个表中的主键之间建立一对多的关系吗?

时间:2014-08-28 10:35:10

标签: ms-access ms-access-2007 relational-database relationship

每当我尝试在两个表之间创建一对多的关系时,我意识到只有在表1中的主键与表2中的主键之间存在关系时,它才有效。如果它有主键,则它会自动更改为一对一关系

2 个答案:

答案 0 :(得分:5)

  

我可以在一个表中的主键与第二个表中的主键之间建立一对多的关系吗?

不,因为每个表中的主键值必须是唯一的,所以在任一个表中都不可能有多个相同主键的值。我们可以(并且通常会)在一个表("父表")和外部主键之间建立一对多关系>键入另一个(" child")表,其中子表中的外键保存父表中的主键值。

示例:

[tblCustomers]

CustomerID  CompanyName
----------  -----------
         1  Company1
         2  Company2

[tblInvoices]

InvoiceID  CustomerID  InvoiceDate
---------  ----------  -----------
        1           1  2014-07-21
        2           1  2014-08-25
        3           2  2014-08-28

我们建立tblCustomers.CustomerID([tblCustomers]" parent"表中的主键)和tblInvoices.CustomerID([{1}}中的外键之间的一对多关系。 tblInvoices]" child" table)。 tblInvoices.CustomerID 唯一,因为同一客户可能有很多发票。

请注意,如果您要尝试在tblCustomers.CustomerID([tblCustomers]" parent"表格中的主键)和tblInvoices.InvoiceID(主键码)之间建立关系[tblInvoices]" child" table)然后该关系必须是一对一的关系。这也没有意义。

答案 1 :(得分:0)

这是预期的行为。主键必须是唯一的,因此如果将两个主键连接在一起,则关系必须是一对一的。