数据库的完整性(integrity )是指数据的正确性(correctness )和相容性( compat- ability)。
数据的正确性是指数据是符合现实世界语义、反映当前实际状况的;
数据的相容性是指数据库同一对象在不同关系表中的数据是符合逻辑的。
数据的完整性和安全性是两个既有联系又不尽相同的概念。
数据的完整性是为了防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据。
数据的安全性是保护数据库防止恶意破坏和非法存取。
因此,
完整性检查和控制的防范对象是不合语义的、不正确的数据,防止它们进入数据库。
安全性控制的防范对象是非法用户和非法操作,防止他们对数据库数据的非法存取。
为维护数据库的完整性,数据库管理系统必须能够实现如下功能。
1.提供定义完整性约束条件的机制
2.提供完整性检查的方法
一般在INSERT、UPDATE、DELETE语句执行后开始检查,也可以在事务提交时检查。
3.进行违约处理
违背了完整性约束条件将采取一定的动作,如拒绝(NO ACTION)执行该操作或级联(CASCADE)执行其他操作,进行违约处理以保证数据
的完整性。
5.1实体完整性
5.1.1定义实体完整性
在CREATETABLE 中用PRIMARY KEY定义。
对单属性构成的码有两种说明方法,
一种是定义为列级约束条件,
另一种是定义为表级约束条件。
对多个属性构成的码只有一一种说明方法,即定义为表级约束条件。
5.1.2 实体完整性检查和违约处理
5.2参照完整性
5.2.1定义参照完整性
primary key 是实体完整性。
foreign key 是参照完整性。
5.2.2 参照完整性检查和违约处理
参照完整性将两个表中的相应元组联系起来了。因此,对被参照表和参照表进行增、删、改操作时有可能破坏参照完整性,必须进行检查以保证这两个表的相容性。例如,对表SC和Student有4种可能破坏参照完整性的情况,如表5.1所示。
primary key == 主键 等价于抄 唯一 (UNIQUE) 且 非空 (NOT NULL)
从上面的讨论可以看到,关系数据库管理系统在实现参照完整性时,除了要提供定义主码、外码的机制外,还需要提供不同的策略供用户选择。具体选择哪种策略,要根据应用环境的要求确定。
5.3用户定义的完整性
用户定义的完整性就是针对某一具体应用的数据必须满足的语义要求。目前的关系数据库管理系统都提供了定义和检验这类完整性的机制,使用了和实体完整性、参照完整性相同的技术和方法来处理它们,而不必由应用程序承担这一功能。
5.3.1 属性上的丝约束条件
5.3.2元组上的约束条件
5.4完整性约束命名子句
5.6断言
COUNT() 函数返回表中的记录数:SELECT COUNT() FROM table_name;