6 关系模型之2.3 主键与外键

在前一节中,我们讨论了表的结构与数据类型。接下来,我们将探讨关系模型中的两个重要概念:主键外键。这两个概念在确保数据一致性和完整性方面起着至关重要的作用,能够有效地管理表与表之间的关系。

1. 主键

1.1 概念

主键(Primary Key)是用来唯一标识表中每一行数据的一个或多个字段。每个表只能有一个主键,主键的值不能为空,且必须具有唯一性。

1.2 作用

  • 唯一性:确保表中每条记录都是唯一的。
  • 完整性:通过主键,可以确保不会出现重复的数据记录。

1.3 定义主键的示例

以下是创建一个简单学生表的示例,定义学号为主键:

1
2
3
4
5
6
CREATE TABLE 学生 (
学号 INT PRIMARY KEY,
姓名 VARCHAR(100),
年龄 INT,
性别 CHAR(1)
);

在这个示例中,学号字段被定义为主键,意味着每个学生的学号都必须是唯一且不能为空。

2. 外键

2.1 概念

外键(Foreign Key)是一种约束,用于实现表与表之间的关联。它是一个表中的字段,引用另外一个表的主键。外键的值可以为null,且其值不一定要求唯一。

2.2 作用

  • 维护数据的完整性:通过设置外键,可以确保引用的数据存在,防止出现”孤立”的数据。
  • 建立关系:外键用来在不同的表之间建立联系,方便进行复杂的数据查询。

2.3 定义外键的示例

假设我们有一个课程表,记录学生所选的课程,我们可以这样定义外键:

1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE 课程 (
课程ID INT PRIMARY KEY,
课程名称 VARCHAR(100)
);

CREATE TABLE 选课 (
学号 INT,
课程ID INT,
FOREIGN KEY (学号) REFERENCES 学生(学号),
FOREIGN KEY (课程ID) REFERENCES 课程(课程ID)
);

在这段代码中,选课表中的学号课程ID字段分别是引用学生表中的学号课程表中的课程ID的外键。这意味着只有存在的学号和课程ID才可以被插入到选课表中,从而确保数据之间的完整性。

3. 示例:插入数据并验证外键约束

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-- 插入学生数据
INSERT INTO 学生 (学号, 姓名, 年龄, 性别) VALUES (1, '张三', 20, 'M');
INSERT INTO 学生 (学号, 姓名, 年龄, 性别) VALUES (2, '李四', 22, 'F');

-- 插入课程数据
INSERT INTO 课程 (课程ID, 课程名称) VALUES (101, '数学');
INSERT INTO 课程 (课程ID, 课程名称) VALUES (102, '英语');

-- 插入选课数据
INSERT INTO 选课 (学号, 课程ID) VALUES (1, 101); -- 这将成功
INSERT INTO 选课 (学号, 课程ID) VALUES (2, 102); -- 这也将成功

-- 尝试插入一个不存在的学号,这将失败
INSERT INTO 选课 (学号, 课程ID) VALUES (3, 101); -- 报错:外键约束失败

在上述代码中,前两条插入操作都成功执行,因为它们插入的是已存在的学号课程ID。最后一条插入操作由于试图插入一个不存在的学号,从而触发外键约束失败,确保数据库的完整性和一致性。

4. 结论

通过使用主键外键,我们能够有效地管理和维护数据库中的数据。这两种约束不仅可以确保数据的完整性,还能够增强数据之间的关联性,为复杂查询提供支持。下一节中,我们将继续深入学习SQL语言的基础知识,这将使我们能够更有效地与关系数据库进行交互。

6 关系模型之2.3 主键与外键

https://zglg.work/related-database-zero/6/

作者

AI免费学习网(郭震)

发布于

2024-08-11

更新于

2024-08-12

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论