五、数据库完整性——(1)三类完整性

本文深入探讨了关系数据库中的三种完整性约束:实体完整性、参照完整性和用户定义的完整性。阐述了如何通过主码和外码定义及违约处理来维护数据的一致性和准确性。

二、关系数据库——(2)关系完整性

实体完整性

表中定义主码
违约处理:
(1)检查记录中主码值是否唯一:全表扫描
(2)主码上自动建立一个索引——避免全表扫描
(3)B+树索引

参照完整性

定义外码并指出参考的主码;定义外码列是否允许空值
违约处理:

用户定义的完整性

1. 属性(列)上的约束条件:

在这里插入图片描述在这里插入图片描述

2. 元组(行)上的约束条件:

在这里插入图片描述
在这里插入图片描述

### 数据库三类完整性约束的概念和作用 #### 1. **实体完整性 (Entity Integrity)** 实体完整性确保表中的每一行都是唯一的,通常通过主键来实现。主键字段不允许取空值(NULL),并且其值必须唯一,以此区分同一表中的不同记录[^1]。这种约束的作用在于维护数据的一致性,避免重复记录或无法识别的条目。 ```sql CREATE TABLE Employees ( EmployeeID INT PRIMARY KEY, -- 主键字段不可为空且唯一 Name VARCHAR(50), Position VARCHAR(30) ); ``` --- #### 2. **域完整性 (Domain Integrity)** 域完整性规定列中允许的值范围,从而确保输入到特定列的数据符合预期的标准[^3]。例如,可以通过设置数据类型、大小、格式以及默认值等方式限制可接受的值。常见的例子包括性别只能为“男”或“女”,年龄不能小于零或者大于合理数值等。这些规则可以减少错误数据的录入并提高数据质量。 ```sql CREATE TABLE Students ( StudentID INT, Gender CHAR(1) CHECK (Gender IN ('M', 'F')), -- 性别仅限 M 或 F Age TINYINT CHECK (Age BETWEEN 0 AND 150), -- 年龄限定在合理范围内 EnrollmentDate DATE DEFAULT GETDATE() -- 默认入学日期为当前时间 ); ``` --- #### 3. **参照完整性 (Referential Integrity)** 参照完整性用于维持表之间关系的一致性,主要依赖外键实现。当一个表中的外键指向另一个表的主键时,参照完整性会验证关联的有效性,防止出现孤立或不一致的关系[^1]。如果父表中的某条记录被删除,则子表中外键对应的记录也需要相应处理(如级联删除)。这样能够保护跨表间逻辑一致性。 ```sql CREATE TABLE Departments ( DepartmentID INT PRIMARY KEY, DepartmentName NVARCHAR(50) ); CREATE TABLE Employees ( EmployeeID INT PRIMARY KEY, Name NVARCHAR(50), DepartmentID INT FOREIGN KEY REFERENCES Departments(DepartmentID) ON DELETE CASCADE -- 外键约束 ); ``` --- ### 综合说明 以上三种完整性约束共同构成了数据库管理系统(DBMS)的核心机制之一——数据完整性控制体系。它们分别从单个元组内部、单一属性层面以及多个表格之间的联系角度出发,保障整个系统的稳定运行与高效查询性能[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值