第9章 触发子和主动数据库
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
在20世纪80年代初,出现了主动数据库系统 20世纪80年代初, 世纪80年代初 这样的名词。 20世纪80年代中后期 世纪80年代中后期, 这样的名词。到20世纪80年代中后期,主动数据 库系统成为公认的数据库重要研究方向之一。 库系统成为公认的数据库重要研究方向之一。 主动数据库系统一词与关系数据库系统、 主动数据库系统一词与关系数据库系统、对象数 据库系统等有些差别。 据库系统等有些差别。后者是以不同数据模型为特征 的数据库系统,标志数据库的不同发展阶段。 的数据库系统,标志数据库的不同发展阶段。 主动数据库仅是数据库系统的一种功能, 主动数据库仅是数据库系统的一种功能,关系数 据库系统可以增加此项功能, 据库系统可以增加此项功能,对象数据库系统以及其 他类型的数据库系统都可以增加此项功能。 他类型的数据库系统都可以增加此项功能。
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
引用名〉 的定义中, 在 〈 引用名 〉 的定义中 , 前两行定义单个 元组的新、旧值的引用名,用于按行监控; 元组的新、旧值的引用名,用于按行监控;后 两行定义元组集( 的新、旧值的引用名, 两行定义元组集(表)的新、旧值的引用名, 用于按语句监控。 用于按语句监控。设新的元组值的引用名定义 为N,则可写成 NEW[ROW] REFERENCING NEW[ROW]AS N 设旧的元组集的引用名定义为OT OT, 设旧的元组集的引用名定义为 OT , 则可写 成 REFERENCING OLD TABLE AS OT
第9章 触发子和主动数据库
9.1 主动数据库系统引论
传统的数据库系统只能按照用户或应用程 序的要求,对数据库进行操作, 序的要求,对数据库进行操作,而不能根据发 生的事件或数据库的状态主动进行相应的处理, 生的事件或数据库的状态主动进行相应的处理, 这样的数据库系统是被动的。 这样的数据库系统是被动的。 有些应用不满足于数据库系统的这种“ 有些应用不满足于数据库系统的这种“不叫 不动”式的被动服务, 不动”式的被动服务,希望数据库系统能够主 动为用户提供服务。 动为用户提供服务。
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
早在主动数据库系统一词出现之前, 早在主动数据库系统一词出现之前,就有主动数 据库技术的萌芽。在网状数据库的DBTG DBTG语言标准 据库技术的萌芽。在网状数据库的DBTG语言标准 就定义了一种ON子句,其格式为: ON子句 中,就定义了一种ON子句,其格式为: ON〈命令表CALL 过程〉 CALL〈 ON〈命令表CALL〈过程〉 命令表〉表示一种或多种数据库操作命令, 〈命令表〉表示一种或多种数据库操作命令,如I NSERT,REMOVE等。在执行到〈命令表〉 NSERT,REMOVE等 在执行到〈命令表〉 中所列的数据库命令时, 中所列的数据库命令时,数据库系统就自动调用一个 相应的处理过程。 相应的处理过程。
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
触发子的事件既然是数据库更新操作, 触发子的事件既然是数据库更新操作 , 这些操作 的执行势必引起数据库中某些值的改变, 的执行势必引起数据库中某些值的改变 , 即由旧值变 为 新 值 , 这 些 新 、 旧 值 称 为 过 渡 值 ( transit values) values ) 。 在触发子的条件和动作中可能引用这些过 渡值。过渡值是单个元组或一般不大的元组集( 渡值 。 过渡值是单个元组或一般不大的元组集( 表 ) , 仅仅在执行规则时可能用到,一般存于内存中。 仅仅在执行规则时可能用到 , 一般存于内存中 。 为了 访问它,触发子须为它定义一个引用名(即变量名) 访问它 ,触发子须为它定义一个引用名 ( 即变量名 ) 。 在触发子定义中,有个可选的REFERENCING子句, REFERENCING子句 在触发子定义中,有个可选的REFERENCING子句,为过 渡值定义引用名。 渡值定义引用名。
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
SQL更新操作的对象一般是个元组集, SQL更新操作的对象一般是个元组集,对这些操 更新操作的对象一般是个元组集 作的监控就存在一个监控粒度问题。 作的监控就存在一个监控粒度问题。可供选择的监控 粒度有两种:或是对逐个元组( 监控, 粒度有两种:或是对逐个元组(行)监控,或是以语 句为单位进行监控。 句为单位进行监控。
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
下面通过SQL∶1999的触发子定义, 下面通过SQL∶1999的触发子定义,说明主动 SQL 的触发子定义 数据库规则的语法和语义。 数据库规则的语法和语义。 触发子可定义如下: 触发子可定义如下:
TRIGGER〈触发子名〉 〈触发子〉∷=CREATE TRIGGER〈触发子名〉 触发子〉 {BEFORE|AFTER}〈触发事件〉ON〈表名〉 {BEFORE|AFTER}〈触发事件〉ON〈表名〉 [REFERENCING〈引用名〉 [REFERENCING〈引用名〉] FOREACH{ROW|STATEMENT} WHEN(〈条件) 动作〉 WHEN(〈条件)〈动作〉 触发事件〉 〈触发事件〉∷=INSERT|DELETE|UPDATE[OF 属性表〉 〈属性表〉] 引用名〉 =OLD[ROW][AS]〈旧元组名〉 〈引用名〉∷=OLD[ROW][AS]〈旧元组名〉| NEW[ROW][AS]〈新元组名〉 NEW[ROW][AS]〈新元组名〉| OLDTABLE[AS]〈旧表名〉 OLDTABLE[AS]〈旧表名〉 | NEWTABLE[AS]〈新表名〉 NEWTABLE[AS]〈新表名〉
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
在主动数据库系统中,像上述的处理,用户只要提 在主动数据库系统中,像上述的处理, 出要求, DBMS执行 完全可以避免上述缺点。 执行, 出要求,由DBMS执行,完全可以避免上述缺点。 主动数据库系统对DBMS DBMS的基本要求是能处理下 主动数据库系统对DBMS的基本要求是能处理下 列形式的规则: 列形式的规则: WHENEVER〈事件〉 WHENEVER〈事件〉 IF〈条件〉THEN〈动作〉 IF〈条件〉THEN〈动作〉 这种规则称为主动数据库规则( 这种规则称为主动数据库规则(active database rules),又称ECA规则(取事件、条件、 ECA规则 rules),又称ECA规则(取事件、条件、动作英文名的 首字母),也称触发子(triggers)。 ),也称触发子 首字母),也称触发子(triggers)。
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
9.2 规则的表示 ECA规则是由传统的产生式规则演 ECA规则是由传统的产生式规则演 变而来的。 变而来的。产生式规则在人工智能中用 得很普遍,其基本格式可表达为: 得很普遍,其基本格式可表达为: IF〈条件〉THEN〈动作〉 〈条件〉THEN〈动作〉
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
从触发子定义可知, 从触发子定义可知,在事件发生前或发生 如果条件为真,则规则处于触发状态, 后,如果条件为真,则规则处于触发状态,它 的动作随时可以执行。 的动作随时可以执行。但一个表可能有多个规 则被触发,这就存在一个执行的次序问题。 则被触发,这就存在一个执行的次序问题。常 用的方法是给每个规则( 用的方法是给每个规则(包括行级规则及语句 级规则)一个优先级,按优先级高低依次执行。 级规则)一个优先级,按优先级高低依次执行。 对于同一优先级的规则, 对于同一优先级的规则,按照系统所定的规则 排序,如以规则定义的先后为序。总之, 排序,如以规则定义的先后为序。总之,触发 了的规则的执行要有明确的次序, 了的规则的执行要有明确的次序,这个次序必 须是全序,不能是偏序。否则, 须是全序,不能是偏序。否则,执行次序将是 不确定和不可重复的。 不确定和不可重复的。
有哪些操作会影响到本例的引用完整性约束。 有哪些操作会影响到本例的引用完整性约束。 不难看 共有下面6种操作: 出,共有下面6种操作: SC表的INSERT操作 表的INSERT操作。 ●SC表的INSERT操作。 COURSE表的DELETE操作 表的DELETE操作。 ●COURSE表的DELETE操作。 ●STUDENT表的DELETE操作。 STUDENT表的DELETE操作。 表的DELETE操作 SC表的UPDATE(SNO,CNO)操作。 表的UPDATE ●SC表的UPDATE(SNO,CNO)操作。 COURSE表的UPDATE(CNO)操作。 表的UPDATE ●COURSE表的UPDATE(CNO)操作。 STUDENT表的UPDATE(SNO)操作。 表的UPDATE ●STUDENT表的UPDATE(SNO)操作。 对上述6种操作分别定义6条规则, 对上述6种操作分别定义6条规则,以实现所定义的 引用完整性约束。 引用完整性约束。
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
在主动数据库中, (2)在主动数据库中,对触发规则的时间往 往是有要求的。例如, 往是有要求的。例如,有些规则要求在事件前 触发,有些则要求在事件后触发。 ECA规 触发,有些则要求在事件后触发。在ECA规 则中,可以明确地表示此要求; CA规则不 则中,可以明确地表示此要求;而CA规则不 提供这种方便。 提供这种方便。
制作:倪巍伟 东系统缺少主动数据库功能, 由于传统数据库系统缺少主动数据库功能,有些 可由主动数据库提供的功能不得不由应用程序来实现。 可由主动数据库提供的功能不得不由应用程序来实现。 在每次更新数据库时, 在每次更新数据库时,应用程序检查数据库更新前后 的状态,若有违反完整性约束或需主动干预等情况, 的状态,若有违反完整性约束或需主动干预等情况, 应用程序对数据库进行相应的操作。 应用程序对数据库进行相应的操作。 这样做不但增加了应用程序设计者的负担, 这样做不但增加了应用程序设计者的负担,而且 还有下列缺点: 还有下列缺点: (1)若要修改完整性约束或触发条件,则需修改应 若要修改完整性约束或触发条件, 用程序。 用程序。
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
早期的关系数据库管理系统System R中 早期的关系数据库管理系统System R中,曾有人建 议增加触发子系统( subsystem)。 )。该子系统 议增加触发子系统(trigger subsystem)。该子系统 在满足一定条件时,触发一定的动作, 在满足一定条件时,触发一定的动作,主动完成必要的 处理,实际上就是现在所称的主动数据库子系统。 处理,实际上就是现在所称的主动数据库子系统。 在被动数据库系统中, 在被动数据库系统中,也有与主动数据库类似的功 例如, 能。例如,自动维护简单的域完整性约束和实体完整性 约束等。 约束等。这些功能都是以系统内部逻辑控制的形式实现 用户不得重新定义、修改或扩充。 的,用户不得重新定义、修改或扩充。具有这类功能的 数据库系统仍属被动数据库系统。 数据库系统仍属被动数据库系统。
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
【例9-1】引用完整性约束的实现。 以例3-1定义的STUDENT,COURSE,SC 三个表为例,其中SC表中定义了两个外键SNO和C NO及其完整性约束,试写出实现此引用完整性约束的 规则。
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
这种规则可称为CA规则。在主动数据库系 这种规则可称为CA规则。 CA规则 统中,也有少数系统直接采用CA规则。 CA规则 统中,也有少数系统直接采用CA规则。其语 义为:当数据库到达某一状态, 义为:当数据库到达某一状态,使规则中的 条件〉满足时,则该规则被触发。但是CA 〈条件〉满足时,则该规则被触发。但是CA 规则用于主动数据库系统有下面两个缺点。 规则用于主动数据库系统有下面两个缺点。 )CA规则只表示数据库到达的状态 规则只表示数据库到达的状态, (1)CA规则只表示数据库到达的状态,而 不表示如何导致这种状态。 不表示如何导致这种状态。
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
(2)由应用程序实现完整性约束检查和其他处理, 由应用程序实现完整性约束检查和其他处理, 正确性难以保证,不利于数据库系统的可靠运行。 正确性难以保证,不利于数据库系统的可靠运行。 增加了数据库和应用程序间的通信, (3)增加了数据库和应用程序间的通信,影响数据 库的性能。 库的性能。
在20世纪80年代初,出现了主动数据库系统 20世纪80年代初, 世纪80年代初 这样的名词。 20世纪80年代中后期 世纪80年代中后期, 这样的名词。到20世纪80年代中后期,主动数据 库系统成为公认的数据库重要研究方向之一。 库系统成为公认的数据库重要研究方向之一。 主动数据库系统一词与关系数据库系统、 主动数据库系统一词与关系数据库系统、对象数 据库系统等有些差别。 据库系统等有些差别。后者是以不同数据模型为特征 的数据库系统,标志数据库的不同发展阶段。 的数据库系统,标志数据库的不同发展阶段。 主动数据库仅是数据库系统的一种功能, 主动数据库仅是数据库系统的一种功能,关系数 据库系统可以增加此项功能, 据库系统可以增加此项功能,对象数据库系统以及其 他类型的数据库系统都可以增加此项功能。 他类型的数据库系统都可以增加此项功能。
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
引用名〉 的定义中, 在 〈 引用名 〉 的定义中 , 前两行定义单个 元组的新、旧值的引用名,用于按行监控; 元组的新、旧值的引用名,用于按行监控;后 两行定义元组集( 的新、旧值的引用名, 两行定义元组集(表)的新、旧值的引用名, 用于按语句监控。 用于按语句监控。设新的元组值的引用名定义 为N,则可写成 NEW[ROW] REFERENCING NEW[ROW]AS N 设旧的元组集的引用名定义为OT OT, 设旧的元组集的引用名定义为 OT , 则可写 成 REFERENCING OLD TABLE AS OT
第9章 触发子和主动数据库
9.1 主动数据库系统引论
传统的数据库系统只能按照用户或应用程 序的要求,对数据库进行操作, 序的要求,对数据库进行操作,而不能根据发 生的事件或数据库的状态主动进行相应的处理, 生的事件或数据库的状态主动进行相应的处理, 这样的数据库系统是被动的。 这样的数据库系统是被动的。 有些应用不满足于数据库系统的这种“ 有些应用不满足于数据库系统的这种“不叫 不动”式的被动服务, 不动”式的被动服务,希望数据库系统能够主 动为用户提供服务。 动为用户提供服务。
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
早在主动数据库系统一词出现之前, 早在主动数据库系统一词出现之前,就有主动数 据库技术的萌芽。在网状数据库的DBTG DBTG语言标准 据库技术的萌芽。在网状数据库的DBTG语言标准 就定义了一种ON子句,其格式为: ON子句 中,就定义了一种ON子句,其格式为: ON〈命令表CALL 过程〉 CALL〈 ON〈命令表CALL〈过程〉 命令表〉表示一种或多种数据库操作命令, 〈命令表〉表示一种或多种数据库操作命令,如I NSERT,REMOVE等。在执行到〈命令表〉 NSERT,REMOVE等 在执行到〈命令表〉 中所列的数据库命令时, 中所列的数据库命令时,数据库系统就自动调用一个 相应的处理过程。 相应的处理过程。
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
触发子的事件既然是数据库更新操作, 触发子的事件既然是数据库更新操作 , 这些操作 的执行势必引起数据库中某些值的改变, 的执行势必引起数据库中某些值的改变 , 即由旧值变 为 新 值 , 这 些 新 、 旧 值 称 为 过 渡 值 ( transit values) values ) 。 在触发子的条件和动作中可能引用这些过 渡值。过渡值是单个元组或一般不大的元组集( 渡值 。 过渡值是单个元组或一般不大的元组集( 表 ) , 仅仅在执行规则时可能用到,一般存于内存中。 仅仅在执行规则时可能用到 , 一般存于内存中 。 为了 访问它,触发子须为它定义一个引用名(即变量名) 访问它 ,触发子须为它定义一个引用名 ( 即变量名 ) 。 在触发子定义中,有个可选的REFERENCING子句, REFERENCING子句 在触发子定义中,有个可选的REFERENCING子句,为过 渡值定义引用名。 渡值定义引用名。
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
SQL更新操作的对象一般是个元组集, SQL更新操作的对象一般是个元组集,对这些操 更新操作的对象一般是个元组集 作的监控就存在一个监控粒度问题。 作的监控就存在一个监控粒度问题。可供选择的监控 粒度有两种:或是对逐个元组( 监控, 粒度有两种:或是对逐个元组(行)监控,或是以语 句为单位进行监控。 句为单位进行监控。
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
下面通过SQL∶1999的触发子定义, 下面通过SQL∶1999的触发子定义,说明主动 SQL 的触发子定义 数据库规则的语法和语义。 数据库规则的语法和语义。 触发子可定义如下: 触发子可定义如下:
TRIGGER〈触发子名〉 〈触发子〉∷=CREATE TRIGGER〈触发子名〉 触发子〉 {BEFORE|AFTER}〈触发事件〉ON〈表名〉 {BEFORE|AFTER}〈触发事件〉ON〈表名〉 [REFERENCING〈引用名〉 [REFERENCING〈引用名〉] FOREACH{ROW|STATEMENT} WHEN(〈条件) 动作〉 WHEN(〈条件)〈动作〉 触发事件〉 〈触发事件〉∷=INSERT|DELETE|UPDATE[OF 属性表〉 〈属性表〉] 引用名〉 =OLD[ROW][AS]〈旧元组名〉 〈引用名〉∷=OLD[ROW][AS]〈旧元组名〉| NEW[ROW][AS]〈新元组名〉 NEW[ROW][AS]〈新元组名〉| OLDTABLE[AS]〈旧表名〉 OLDTABLE[AS]〈旧表名〉 | NEWTABLE[AS]〈新表名〉 NEWTABLE[AS]〈新表名〉
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
在主动数据库系统中,像上述的处理,用户只要提 在主动数据库系统中,像上述的处理, 出要求, DBMS执行 完全可以避免上述缺点。 执行, 出要求,由DBMS执行,完全可以避免上述缺点。 主动数据库系统对DBMS DBMS的基本要求是能处理下 主动数据库系统对DBMS的基本要求是能处理下 列形式的规则: 列形式的规则: WHENEVER〈事件〉 WHENEVER〈事件〉 IF〈条件〉THEN〈动作〉 IF〈条件〉THEN〈动作〉 这种规则称为主动数据库规则( 这种规则称为主动数据库规则(active database rules),又称ECA规则(取事件、条件、 ECA规则 rules),又称ECA规则(取事件、条件、动作英文名的 首字母),也称触发子(triggers)。 ),也称触发子 首字母),也称触发子(triggers)。
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
9.2 规则的表示 ECA规则是由传统的产生式规则演 ECA规则是由传统的产生式规则演 变而来的。 变而来的。产生式规则在人工智能中用 得很普遍,其基本格式可表达为: 得很普遍,其基本格式可表达为: IF〈条件〉THEN〈动作〉 〈条件〉THEN〈动作〉
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
从触发子定义可知, 从触发子定义可知,在事件发生前或发生 如果条件为真,则规则处于触发状态, 后,如果条件为真,则规则处于触发状态,它 的动作随时可以执行。 的动作随时可以执行。但一个表可能有多个规 则被触发,这就存在一个执行的次序问题。 则被触发,这就存在一个执行的次序问题。常 用的方法是给每个规则( 用的方法是给每个规则(包括行级规则及语句 级规则)一个优先级,按优先级高低依次执行。 级规则)一个优先级,按优先级高低依次执行。 对于同一优先级的规则, 对于同一优先级的规则,按照系统所定的规则 排序,如以规则定义的先后为序。总之, 排序,如以规则定义的先后为序。总之,触发 了的规则的执行要有明确的次序, 了的规则的执行要有明确的次序,这个次序必 须是全序,不能是偏序。否则, 须是全序,不能是偏序。否则,执行次序将是 不确定和不可重复的。 不确定和不可重复的。
有哪些操作会影响到本例的引用完整性约束。 有哪些操作会影响到本例的引用完整性约束。 不难看 共有下面6种操作: 出,共有下面6种操作: SC表的INSERT操作 表的INSERT操作。 ●SC表的INSERT操作。 COURSE表的DELETE操作 表的DELETE操作。 ●COURSE表的DELETE操作。 ●STUDENT表的DELETE操作。 STUDENT表的DELETE操作。 表的DELETE操作 SC表的UPDATE(SNO,CNO)操作。 表的UPDATE ●SC表的UPDATE(SNO,CNO)操作。 COURSE表的UPDATE(CNO)操作。 表的UPDATE ●COURSE表的UPDATE(CNO)操作。 STUDENT表的UPDATE(SNO)操作。 表的UPDATE ●STUDENT表的UPDATE(SNO)操作。 对上述6种操作分别定义6条规则, 对上述6种操作分别定义6条规则,以实现所定义的 引用完整性约束。 引用完整性约束。
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
在主动数据库中, (2)在主动数据库中,对触发规则的时间往 往是有要求的。例如, 往是有要求的。例如,有些规则要求在事件前 触发,有些则要求在事件后触发。 ECA规 触发,有些则要求在事件后触发。在ECA规 则中,可以明确地表示此要求; CA规则不 则中,可以明确地表示此要求;而CA规则不 提供这种方便。 提供这种方便。
制作:倪巍伟 东系统缺少主动数据库功能, 由于传统数据库系统缺少主动数据库功能,有些 可由主动数据库提供的功能不得不由应用程序来实现。 可由主动数据库提供的功能不得不由应用程序来实现。 在每次更新数据库时, 在每次更新数据库时,应用程序检查数据库更新前后 的状态,若有违反完整性约束或需主动干预等情况, 的状态,若有违反完整性约束或需主动干预等情况, 应用程序对数据库进行相应的操作。 应用程序对数据库进行相应的操作。 这样做不但增加了应用程序设计者的负担, 这样做不但增加了应用程序设计者的负担,而且 还有下列缺点: 还有下列缺点: (1)若要修改完整性约束或触发条件,则需修改应 若要修改完整性约束或触发条件, 用程序。 用程序。
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
早期的关系数据库管理系统System R中 早期的关系数据库管理系统System R中,曾有人建 议增加触发子系统( subsystem)。 )。该子系统 议增加触发子系统(trigger subsystem)。该子系统 在满足一定条件时,触发一定的动作, 在满足一定条件时,触发一定的动作,主动完成必要的 处理,实际上就是现在所称的主动数据库子系统。 处理,实际上就是现在所称的主动数据库子系统。 在被动数据库系统中, 在被动数据库系统中,也有与主动数据库类似的功 例如, 能。例如,自动维护简单的域完整性约束和实体完整性 约束等。 约束等。这些功能都是以系统内部逻辑控制的形式实现 用户不得重新定义、修改或扩充。 的,用户不得重新定义、修改或扩充。具有这类功能的 数据库系统仍属被动数据库系统。 数据库系统仍属被动数据库系统。
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
【例9-1】引用完整性约束的实现。 以例3-1定义的STUDENT,COURSE,SC 三个表为例,其中SC表中定义了两个外键SNO和C NO及其完整性约束,试写出实现此引用完整性约束的 规则。
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
这种规则可称为CA规则。在主动数据库系 这种规则可称为CA规则。 CA规则 统中,也有少数系统直接采用CA规则。 CA规则 统中,也有少数系统直接采用CA规则。其语 义为:当数据库到达某一状态, 义为:当数据库到达某一状态,使规则中的 条件〉满足时,则该规则被触发。但是CA 〈条件〉满足时,则该规则被触发。但是CA 规则用于主动数据库系统有下面两个缺点。 规则用于主动数据库系统有下面两个缺点。 )CA规则只表示数据库到达的状态 规则只表示数据库到达的状态, (1)CA规则只表示数据库到达的状态,而 不表示如何导致这种状态。 不表示如何导致这种状态。
制作:倪巍伟 东南大学计算机科学与工程学院数据库课程组
(2)由应用程序实现完整性约束检查和其他处理, 由应用程序实现完整性约束检查和其他处理, 正确性难以保证,不利于数据库系统的可靠运行。 正确性难以保证,不利于数据库系统的可靠运行。 增加了数据库和应用程序间的通信, (3)增加了数据库和应用程序间的通信,影响数据 库的性能。 库的性能。