实现完整性约束方法类别

实现完整性约束方法类别


发布日期: 1970-01-01 更新日期: 2016-10-28 编辑:zhangxiang 浏览次数: 5091

标签:

摘要: 实现完整性约束的方法依类别不同而不同。完整性约束可以分为两大类:静态约束和动态约束。 静态约束: 静态约束是对数据库状态的约束,有可分为固定约束、隐含约束和显示约束。 固定约束: 是数据模型固有的约束,如关系的属性是原子的,即满足INF的约束。固有约束在DBM...

实现完整性约束的方法依类别不同而不同。完整性约束可以分为两大类:静态约束和动态约束。

静态约束:

静态约束是对数据库状态的约束,有可分为固定约束、隐含约束和显示约束。

固定约束:

是数据模型固有的约束,如关系的属性是原子的,即满足INF的约束。固有约束在DBMS实现时已经考虑。

隐含约束:

指隐含于数据模式中的约束,一般用数据定义语言(DDL)语句说明,并存于数据目录中。例如,域完整性约束、实体完整性以及参照完整性约束,都由相应的DDL语句说明。

显示约束:

固有约束、隐含约束是最基本的约束,但概括不了所有的约束。数据完整性是多种多样的,且依赖于数据的语义与应用,这些约束只有显式地说明,故称显式约束。显式约束的说明一般有三种方法:

  • 用过程说明约束。这种方法不约束的说明和检验交给应用程序,应用程序中可以插入一些过程,以检验数据哭更新是否违反给顶的约束,如果违反约束,则回滚事务。检验约束的过程一般用通用高级程序语言编写,可以表达各式各样的约束。这是一种普遍方法。

  • 用语言说明约束。断言指数据库状态必须满足的逻辑条件。数据库完整性约束可以看成一系列断言的集合。为了表示约束,DBMS须提供断言说明语言。

  • 用触发子表示约束。触发子是一个软件机制,其功能相当于WHENEVERTHEN,即一旦给定条件成立,系统就引发相应的动作。利用触发子可以表示约束,以违反约束作为条件,以违反约束的处理作为动作。动作不限于回滚事务,也可以给用户一个消息或过程。在系统中定义一批触发子后,就会监督数据库状态,一旦出现违反约束的更新,就会引发相应的动作。

动态约束不是对数据库状态的约束,而是数据库从一个状态变为另一个状态时应遵守的约束,例如在更新职工表时,工资、工龄这些属性值一般只会增加,不会减少。动态约束一般也是显式说明的。在上述约束中,固有约束必然实施,隐含约束在大部分现代DBMS中基本实施或部分实施,显式和动态约束只在个别DBMS中实施。

关注公众号
获取免费资源

随机推荐


Copyright © Since 2014. 开源地理空间基金会中文分会 吉ICP备05002032号

Powered by TorCMS

OSGeo 中国中心 邮件列表

问题讨论 : 要订阅或者退订列表,请点击 订阅

发言 : 请写信给: osgeo-china@lists.osgeo.org