关系模型允许定义三类数据约束,它们是实体完整性、参照完整性以及用户定义的完整性约束,其中前两种完整性约束由关系数据库系统自动支持。
实体完整性约束要求关系的主键中属性值不能为空,这是数据库完整性的最基本要求,因为主键是惟一决定元组的,如为空则其惟一性就成为不可能的了。
参照完整性约束是关系之间相关联的基本约束,它不允许关系引用不存在的元组:即在关系中的外键要么是所关联关系中实际存在的元组,要么是空值。
自定义完整性是针对具体数据环境与应用环境由用户具体设置的约束,它反映了具体应用中数据的语义要求
参照完整性是用来控制数据的一致性,尤其是数据库中相关表的主关键字和外部关键字之间数据的一致性。
相关表之间的参照完整性规则包括:
1子表中的每一个记录在对应的主表中必须有一个父记录。
2在父表中修改记录时,如果修改了主关键字的值,则子表中相关记录的外部关键字值必须同样修改。
3在父表中删除记录时,与该记录相关的子表中的记录必须全部删除。
数据库完整性(Database Integrity)是指数据库中数据的正确性和相容性,其目的是防止垃圾数据的进出。数据库完整性由各种各样的完整性约束来保证,因此可以说数据库完整性设计就是数据库完整性约束的设计。加在数据库之上的语义约束条件就是数据库完整性约束条件。
完整性约束条件作用对象可以使关系、元组、列三种。
● 列约束主要是列的数据类型、取值范围、精度、排序等约束条件。
● 元组的约束是元组中各个字段间的联系的约束。
● 关系的约束是若干元组间、关系集合上以及关系之间的联系的约束。
完整性约束条件涉及这三类对象,其状态可以是静态的,也可以是动态的。所谓静态约束是指数据库每一确定状态时的数据对象所应满足的约束条件。它是反映数据库状态合理性的约束,这是最重要的一类完整性约束。
动态约束是指数据库从一种状态转变为另一种状态时,新、旧值之间所应满足的约束条件。
完整性约束条件可分为以下六类:
● 静态列级约束
● 静态元组约束
● 静态关系约束
● 动态列级约束
● 动态元组约束
● 动态关系约束
1 静态列级约束是对一个列的取值域的说明,包括以下几个方面:
(1) 对数据类型的约束,包括数据的类型、长度、单位、精度等;
(2) 对数据格式的约束。例如规定日期的格式为YYYY-MM-DD;
(3) 对取值范围或取值集合的约束。例如规定学生的成绩取值范围为0~100;
(4) 对空值的约束,规定哪些列可以为空值,哪些列不能为空值;
2 静态元组约束就是规定元组的各个列之间的约束关系。例如,订货关系中包含发货量、订货量等列,规定发货量不得超过订货量。
3 静态关系约束是指在一个关系的各个元组之间或者若干关系之间存在的约束。常见的静态约束有:
(1) 实体完整性约束;
(2) 引用完整性约束;
(3) 函数依赖约束;大部分函数依赖约束都在关系模式中定义。
(4) 统计约束;即字段值与关系中多个元组的统计值之间的约束关系。例如,规定部门经理的工资不得高于本部门职工平均工资的5倍,不得低于本部门职工平均工资的2倍。
4 动态列级约束是修改列定义或列值时应满足的约束条件,包括下面两方面:
(1) 修改列定义时的约束。例如,将允许空值的列改为不允许空值时,如果该列目前已存在空值,则拒绝这种修改。
(2) 修改列值时的约束。修改列值时有时需要参照其旧值,并且新旧值之间需要满足某种约束条件。例如,职工调整后的工资不得低于其调整前的原来工资;职工婚姻状态的变化只能是由未婚到已婚、已婚到离异、离异到再婚等几种情况。
5 动态元组约束是指修改元组的值时元组中各个字段间需要满足某种约束条件。例如,职工工资调整时新工资不得低于原工资+工龄15等。
6 动态关系约束是加在关系变化前后状态上的限制条件。例如,在集成电路芯片设计数据库中,一个设计中用到的所有单元的工艺必相同,因此,在更新某个设计单元时,设计单元的新老工艺必须保持一致。
解答如下:完整性有三类:实体完整性,参照完整性,用户定义完整性。(1)实体完整性:规定基本关系R的主属性A不能取空值,如:Create Table 学生(学号CHAR(10)PRIMARY KEY,姓名 CHAR(20),);(2)参照完整性:规定若F是基本关系的外码,它与基本关系S的住吗相对应,则对于R中每一个远足在F上的值必须取空值(F的每一个属性值均为空值),或等于S中某一个远足的主码值。如:Create Table 学生(学号 CHAR(10)PRIMARY KEY,姓名 CHAR(20),课程号 CHAR(10),FOREIGN KEY(课程号)REFERENCES 课程(课程号));Create 课程(课程号 CHAR(10) PRIMATY KEY,);(3)用户定义完整性:就是针对某一具体的关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求,由应用环境决定,即属性值限定,包括:列值非空(NOT NULL), 列值唯一(UNIQUE),检查列值是否满足一个布尔表达式。如:Create Table 学生_课程(学号 CHAR(10)NOT NULL,课程号 CHAR(10)NOTNULL,成绩 SMALLINTNOT NULL,PRIMARY KEY(学号,课程号),
数据库完整性(Database Integrity)是指数据库中数据在逻辑上的一致性、正确性、有效性和相容性。数据库完整性由各种各样的完整性约束来保证,因此可以说数据库完整性设计就是数据库完整性约束的设计。数据库完整性约束可以通过DBMS或应用程序来实现,基于DBMS的完整性约束作为模式的一部分存入数据库中。通过DBMS实现的数据库完整性按照数据库设计步骤进行设计,而由应用软件实现的数据库完整性则纳入应用软件设计(本文主要讨论前者)。
1实体完整性
CREATE TABLE Student
(Sno CHAR(9) PRIMARY KEY, / 列级完整性约束条件/
Sname CHAR(20) UNIQUE, / Sname取唯一值/
Ssex CHAR(2)
);
2参照完整性
课程信息表c(cno,cname,cbook) cno为主码
学生选课表sc(sno,cno,grade) 其中sno,cno是外码
creat table c
(
cno int not null primary key,
)
creat table sc
(
constraint fk foreign key (sno,cno)
references student(sno)
references c(cno)
)
3用户自定义完整性
学生性别是男或女,默认为男
CREATE TABLE student
(Sno CHAR(9) PRIMARY KEY,
Sname CHAR(20) UNIQUE,
Ssex CHAR(2) check(sex in('男','女')) default '男')
);
以上就是关于关系模型中数据完整性分为哪三类全部的内容,包括:关系模型中数据完整性分为哪三类、数据库,参照完整性规则包括什么么、数据库的完整性包含哪些完整性约Ɲ等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)