我使用的是MySQL数据库。

在哪些情况下我应该创建唯一键或主键?


当前回答

我知道这个问题已经有好几年了,但我想提供一个答案,解释为什么而不是如何

主键的作用:在数据库中唯一地标识一行=>一行表示表建模的实体类型的单个实例。主键强制实体的完整性,即实体完整性。主键将是一个聚集索引,即它定义了数据在表中物理存储的顺序。

Purpose of Unique Key: Ok, with the Primary Key we have a way to uniquely identify a row. But I have a business need such that, another column/a set of columns should have unique values. Well, technically, given that this column(s) is unique, it can be a candidate to enforce entity integrity. But for all we know, this column can contain data originating from an external organization that I may have a doubt about being unique. I may not trust it to provide entity integrity. I just make it a unique key to fulfill my business requirement.

好了!

其他回答

唯一键(英国):它是一列或一组列,可以识别一行中的唯一性。

主键(PK):它也是一列或一组列,可以识别一行中的唯一性。

因此,主键只是唯一键的另一个名称,但SQL Server中的默认实现对主键和唯一键是不同的。

默认情况下:

PK创建聚集索引,UK创建非聚集索引。 PK不为空,但是UK允许为空(注意:默认情况下) 一张桌子上只能有一个且只有一个PK,但可以有多个UK 您可以根据需要重写默认实现。

这取决于你在决定是创造UK还是PK时的目标是什么 “如果有三个人的团队,那么他们都是同行,但其中会有一个人是一对同行:PK和UK有类似的关系。”我建议阅读这篇文章:作者给出的例子可能看起来不太合适,但试着得到一个整体的想法。

http://tsqltips.blogspot.com/2012/06/difference-between-unique-key-and.html

简单的主键是唯一的,不能为空,唯一的可以为空,也可以不是唯一的。

我知道这个问题已经有好几年了,但我想提供一个答案,解释为什么而不是如何

主键的作用:在数据库中唯一地标识一行=>一行表示表建模的实体类型的单个实例。主键强制实体的完整性,即实体完整性。主键将是一个聚集索引,即它定义了数据在表中物理存储的顺序。

Purpose of Unique Key: Ok, with the Primary Key we have a way to uniquely identify a row. But I have a business need such that, another column/a set of columns should have unique values. Well, technically, given that this column(s) is unique, it can be a candidate to enforce entity integrity. But for all we know, this column can contain data originating from an external organization that I may have a doubt about being unique. I may not trust it to provide entity integrity. I just make it a unique key to fulfill my business requirement.

好了!

Unique key :- It should be used when you have to give unique value.In the case of unique key it means null values are also allowed.Unique keys are those keys which are unique and non similar in that column like for example your pet name.it can be nothing like null and if you are asking in context of database then it must be noted that every null is different from another null in the database.EXCEPT-SQL Server where null=null is true


主键:— 它应该在必须唯一标识一行时使用。Primary是一个键,它对数据库约束中的每一行都是唯一的,它不允许它为空。你可能看到数据库中有一个列是自动递增的它是表的主键。另外,它可以在另一个表中用作外键。例如订单表中的orderId,账单表中的billId。 现在回到什么情况下使用它:-

1)主键在哪个列可以 在表中不是空,并且在另一个表中用作外键 用于创建关系的表

2)唯一键在表中所在 不影响在表中或在整个数据库中 对于特定列为Null,比如餐馆里的小吃 可能你在餐馆里不带零食

主键和唯一键的区别

主键和唯一键用于唯一地定义表中的一行。 主键创建列的聚集索引,而唯一键创建列的非聚集索引。

主键不允许空值,但唯一键允许一个空值。