数据库的完整性
来源:互联网 发布:销售人员定位软件 编辑:程序博客网 时间:2024/05/02 04:38
1.完整性概述
(1)概念:数据库的完整性是指数据库中的数据的正确性,一致性和相容性。
(2)分类:a.类型(域)约束:说明给定的类型的合法取值
b.属性约束:说明属性的合法取值
c.关系约束:说明关系的合法取值
d.数据库约束:说明数据库的合法取值,通常涉及多个关系
一般而言,实体完整性是一种关系约束,参照完整性是一种数据库约束,用户定义的完整性可以使上述四种约束的任何一种。
2.实体完整性是一个关系内的约束
要求:
(1)每个关系应该有一个主码,每个元组的主码值唯一确定该元组。
(2)主码的任何属性都不能取空值。
3.参照完整性
要求:参照关系R的任何元组在其外码FK上值或者等于被参照关系S的某个元组在主码ks上的值,或者为空值。
违反参照完整性的更新:(1)向参照关系R中插入新元组tr。如果不存在被参照关系S的元组ts使得tr【FK】= ts【K】则破坏参照完整性
(2)从被参照关系S中删除元组ts。如果存在参照关系R的元组tr使得ts【K】=tr【FK】,则破坏参照完整性
(3)修改参照关系R的元组tr外码上的值。如果不存在被参照关系S的元组ts使得new(tr【FK】)=ts【K】,则破坏参照完整性
(4)修改被参照关系S的元组ts主码上的值。如果存在参照关系R的元组tr使得old(ts【K】)=tr【Fk】,则破坏参照完整性
保证参照完整性的措施:(1)拒绝(2)级联(3)置空值(4)置缺省值
SQL对参照完整性的支持:创建基本表的属性是外码的子句具有如下形式:FOREIGN KEY(A1,...,AK)REFERENCES<外表名>(<外表主码>)
[<参照触发动作>]
其中,参照触发动作指出修改和删除违反参照完整性约束时触发的动作;缺省时,违反参照完整性的修改和删除将被拒绝。
参照触发动作可以使如下两种形式之一:ON UPDATE<参照动作>[ON DELETE<参照动作>]或ON DELETE<参照动作>[ON UPDATE<参照动作>]其中,参照动作可以使CASCADE,SET NULL,SET DEFAULT 和NO ACTION(拒绝)
如:CREATE TABLE SC
(Sno CHAR(9),
Cno CHAR(5),
Grade SMALLINT CHECK(Grade >=0 AND Grade <= 100),
PRIMARY KEY(Sno,Cno),
FOREIGN KEY(Sno) REFERENCES Students(Sno)
ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY(Cno)REFERENCES Courses(Cno)
ON UPDATE CASCADE);
注:ON DELETE<参照动作>缺省时为拒绝,ON UPDATE<参照动作>缺省时也为拒绝。
4.域约束:每个属性都必须在一个值域上取值。
(1)创建域 语句形式如下:CREATE DOMAIN<域名>[AS]<数据类型>
[DEFAULT<缺省值>]
[<域约束>,...,<域约束>]其中,域约束有如下形式:[CONSTRAINT<约束名>]CHECK(<条件>)[<约束性质>]注:其中的域值用VALUE表示,可选的约束性质可以使NOT DEFERRABLE(不可延迟的)或DEFERRABLE(可延迟的)缺省时为不可延迟(约束立即检查)
举例如下:CREATE DOMAIN RMB NUMERIC(12.2)DEFAULT 0.00;
CREATE DOMAIN SexType CHAR(2) CONSTRAINT SexTest CHECK(VALUE IN('男','女'));
(2)修改域约束包括设置缺省值,删除缺省值,添加约束和删除约束
其语句格式如下:ALTER DOMAIN<域名><修改动作>其中修改动作可以是:
a.SET DEFAULT<缺省值>
b.DROP DEFAULT
c.ADD<域约束>
d.DROP CONSTRAINT<约束名>
举例如下:ALTER DOMAIN HourlyWage SET DEFAULT 5.00;
ALTER DOMAIN SexType DROP CONSTRAIN SexTest;
ALTER DOMAIN SexType ADD CONSTRAINT SexTest CHECK(VALUE IN('M','F'));
(3)删除域 语句格式为 DROP DOMAIN<域名>{CASCADE|RESTRICT}
如:DROP DOMAIN SexTpe RESTRICT;
5.关系约束
(1)关系约束可以分为静态约束和动态约束;静态约束时规定关系各个属性值之间应该满足的约束关系。动态约束是指修改元组的值时需要满足的约束条件
(2)SQL支持关系约束,SQL允许在创建基本表时使用如下形式的CHECK子句定义一个或多个表约束:CHECK(<条件>)[<约束性质>]
- 数据库的完整性保护
- 数据库的完整性
- 数据库的完整性
- 数据库的完整性
- 浅谈数据库的完整性
- 维护数据库的完整性
- 数据库的完整性
- 数据库的完整性约束
- 数据库的完整性约束
- 数据库的完整性
- 数据库之数据的完整性
- SQL数据库数据的完整性
- 关系数据库关系的完整性
- MySQL数据库的完整性约束
- 数据库的完整性和安全性
- 数据库---表的完整性约束
- 数据库完整性
- 数据库完整性
- 20 散列表
- Ubuntu系统访问Windows共享文件夹
- Oracle连接字符串总结
- 重装系统后ORACLE的恢复
- vs201中添加splashScreen
- 数据库的完整性
- awk学习笔记
- java 对同一个文件的同时读写
- iphone证书和真机调试配置
- 勇敢飞 我也能到国外去工作
- js 弹出对话框3种方式
- windows下整合 tomcat 和 nginx【原创】
- Windows 7下用XManager远程控制ubuntu
- 根据某列进行排名