18143453325 在线咨询 在线咨询
18143453325 在线咨询
所在位置: 首页 > 营销资讯 > 信息时代 > 完整性约束(数据库)

完整性约束(数据库)

时间:2022-11-27 14:30:01 | 来源:信息时代

时间:2022-11-27 14:30:01 来源:信息时代

    完整性约束 : 保护数据库中数据的正确性和一致性所进行的各种检查或数据应满足的条件。完整性约束一般由一个谓词表达式表示,例如,sp表的qty属性应该大于零: sp.qty>0。它也可以包括参数引用,即由游标所限定的引用(在触发条件中所指定的游标),引用记录或记录中的字段,如游标c1指向emp表的emp#属性: c1->emp.emp#。它还可以包括联结的记录和字段,如sp表的s#属性与s表的s#属性相等:sp.s#=s.s#。
数据库完整性约束能够防止合法用户使用数据库时向数据库中添加不合语义的数据。
从不同的数据粒度来讲,完整性约束条件作用的对象可以是字段、记录和表三种。其中字段约束主要是字段的类型、取值范围、精度、排序等约束条件。记录约束是记录中各个字段间的联系的约束。表约束是若干记录间、关系集合上以及表之间的联系的约束。从不同的数据状态来讲,完整性约束条件的控制可以是静态的,也可以是动态的。静态约束是对数据库状态的约束,例如,在任何状态,职员的年龄都必须满足[0,150]取值约束条件。动态约束是指数据库从一种状态转变为另一种状态时,应遵守的约束。例如,职员的年龄每年只会增长,不会减小,每年更新年龄时必须满足此约束条件。
综合上述两个方面,可以将完整性约束条件分为六类: 静态字段约束、静态记录约束、静态表约束、动态字段约束、动态记录约束、动态表约束。
1.静态字段约束
静态字段约束是对一个字段的取值域的说明,一般在建立数据库表结构时完成,包括以下几方面:
(1)对数据类型的约束:如中国工商银行数据库中储户姓名、身份证号码、住址等数据类型都规定为字符型,存款金额规定为浮点数值型。
(2)对数据长度、精度的约束:如中国工商银行数据库中人民币业务储户姓名的数据类型规定为字符型,长度为8。而该行国际业务中储户姓名的数据类型规定为字符型,长度为20,因为国际业务储户中有大量外国的储户姓名较长。存款金额的精度为小数2位。
(3)对数据格式的约束:如规定银行账号的前六位表示银行行号,中间三位表示储户的性质,后四位为顺序编号。存取日期的格式为YYYY/MM/DD。
(4)对数据取值范围或取值集合的约束。如,规定定期存款存期的取值集合为[0.25,0.5,1,2,3,5,8,10],未预约取款金额的取值范围为0.01~49999.99。
(5)对数据空值的约束:在实际设计时,有的字段允许空值,有的则不允许。例如,储户的姓名不能取空值,住址可以为空值。
(6)其他约束:包括主键的说明等,例如,将账号字段作为主键。
2.静态记录约束
静态记录约束规定记录的各个字段之间的约束关系,在数据库状态改变时,只检查被操作的特定记录即可导出该约束,而与该关系中的其他记录值或其他关系无关。
例如,人事档案中职员的年龄一般不大于150岁,因此在更新某人的档案时,对年龄值只检查是否在18~150岁之间即可,而与其他人的档案无关,职员关系中包含职务、工资等列,规定经理的工资不低于1000元。又如,订货关系中包含发货量、订货量等列,规定发货量不得超过订货量。
3.静态表约束
(1) 表约束(table constraint)主要有以下几方面的约束:①对关系模式的约束(如第一范式要求);②对关系模式属性取值的约束(如,人的年龄应小于200岁)和属性之间的取值约束(如,函数依赖和多值依赖);③关系模式之间属性的取值约束(如参照完整性约束)。
在一个表的各个记录之间或者若干个表之间常常存在各种联系或约束。
(2)常见的静态表约束有: ①实体完整性约束;②参照完整性约束; ③函数依赖约束: 大部分函数依赖约束都在关系模式中定义: ④统计约束(statistical constraint):指字段值与表中多个记录的统计值之间的约束关系。在数据库状态改变时,其值的变化要受对原数据库值进行统计结果的约束。
例如,供货单中的数量,不应超过仓库中的库存量。为提高效率,该约束一般不在每个更新时检查,而用运行一个周期性的检查程序来代替,使之简单扫描数据并报告例外情况,然后采取特殊措施来弥补发现的任何错误。又如: 规定教授的工资不得高于本学院教职工平均工资的4倍,不得低于本学院教职工平均工资的1.5倍。这里,本学院教职工的平均工资是一个统计值。
4. 动态字段约束
动态字段约束指修改字段定义或数据项值时应满足的约束条件,包括下面两方面:
(1)修改字段定义时的约束:如将允许空值的字段改为不允许空值时,如果该字段目前已存在空值,则拒绝这种修改。
(2)修改数据项值时的约束:指在修改数据项值时,需要保持与原数据项值应有的某种依赖或函数关系的约束条件。如职员年龄只能增长,工资增长幅度不低于5%等。
5.动态记录约束
动态记录约束指修改记录的值时记录中各个字段间需要满足的某种约束条件。如计算销售奖金时,奖金值不得低于个人销售额的5%,而不得高于个人销售额的8%等。
6.动态表约束
动态表约束是加在数据库表变化前后状态上的限制条件,例如,事务一致性、原子性等约束条件。

74
73
25
news

版权所有© 亿企邦 1997-2022 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭