我想问一下在哪些情况下在SQL中使用UNIQUE关键字是正确的。我知道如果我声明一个列作为主键本身具有唯一性,但其他属性如国家会发生什么?在那里使用一个独特的约束是否合适?
只要您希望该列的每个行条目彼此不同,就会使用sql中的unique
关键字。主键列自动是唯一的,但在某些情况下,您可能希望更多列是唯一的。
例如,如果你有一个product_id
作为主键,它将确保没有其他行将产品与product_id
作为该行。除此之外,你想要没有两行应该有相同的product_imei
,那么你可以使product_imei
独特。
您可以制作像Primary Key(column1,column2)
这样的复合主键,但这意味着您从product_id
和product_imei
获得的组合将是唯一的。
例如,如果(DLK-22,356938035643809)
是主键,则(DLK-22, 11111111111111)
和(product_id,product_imei)
都可以存在于表中。
因此,您可以根据需要在尽可能多的列上使用unique
约束,其需求取决于您所面临的问题的情况。你可以使用unique
约束与country
,如果这有助于你,这样做是没有问题的
UNIQUE约束确保列中的所有值都不同。 UNIQUE和PRIMARY KEY约束都为一列或一组列的唯一性提供了保证。 PRIMARY KEY约束自动具有UNIQUE约束。
与任何其他约束一样,UNIQUE
约束强制执行某种程度的数据质量。如果将此约束添加到列,则该列上的所有值都将不同。
例如,在EMPLOYEE_PK
已经是唯一的表上(因为它是PK)你可能想要强制执行CARD_NUMBER
列也是唯一的;这是员工卡上显示的数字。在您的模型中,卡号可能与PK不同,您可能还需要确保它的唯一性。
UNIQUE约束的另一个好处是其他表可以将外键链接到它。由于UNIQUE列有效地充当“表键”,因此任何其他表都可以建立指向它的外键。我见过很多人[错误地]认为外键只能指向主键。