2018-08-29 数据库完整性

2018-08-29  本文已影响0人  kotw_zjc

数据库的完整性:数据的正确性和相容性。

关系模型的实体完整性,CREATE TABLE中用PRIMARY KEY定义。单属性构成的码有两种说明方法:定义为列级约束条件;定义为表级约束条件。对多个属性构成的码只能定义为表级约束条件。

插入或对主码列进行更新操作时,DBMS按照实体完整性规则自动进行检查。包括:检查主码值是否唯一;检查主码的各个属性是否为空。检查记录中主码值是否唯一的一种方法是进行全表扫描。

关系模型中的参照完整性定义,在CREATE TABLE中用FOREIGN KEY短语定义哪些列为外码。用REFERENCES短语指明这些外码参照那些表的主码。

参照完整性违约处理:拒绝执行,默认策略;级联操作;设置为空值,对于参照完整性,除了应该定义外码,还应定义外码列是否允许空值。

用户定义的完整性就是针对某一具体应用的数据必须满足的语义要求。DBMS提供,而不必由应用程序承担。属性上的约束条件的定义,CREATE TABLE时定义:列值非空(NOT NULL);列值唯一(UNIQUE);检查列值是否满足一个布尔表达式(CHECK)。在CREATE TABLE时可以用CHECK短语定义元组上的约束条件,即元组级的限制。

完整性约束命名字句。CONSTRAINT 约束。使用ALTER TABLE语句修改表中的完整性限制。

SQL支持域的概念,并可以用CREATE DOMAIN语句建立一个域以及该域应该满足的完整性约束条件。

触发器是用户定义在关系表上的一类由事件驱动的特殊过程。由服务器自动激活,可以仅有更为复杂的检查和操作,具有更精细和更强大的数据控制能力。

定义触发器。CREATE TRIGGER <触发器名> {BEFORE | AFTER} <触发事件> ON <表名> FOR EACH {ROW | STATEMENT} [WHEN <触发条件>] <触发动作体>。触发事件:INSERT、DELETE、UPDATE;触发器类型:行级触发器(FOR EACH ROW),语句级触发器(FOR EACH STATEMENT)。

触发器的执行是由触发事件激活的,并由数据库服务器自动执行。一个数据表上可能定义了多个触发器,执行顺序:执行BEFORE触发器,激活SQL语句,执行AFTER触发器。

删除触发器的SQL语法。DROP TRIGGER <触发器名> ON <表名>;,必须是已经创建的触发器,并且只能由具有相应权限的用户删除。

上一篇下一篇

猜你喜欢

热点阅读