分类: 数据库开发技术
2012-05-08 22:31:18
数据库完整性的概念
与关系数据库的完整性不同,数据库完整性表示数据的正确性(accurate)、有效性(valid)和相容性(consistent),防止错误的数据进入数据库。
正确性指数据的合法性;
有效性指数据是否属于所定义的有效范围;
相容性指表示同一事实的两个数据应相同。
在对数据库提交修改前,必须要满足所应用的完整性约束(Integrity constraints)和数据验证(Data validation)。
完 整性除了在第三章所述的实体完整性(Entity Integrity)、参照完整性(Referential Integrity)、和用户定义完整性(User Defined Integrity),还有域完整性(Domain Integrity):数据必须为预定义的数据类型,同时属性值的限制:比如取值范围,没有提供值时的默认值,以及是否可以为空等。
完整性子系统
DBMS中执行完整性检查的子系统称为“完整性子系统”。它检测事务的执行,并测试是否违反完整性的规则。若有违反完整性规则,则采取适当的操作。
完整性规则集
完整性规则集是由DBA或应用程序员事先向完整性子系统提供的有关数据约束的一组规则。它由以下部分组成:
1、什么时候使用规则进行检查(称为规则的触发条件);
2、要检查什么样的错误(称为约束条件或谓词);
3、如果查出错误,应该怎么办(称为“ELSE子句”,即违反时要做的动作)。
SQL完整性约束分类
域约束:在域定义中定义的一种约束。域约束与在特定域中定义的任何列有关。
断言:在断言定义中定义一种约束。断言可以与一个或多个表进行关联。
断言仅仅是一种可以用于多个表的CHECK约束,因此必须在表定义之外独立的创建断言。
与表相关的约束:它是在表定义中定义的一种约束。该约束可以被定义为列定义的一部分,或者定义为表定义中的一个元素。在表级别定义的约束可以应用于一个或多个列。
列约束:NOT NULL,UNIQUE PRIMARY KEY,FOREIGN KEY,CHECK
表约束:UNIQUE PRIMARY KEY,FOREIGN KEY,CHECK