来自不同表的列的唯一键

时间:2018-02-23 16:04:10

标签: mysql sql

MySQL是否有可能在不同表的两列上创建唯一索引?我有两个表 - 地址(addressID - pk,customerID,代码)和Customer(customerID - pk,companyID)。 PK-主键。该要求是一对唯一的code-companyID - 每个公司唯一的地址代码。有什么建议吗?我可以在DB级别中实现此要求,还是仅在beck-end端实现此要求?

1 个答案:

答案 0 :(得分:0)

不,索引不能跨越多个表。但是,您似乎没有掌握在sql中实现关系的方式,因此提出了问题。

如果客户只能拥有一个地址,那么address id应该是customer表中的一个字段,外键指向address表。在这种情况下,您不需要多列唯一索引。

如果客户可以拥有多个地址(显然,多个客户可能拥有相同的地址),那么您就拥有多对多的关系。这可以通过创建第3个表格(让我们称之为CustomersAddresses)来解决,该表格将customer idaddress id作为字段(作为最低要求)。您可以在此CustomersAddresses表中的这两个字段上定义多列唯一索引,以确保地址 - 客户对是唯一的。

customer id表中的address idCustomersAddresses字段将是指向相应常设表的外键。