数据库完整性:违约处理与完整性约束
需积分: 31 25 浏览量
更新于2024-08-15
收藏 448KB PPT 举报
"数据库完整性是确保数据库中数据正确性和相容性的关键机制,分为实体完整性、参照完整性和用户定义的完整性。违约处理是指当数据违反完整性约束时,数据库管理系统所采取的行动。"
数据库完整性是数据库系统的重要组成部分,它旨在防止数据库中存储不正确或不合语义的数据。数据的完整性不同于数据安全性,后者关注的是防御非法用户和操作对数据库的恶意破坏和非法访问。为了维护数据库完整性,DBMS需要具备定义完整性约束、执行完整性检查以及处理违约情况的能力。
实体完整性是确保每个表的主键属性不为空且唯一的一种机制。在关系模型中,主键通过`CREATE TABLE`语句中的`PRIMARY KEY`定义。主键可以由单个属性或多个属性组成,对于单属性主键,可以在列级或表级定义约束,而对于多属性主键,则只能在表级定义。例如,创建名为`Student`的表,其中`Sno`属性被定义为主键,可以采用以下两种方式:
1. 列级定义主键:
```sql
CREATE TABLE Student (
Sno CHAR(9) PRIMARY KEY,
Sname CHAR(20) NOT NULL,
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
);
```
2. 表级定义主键:
```sql
CREATE TABLE Student (
Sno CHAR(9),
Sname CHAR(20) NOT NULL,
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20),
PRIMARY KEY (Sno)
);
```
参照完整性则涉及表之间的关联,确保引用的外键存在于被引用表的主键中。在示例中,`SC`表包含`Sno`和`Cno`两个外键,分别引用`Student`和`Course`表的主键。关于参照完整性的违约处理,`ON DELETE CASCADE`表示当`Course`表中元组被删除时,`SC`表中对应的元组也会被级联删除;而`ON DELETE NO ACTION`则指示如果删除操作会造成不一致,应拒绝删除。同样,`ON UPDATE CASCADE`意味着当`Course`表中的`Cno`被更新时,`SC`表中的相应元组会进行级联更新。
用户定义的完整性允许用户自定义特定于应用的约束,以满足业务规则。这可能包括检查约束、唯一性约束等,确保数据符合特定业务逻辑。
完整性约束命名字句,如`CHECK`约束,用于声明列值必须满足的条件。触发器是另一种实现数据库完整性的手段,它们是预定义的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行的存储过程,可以用来强制执行更复杂的完整性规则。
总结来说,数据库完整性是数据库系统的核心特性,它通过一系列约束和机制确保数据的准确性和一致性。完整性检查和违约处理确保了数据在插入、更新或删除时始终符合既定的规则,从而保持数据库的可靠性和稳定性。
195 浏览量
2024-04-21 上传
3083 浏览量
261 浏览量
353 浏览量
178 浏览量
点击了解资源详情
183 浏览量
点击了解资源详情
VayneYin
- 粉丝: 24
- 资源: 2万+
最新资源
- excel制表的技巧
- spring开发指南
- ARES User Guide
- IBM Redbook -WebSphere Studio 5.1.2 for JSF and SDO
- winsock编程实例
- Flash开发媒体应用程序.pdf
- 转TD使用手册——实用实例
- ISIS User Guide
- 计算机图形学实验程序
- 最新scsi ultra320协议
- aspnet MVC应用程序实例
- IBM DB2 - SQL Reference for Cross-Platform Development
- How to Write Better Test Cases
- Java langugae Specification 3.0
- JAVA认证-310-055
- iometer使用指南