📅  最后修改于: 2023-12-03 15:21:38.406000             🧑  作者: Mango
主键和超级键都是用于标识一个关系中的唯一记录的属性。但是,它们在某些方面是不同的。
主键是一种用于标识表中唯一记录的一组属性或列。主键列的值必须是唯一的,并且不能为空。主键的选择通常基于以下因素:
以下是一个主键的示例:
CREATE TABLE students (
id INTEGER PRIMARY KEY,
name VARCHAR(50),
age INTEGER
);
在这个例子中,id是主键列。它可以作为外键出现在其他表中,并且每个学生都应该有唯一的ID。
超级键是一个或多个属性或列的集合,这些属性或列可以唯一标识关系中的记录,但并不是必须的。超级键可以包含主键,也可以包含其他非唯一的属性。
以下是一个超级键的示例:
CREATE TABLE orders (
order_id INTEGER PRIMARY KEY,
customer_id INTEGER,
order_date DATE,
total_amount DECIMAL(10,2),
UNIQUE(customer_id, order_date)
);
在这个例子中,超级键是由customer_id和order_date组成的。虽然customer_id不是唯一的,但结合order_date使用后可以唯一标识一条订单记录。