Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1798096
  • 博文数量: 438
  • 博客积分: 9799
  • 博客等级: 中将
  • 技术积分: 6092
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-25 17:25
文章分类

全部博文(438)

文章存档

2019年(1)

2013年(8)

2012年(429)

分类: 数据库开发技术

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 NULLUNIQUE PRIMARY KEYFOREIGN KEYCHECK

表约束:UNIQUE PRIMARY KEYFOREIGN KEYCHECK

阅读(1326) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~