gpt4 book ai didi

mysql - 唯一键和主键之间的区别

转载 作者:IT老高 更新时间:2023-10-29 00:13:43 25 4
gpt4 key购买 nike

我在一本书中遇到了以下 SQL:

CREATE TABLE 'categories'(
id SMALLINT NOT NULL AUTO INCREMENT,
category VARCHAR(30) NOT NULL,
PRIMARY KEY('id'),
UNIQUE KEY 'category'('category')
)ENGINE=MyISAM DEFAULT CHARSET = utf8;

我想知道为什么我需要在同一个表中使用 PRIMARY 和 UNIQUE KEY 的原因?我想,这个问题的基础是,PRIMARY 和 UNIQUE 键有什么区别?

最佳答案

关系模型表明一个键和另一个键之间没有本质区别。也就是说,当一个关系有多个候选键时,没有理论上的理由来声明 this 键比 that 键更重要。从本质上讲,这意味着没有理论上的理由将一个键标识为 主键,而将所有其他键标识为辅助键。 (不过可能有实际原因。)

许多关系有多个候选键。例如,美国各州的关系可能有这样的数据。

State      Abbr      Postal Code
--
Alabama Ala. AL
Alaska Alaska AK
Arizona Ariz. AZ
...
Wyoming Wyo. WY

很明显,这三列中的每一列中的值都是唯一的——存在三个候选键。

如果您要在 SQL 中构建一个表来存储这些值,您可以这样做。

CREATE TABLE states (
state varchar(15) primary key,
abbr varchar(10) not null unique,
postal_code char(2) not null unique
);

您会这样做,因为 SQL 没有任何其他方式可以说“我的表有三个单独的候选键”。

我没有任何特别的理由选择“状态”作为主键。我可以很容易地选择“abbr”或“postal_code”。这三列中的任何一列都可以用作外键引用的目标。

就那样的话,我也可以这样建表。

CREATE TABLE states (
state varchar(15) not null unique,
abbr varchar(10) not null unique,
postal_code char(2) not null unique
);

关于mysql - 唯一键和主键之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6379954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com