我使用的是MySQL数据库。
在哪些情况下我应该创建唯一键或主键?
我使用的是MySQL数据库。
在哪些情况下我应该创建唯一键或主键?
当前回答
Primary Key | Unique Key |
---|---|
A primary key can't accept NULL values |
Unique key can accept NULL values, so problematic in the context of being unique |
A primary key cannot contain duplicate values | A unique key also cannot contain duplicate values |
We can have only one primary key in a table | We can have more than one unique key in a table |
We can make a primary key from one or more table fields | We can also make a unique key from one or more table fields |
By default, a primary key creates a clustered index | By default, a unique key creates a non-clustered unique index |
It is used to identify each record in the table | It prevents storing duplicate entries in a column |
其他回答
对于一个组织或企业来说,有许多物理实体(如人员、资源、机器等)和虚拟实体(它们的任务、事务、活动)。 通常,业务需要记录和处理这些业务实体的信息。 这些业务实体在整个业务域中由一个Key标识。
根据RDBMS的预期,密钥(又名候选密钥)是唯一标识一个实体的一个值或一组值。
对于一个DB-Table,有很多存在的键,并且可能符合主键的条件。 因此,所有键、主键、唯一键等统称为候选键。 但是,DBA从候选密钥中选择一个用于搜索记录的密钥称为主密钥。
主键和唯一键的区别
1. 行为:主键用于标识表中的一行(记录),而唯一键用于防止列中的重复值(空项除外)。
2. 索引:默认情况下,sql引擎在主键上创建聚集索引(如果不存在),在唯一键上创建非聚集索引。
3.可空性:主键不包括空值,而唯一键可以。
4. 存在:一个表最多只能有一个主键,但可以有多个唯一键。
5. 可修改性:您不能更改或删除主值,但唯一键值可以。
更多信息和示例:
http://dotnetauthorities.blogspot.in/2013/11/Microsoft-SQL-Server-Training-Online-Learning-Classes-Integrity-Constraints-PrimaryKey-Unique-Key_27.html
唯一键(英国):它是一列或一组列,可以识别一行中的唯一性。
主键(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
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,比如餐馆里的小吃 可能你在餐馆里不带零食
主键必须唯一。
唯一键不一定是主键-请参阅候选键。
也就是说,一个表上可能有多个列的组合可以唯一地标识一行——其中只有一个可以被选择为主键。其他键虽然是唯一的,但都是候选键。
如果你的数据库设计不需要外键,那么你可以使用唯一键(但记住唯一键允许单个空值)。
如果数据库需要外键那么你别无选择只能用主键。
要查看唯一键和主键之间的区别,请访问这里