实体完整性
定义
实体完整性是数据库完整性的重要组成部分,用于保证数据库表中每一行(即每个实体)是唯一可辨识的,不能出现重复或不明确的记录。实体完整性通过主键约束(Primary Key Constraint)实现。
核心要求
1. 唯一性(Uniqueness): 表中的每一行记录必须有唯一标识的主键值,不能重复。
2. 非空性(Non-Null): 主键值不能为空。
主键(Primary Key)
主键是表中的一列或多列,用于唯一标识表中的每一行。主键是实体完整性的核心。
主键的特点:
• 主键列中的值必须唯一。
• 主键列中的值不能为 NULL。
• 每个表只能有一个主键。
实体完整性的重要性
1. 确保数据库中记录的唯一性和准确性。
2. 防止重复记录或无效记录的插入。
3. 提供关联性:主键通常被其他表引用,形成外键关系。
实现实体完整性
实体完整性通常通过主键约束来实现。
SQL语法:
CREATE TABLE Students (
StudentID INT PRIMARY KEY, -- 定义主键
Name VARCHAR(50),
Age INT
);
• StudentID 列是主键,确保每个学生的编号是唯一且非空的。
实体完整性检查
1. 插入操作:
• 当插入数据时,系统会检查主键值是否重复或是否为空。
• 如果违反主键约束,系统会拒绝插入。
示例:
INSERT INTO Students VALUES (1, '张三', 20); -- 成功
INSERT INTO Students VALUES (1, '李四', 21); -- 失败:主键重复
INSERT INTO Students VALUES (NULL, '王五', 22); -- 失败:主键为 NULL
2. 更新操作:
• 修改主键值时,系统会检查新值是否满足唯一性和非空性要求。
主键的多列实现
在某些情况下,主键可能由多列组成。这种情况下,称为复合主键。
示例:班级学生表
CREATE TABLE ClassStudents (
ClassID INT,
StudentID INT,
PRIMARY KEY (ClassID, StudentID) -- 复合主键
);
• 每个班级的学生编号是唯一的,但不同班级中可能有相同的学生编号。
实体完整性的违约处理
1. 违约情形:
• 插入或更新数据时主键值重复。
• 插入或更新数据时主键值为 NULL。
2. 违约处理:
• 数据库管理系统(DBMS)会拒绝执行违规操作,并抛出错误提示。
实例分析
学生管理系统:
• 学生表中,每个学生的学号(StudentID)是主键,满足实体完整性。
• 示例数据:
| StudentID | Name | Age |
|—————|———–|———|
| 1 | 张三 | 20 |
| 2 | 李四 | 21 |
• 违约操作:
INSERT INTO Students VALUES (1, '王五', 23); -- 失败:主键重复
总结
实体完整性是数据库完整性的基础,它通过主键约束确保表中每一行数据的唯一性和有效性。理解实体完整性及其实现方式是学习数据库的关键。