📅  最后修改于: 2023-12-03 15:23:01.561000             🧑  作者: Mango
在数据库设计中,所谓唯一键是指表中某个属性或一组属性唯一标识该表中的一条记录,用于保证数据的完整性和正确性。常见的唯一键有主键和唯一索引。除此之外,还有一些其他的术语可以用来描述唯一键。
候选键是指在一组属性中可以唯一标识一条记录的属性或属性组合,但还没有被选定为主键的键。候选键可以有多个,但只能有一个主键。
候选键可以通过以下 SQL 语句创建:
CREATE TABLE t1 (
id INT,
name VARCHAR(20),
email VARCHAR(30),
CONSTRAINT uk_t1_email UNIQUE (email),
CONSTRAINT pk_t1_id PRIMARY KEY (id)
);
在上面的例子中,email
属性被定义为唯一索引,这意味着它可以作为候选键。id
属性则被选定为主键。
超键是在一个属性集合中能够唯一标识一个元组的属性子集,其包含的属性可以超过候选键的最大集合。换句话说,超键是包含了候选键的键。
超键和候选键的区别在于,候选键是在一组属性中唯一标识一条记录,而超键可以由多个属性组合而成。
外键是指在一个表中存在的一个字段或多个字段,它们的值必须是另一个表中某个字段或字段组的值。外键是确保表之间数据关系完整性的一种方法。
外键可以通过以下 SQL 语句创建:
CREATE TABLE t1 (
id INT PRIMARY KEY,
name VARCHAR(20),
email VARCHAR(30)
);
CREATE TABLE t2 (
id INT PRIMARY KEY,
t1_id INT,
CONSTRAINT fk_t2_t1_id
FOREIGN KEY (t1_id) REFERENCES t1(id)
);
在上面的例子中,t2
表中的 t1_id
列被定义为外键,该列的值必须与 t1
表中的 id
列的值匹配。
主属性是在一个组合属性中最重要的属性。通常,主属性是唯一标识一个元组的属性。
例如,在用户表中,主属性可以是用户名或用户 ID,因为它们可以唯一标识每个用户。
复合主键是指由多个属性组成的主键,其中每个属性都对应表中的一列。复合主键在涉及多个属性时非常有用。
复合主键可以通过以下 SQL 语句创建:
CREATE TABLE t1 (
id INT,
name VARCHAR(20),
email VARCHAR(30),
CONSTRAINT pk_t1 PRIMARY KEY (id, email)
);
在上面的例子中,id
和 email
组合成了一个复合主键。
多列唯一键是由多个列组成的唯一键。它与复合主键非常相似,但不同之处在于它不是主键,只是一个唯一键。
多列唯一键可以通过以下 SQL 语句创建:
CREATE TABLE t1 (
id INT,
name VARCHAR(20),
email VARCHAR(30),
CONSTRAINT uk_t1 UNIQUE (id, email)
);
在上面的例子中,id
和 email
组合成了一个多列唯一键。