【摘要】 数据库完整性
数据库完整性确保的是数据的正确性和相容性
防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据。防范的对象:不和语义的、不正确的 数据DBMS要做的 提供定义 完整性约束条件 的机制。提供完整性检查的方法。违约处理机制。
实体完整性
定义
若属性A(一个或一组属性)是基本关系R的主属性,则A不能取空值。 所谓空值就是“不知道”…
数据库完整性
数据库完整性确保的是数据的正确性和相容性
- 防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据。
- 防范的对象:不和语义的、不正确的 数据
- DBMS要做的
- 提供定义 完整性约束条件 的机制。
- 提供完整性检查的方法。
- 违约处理机制。
实体完整性
定义
-
若属性A(一个或一组属性)是基本关系R的主属性,则A不能取空值。
所谓空值就是“不知道”或“不存在”或“无意义”的值。
-
实体完整性规则是针对基本关系而言的。
-
现实世界的实体是可以区分的,他们具有某种唯一性标识。
-
相应地,关系模型中以主码作为唯一性标识。
-
主码中的属性不能取空值。如果主属性取空值,就说明存在某个不可比标识的实体,与1.2相违背,因此这个规则称为实体完整性。
create table `student`(
Sno char(11) not null, Cno char(11) not null,
Sname varchar(10)notnull, primary key(Sno,Cno)
); -- 表级的主键定义
create table `Course`(
Cno char(11) not null primarykey, Cname varchar(20)
); -- 列级定义主键
检查和违约处理
- 检查主码值是否唯一,如果不唯一则拒绝插入或修改
- 检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改
参照完整性
定义
- 现实世界中的实体之间往往存在着某种联系,在关系模型中,实体以及实体之间的联系都是用关系来表示的,这样就自然存在着关系与关系之间的引用。
- 参照完整性用于描述实体之间的联系。
- 参照完整性一般是指多个实体或关系之间的关联关系。
- 参照完整性规则就是定义外键与被参照的主键之间的引用规则。
- 外键要么值为空要么等于其所参照的关系中的某个元组的主键值。
外键会拖垮查询效率,用程序级别实现
create table `student`(
Sno char(11) not null, Cno char(11) not null,
Sname varchar(10)notnull, primary key(Sno,Cno), foreign key(Cno)references Course(Cno) -- 表级定义的参照完整性
);
被参照表 | 参照表 | 违约处理 |
---|---|---|
可能破坏参照完整性 | 插入元组 | 拒绝 |
可能破坏参照完整性 | 修改外键值 | 拒绝 |
删除元组 | 可能破坏参照完整性 | 拒绝/级联修改/设为控制 |
修改主键值 | 可能破坏参照完整性 | 拒绝/级联修改/设为控制 |
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
喜欢就支持一下吧
相关推荐