首页 > 解决方案 > 有没有办法防止涉及多列的 SQL 数据库中的重复条目?

问题描述

我有一个地址数据库表,每个地址都被设置为将其拆分为其组成部分,例如:

Address ID(PK, AI) 
Customer ID
Street Number
Street Name
City
etc. 

我想知道添加数据以避免这些值的重复组合的最佳方法是什么?

我的客户可能有多个地址,但我希望每个组合都是唯一的。

当整行等于另一行时,是否有某种方法可以引发错误?

谢谢

标签: mysql

解决方案


这是一个多对多的关系:

一种方法是拆分为 3 个表:

Customers:{
    Customer ID (PK)
}

Address:{
   Address ID(PK)
   Street Number
   Street Name
   City
}

CustomerAddress{
    CustomerID (FK)
    AddressID (FK)

    (AddressId, CustomerID) = PK
}

(AddressId, CustomerID) = PK将确保 (customer <-> address) 的组合是唯一的


推荐阅读