💻博主现有专栏:
C51单片机(STC89C516),c语言,c++,离散数学,算法设计与分析,数据结构,Python,Java基础,MySQL,linux,基于HTML5的网页设计及应用,Rust(官方文档重点总结),jQuery,前端vue.js,Javaweb开发,Python机器学习等
🥏主页链接:
目录
🎯实体完整性
🎃实体完整性定义
关系模型的实体完整性
- CREATE TABLE中用PRIMARY KEY定义
单属性构成的码有两种说明方法
- 定义为列级约束条件
- 定义为表级约束条件
对多个属性构成的码只有一种说明方法
- 定义为表级约束条件
🎃实体完整性检查和违约处理
插入或对主码列进行更新操作时,关系数据库管理系统按照实体完整性规则自动进行检查。包括:
- 检查主码值是否唯一,如果不唯一则拒绝插入或修改
- 检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改
🎯参照完整性
🎃参照完整性定义
若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:
- 或者取空值(F的每个属性值均为空值)
- 或者等于S中某个元组的主码值
关系模型的参照完整性定义
- 在CREATE TABLE中用FOREIGN KEY短语定义哪些列为外码
- 用REFERENCES短语指明这些外码参照哪些表的主码
🎃参照完整性检查和违约处理
- 一个参照完整性将两个表中的相应元组联系起来
- 对被参照表和参照表进行增删改操作时有可能破坏参照完整性,必须进行检查
参照完整性违约处理
(1) 拒绝(NO ACTION)执行
不允许该操作执行。该策略一般设置为默认策略
(2) 级联(CASCADE)操作
当删除或修改被参照表(Student)的一个元组造成了与参照表(SC)的不一致,则删除或修改参照表中的所有造成不一致的元组
(3)设置为空值(SET-NULL)
当删除或修改被参照表的一个元组时造成了不一致,则将参照表中的所有造成不一致的元组的对应属性设置为空值。
🎯用户定义完整性
- 用户定义的完整性是:针对某一具体应用的数据必须满足的语义要求
- 关系数据库管理系统提供了定义和检验用户定义完整性的机制,不必由应用程序承担
🎃属性上的约束条件
CREATE TABLE时定义属性上的约束条件
- 列值非空(NOT NULL)
- 列值唯一(UNIQUE)
- 检查列值是否满足一个条件表达式(CHECK)
属性上的约束条件检查和违约处理
- 插入元组或修改属性的值时,关系数据库管理系统检查属性上的约束条件是否被满足
- 如果不满足则操作被拒绝执行
🎃元组上的约束条件
- 属性上的约束条件:只涉及单个属性
- 元组级的限制:可以设置不同属性之间的取值的相互约束条件
- 在CREATE TABLE时可以用CHECK短语定义元组上的约束条件,即元组级的限制
元组上的约束条件检查和违约处理
- 插入元组或修改属性的值时,关系数据库管理系统检查元组上的约束条件是否被满足
- 如果不满足则操作被拒绝执行
🎯完整性约束命名子句
1.完整性约束命名子句
CONSTRAINT
<完整性约束条件名><完整性约束条件> <完整性约束条件>包括NOT NULL、UNIQUE、PRIMARY KEY短语、FOREIGN KEY短语、CHECK短语等
2. 修改表中的完整性限制
- 使用ALTER TABLE语句修改表中的完整性限制