MySQL是否有可能在不同表的两列上创建唯一索引?我有两个表 - 地址(addressID - pk,customerID,代码)和Customer(customerID - pk,companyID)。 PK-主键。该要求是一对唯一的code-companyID - 每个公司唯一的地址代码。有什么建议吗?我可以在DB级别中实现此要求,还是仅在beck-end端实现此要求?
答案 0 :(得分:0)
不,索引不能跨越多个表。但是,您似乎没有掌握在sql中实现关系的方式,因此提出了问题。
如果客户只能拥有一个地址,那么address id
应该是customer
表中的一个字段,外键指向address
表。在这种情况下,您不需要多列唯一索引。
如果客户可以拥有多个地址(显然,多个客户可能拥有相同的地址),那么您就拥有多对多的关系。这可以通过创建第3个表格(让我们称之为CustomersAddresses
)来解决,该表格将customer id
和address id
作为字段(作为最低要求)。您可以在此CustomersAddresses
表中的这两个字段上定义多列唯一索引,以确保地址 - 客户对是唯一的。
customer id
表中的address id
和CustomersAddresses
字段将是指向相应常设表的外键。