天道酬勤,恒者能胜。追求卓越,成功就会在不经意间追上你。

数据库管理之数据库的完整性控制(四)

上一篇 / 下一篇  2013-01-11 14:01:11 / 精华(1) / 置顶(1) / 个人分类:Oracle数据库

大学毕业了,某猛男出售二手的大学高数课本。
书边的广告词:九五成新,有补考成绩单为证!



1、 数据库的完整性控制定义:数据库中完整性是指数据的正确性、有效性、相容性,防止错误的数据进入数据库。保护数据以防止合法用户无意中造成的破坏,确保用户所做的事情是正确的。

a)        正确性(Correctness)是指数据的合法性,比如数值数据中只能含数字而不能含字母

b)        有效性(Validity)是指数据是否属于所定义的有效范围

c)        相容性(Consistency)是指表示同一事实的两个数据应相同,不一致就是不相容

2、 SQL中的完整性约束

a)        域约束:对数据类型加以约束

Create domain域约束名字数据类型

b)        基本表约束:对基本表加以约束

                        i.             候选键(主键

primary key (<列名序列>)  Unique (<列名序列>)

                      ii.             外键

Foreign key(<依赖表列名序列>) references <参照表> (<参照表列名序列>)  [ on

delete/update <参照动作>]

操作动作(如果参照表删除或更新)有:

No action:对依赖表没有影响

Cascade:将依赖表中的值一起删除/更新

Restrict:依赖表中外键没有对应值时才能删除/修改,否则拒绝

Set null:将依赖表中被删除/修改的外键值置为空

 Set default:将依赖表中被删除/修改的外键值置为设置的默认值

                     iii.             检查约束:对单个关系的元组值加以约束,尽可能不要涉及其他关系

Check(<条件表达式>)

c)        断言:如果完整性约束设计多个关系,那么采用断言机制书写完整性约束

create assertion <断言名> check (<条件表达式>)

d)        触发器:)是一个能由系统自动执行时对数据库进行完整性约束的语句

3、 SQL3的触发器

a)        定义:触发器(Trigger)是一个能由系统自动执行时对数据库修改的语句,也称为主动规则(Active Rule)或事件-条件-规则(Event-Condition-Action RuleECA规则)

Create trigger触发器名

After/instead of/before update/delete/insert on table|view

referencing

OLD AS

NEW AS

触发动作

b)        组成

                        i.             事件:对数据库的插入、删除、修改等操作

                      ii.             条件:将测试条件是否成立,成立的话就执行动作,否则什么也不做;

                     iii.             动作:满足预定的条件,就由DBMS执行这些动作。

c)        结构

触发器命名

                  动作时间触发事件目标表名

                  旧值和新值的别名表

                                              动作间隔尺寸

                  触发动作   动作事件条件

                                              动作体

                        i.             动作时间:定义了何时想要执行触发器动作

1.        Before在触发事件进行以前

2.        After在触发事件完成以后

3.        Instead of在触发事件发生时

                      ii.             触发事件:定义了激活触发器的SQL数据更新语句的类别

1.        Update只有update可以加of +属性

2.        Delete

3.        insert

                     iii.             目标表:当该表被修改、删除、插入时,将激活触发器(on短语)

                     iv.             旧值和新值的别名表

1.        UpdateOLD ASNEW AS

2.        DeleteOLD AS

3.        InsertNEW AS

                      v.             触发动作:定义了当触发器被激活时想要它执行的SQL语句

1.        动作间隔尺寸:

a)        For each row

b)        For each statement

2.        动作事件条件:当触发器激活时,如果条件是True则执行,否则不执行

3.        动作体:当触发器被激活时想要DBMS执行的SQL语句

零测试


TAG: 零测试 外键 完整性约束 域约束 trigger 主键 触发器

 

评分:0

我来说两句

Open Toolbar