大部分权限的设置都以完整性约束条件为核心,也就是说,完整性约束条件是数据库约束体系的重要环节。
完整性约束条件在大多数情况下要面向一些数据对象,这些数据可以根据其特征分为三个层级,即列级、元组级和关系级。针对不同的层级,有相应的限制要求。例如:对列级的限制主要是指信息的存取类别、广度、精确度、序列等条件;对元组级的限制是指对数据中各层信息之间关联性的约束;对关系级的限制是指对各个实体、数据记录、属性、关系等关联性的约束。
完整性约束条件的这三个类别的状态可以任意切换,可以是静态的,也可以是动态的。静态的完整性约束条件是指信息处于某一确定的状态时,数据信息所要满足的状态形式。它表示数据库稳定时的完整性状态,是数据库系统中较为重要的约束条件,也是数据库状态发生转变的阶段,新旧数据所应该满足的条件也能够体现数据库系统的发展历程。
(一)静态级约束
1.静态列级约束
静态列级约束是针对某个列的数据信息的解释说明,是完成完整性约束的较为简单、实用的方式,主要包括以下几个方面:
(1)对信息类别的限制,主要包括信息的类别广度、精确度、来源等。例如,将数据库系统中的数据规划为特殊的字符,长度为8。
(2)对信息格式的限制。例如,规定学号的表现形式,前两位数字为入学的时间,后面几位数字为学生的次序。
(3)对数据取值广度和信息集合的限制。例如,设定成绩的表示范围为0~100,年龄的表示广度为14~29,性别的表示形式为【男,女】。
(4)对空值的限制。空值代表没有明确概念或没有明确意义的数据,但它并不是零值和空格。有的列允许放置空值,有的列不允许空值的存在。例如,学生的学号不能用空值来表示,但成绩可以是空值。
(5)其他限制。例如,数据列的序列和组合排列等。
2.静态元组约束
一个元组包含许多列值,静态元组约束是限制构成元组的各个列之间的联系。例如:工资关系中包含基本工资、职务工资,并规定合计应为基本工资和职务工资之和;教师关系中包含职称、基本工资等列,并规定教授的基本工资不得低于1200元。静态元组约束的使用范围只是在某个元组,范围较小,容易达成。
3.静态关系约束
数据中各个元组和关系之间都有着极为复杂的联系和约束关系。常见的静态关系约束主要包括以下四种:(www.xing528.com)
(1)实体完整性约束。
(2)参照完整性约束。
(3)函数依赖约束。大部分函数依赖约束是隐含在关系模式结构中的,特别是规范化程度较高的关系模式(如3NF或BCNF),都由模式来保持函数依赖。
(4)统计约束,是指字段值与关系中多个元组的统计值之间的约束关系。例如,规定系主任的职务工资不得高于本系教师平均职务工资的6倍,不得低于本系教师平均职务工资的2倍,本系教师平均职务工资值就是一个统计值。
静态关系约束中的实体完整性约束和参照完整性约束是关系模型的两个极其重要的约束,被称为关系的两个不变性。统计约束实现起来开销很大。
(二)动态级约束
1.动态列级约束
动态列级约束的对象是列的定义和值,在进行修改工作时,应该满足相应的约束条件,主要包括以下几个方面:
(1)更改列概念时的限制。例如,将允许空值修改成不允许空值时,如果该列当前已经存在空值,则应该禁止修改操作的发生。
(2)更改列值时的限制。在进行列值的更改工作时,应该结合原来列值的特征,在新旧值之间建立联系,以满足两者的完整性约束条件。例如,教师的基础薪水不能低于原来的基础薪水,学生的年龄只能呈现递增的趋势。
2.动态元组约束
动态元组完整性约束是指在更改元组值时要结合原来元组值的特征,在新旧元组值之间建立完整性约束条件。例如,教师的基础薪水经调整后不得低于原来的基础薪水+工作年限×1.5。
3.动态关系约束
动态关系约束是指在数据库关系变化的前后添加一定的约束条件。例如,信息的统一性和限制条件等同。完成动态关系约束需要消耗较多的资源。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。