18143453325 在线咨询 在线咨询
18143453325 在线咨询
所在位置: 首页 > 营销资讯 > 信息时代 > 数据库完整性类型(数据库)

数据库完整性类型(数据库)

时间:2022-11-18 20:30:01 | 来源:信息时代

时间:2022-11-18 20:30:01 来源:信息时代

    数据库完整性类型 : 在不同级别的粒度上,数据库完整性的实现。由此,数据库完整性分为域完整性、实体完整性、参照完整性、用户定义完整性和其他完整性。域完整性定义了关系属性的值域: 实体完整性保证了各记录的可区分性: 参照完整性确保了维护关系之间的联系的必要性; 用户定义完整性是针对某一应用环境的完整性约束条件; 其他完整性包括函数依赖与多值依赖等主要用于规范化数据库设计。
1.域完整性
域完整性(domain integrity)要求属性值必须取自其对应的值域; 一个属性值能否为空值由其语义决定。域完整性约束是最基本的约束。一个域是一个给定属性的所有可能值的集合。域完整性约束是用来定义这些合法值的规则。
数据类型在数据模型中是一种比较便捷的实现方式,因此,在确定系统中的域约束时,选择一个合适的逻辑类型来定义域是第一步要做的事情。但要注意对一些需要精确定义域的地方,还要附加规则。 例如, 若选择一个Integer(取值范围-32768~32767)数据类型作为年龄域定义就不合适,因在实际情况中,年龄的取值范围在0~150之间已足够了。
域完整性还要考虑“一个域是否应当包含未知的或者不存在的值”。需要确定这些未知的或者不存在的值能否被系统所接受。
域完整性要尽可能具体地定义由一个域所描述的值的集合。最简单的描述一个域的方式是列举域的所有值。例如,Weekends 域可以由集合{“Saturday”,“Sunday”}来描述。当然大多数域不能预先列举其所有值,所以要按域的实际情况来定义。有时候列举一个或多个规则来约束域成员会更加容易一些。
域完整性往往也是用户定义完整性的不可或缺的一部分。
2. 实体完整性
实体完整性(entity integrity)指明主键值必须是唯一的,且其任何组成部分都不能是空值。
定义实体完整性的必要性是: 关系对应于现实世界中的实体,而现实世界中实体是可区分的,亦即每个实体应具有唯一性标志。在关系模型中,是以主键值作为唯一标志的。若主键值为空值,则说明这个实体无法标志,即不可区分,这显然是错误的。例如,在关系“项目成员(项目、部门、职员姓名)”中,“职员姓名”属性为主键(假设职员不会重名),则“职员姓名”不能取空值。
又如,职员销售关系“销售(工号、商品号、销量)”中,“工号、商品号”为主键,则“工号”和“商品号”两个属性都不能取空值。
3. 参照完整性
参照完整性(referential integrity)指关系之间的引用应该遵守的规则,它用于维持关系的元组之间的一致性。参照完整性规则定义参照关系的外键与被参照关系的主键之间的引用关系。
对于永久关系的相关表,在更新、插入或删除记录时,如果只改其中一个表的记录,而不改另外一个表的记录,就会影响数据的完整性。
在数据库设计中,实体之间往往存在某种联系,在关系模型中实体及实体间的联系都是用关系来描述的。这样就存在着关系与关系间的引用。例如,职员实体和部门实体可以用下面的关系表示,其中主键用“*”标识:
职员(工号*,姓名,性别,部门号,年龄)
部门(部门号*,部门名,部门负责人)
这两个关系之间存在着属性的引用,即职员关系引用了部门关系的主键“部门号”。显然,部门关系中的“部门号”值必须是确实存在的部门的部门号,即部门关系中有该部门的记录,亦即职员关系中的“部门号”属性的取值需要参照部门关系的“部门号”属性的取值。在这里,职员关系的“部门号”属性与部门关系的主键“部门号”相对应,因此“部门号”属性是职员关系的外键。这里部门关系是被参照关系,职员关系为参照关系,见图1(a)。


(a)



(b)


图1 关系的参照图


多个关系之间也可能存在属性间的引用。例如,职员(工号*,姓名,性别,部门号,年龄),商品(商品号*,商品名,单价)和销售(工号*,商品号*,销量)。这三个关系之间也存在着属性的引用,即销售关系引用了职员关系的主键“工号”和商品关系的主键“商品号”。同样,销售关系中的“工号”值必须是确实存在的职员的工号,即职员关系中有该职员的记录,销售关系中的“商品号”值也必须是确实存在的商品的商品号,即商品关系中有该商品的记录。例中销售关系中某些属性的取值需要参照其他关系的属性取值。销售关系的“工号”属性与职员关系的主键“工号”相对应,“商品号”属性与商品关系的主键“商品号”相对应,因此,“工号”和“商品号”属性是销售关系的外键。这里职员关系和商品关系均为被参照关系,销售关系为参照关系。如图1(b)所示。
不仅两个或两个以上的关系间可以存在引用关系,同一关系内部属性间也可能存在引用关系。例如,在关系职员(工号*,姓名,性别,部门号,年龄,负责人)中,“工号”属性是主键,“负责人”属性表示该职员所在部门的负责人的工号,它引用了本关系“工号”属性,即“负责人”必须是确实存在的职员的工号。在这里,“负责人”属性与本身的主键“工号”属性相对应,因此“负责人”是外键。这里职员关系既是参照关系也是被参照关系。
所以,参照完整性属于表间规则。
4. 用户定义的完整性
任何关系数据库系统都应该支持域完整性、实体完整性和参照完整性。
在此基础上,不同的应用环境往往还需要一些特殊的约束条件,用户定义的完整性(user-defined integrity)就是针对某一应用环境的完整性约束条件。它反映一个具体应用所涉及的数据必须满足的语义要求。例如,某个属性必须取值不重复,某个属性的取值范围在’A’~’E’之间,某些属性值之间应满足一定的对应关系等。关系模型应提供定义和检验这类完整性的机制,以便用统一的方式由系统处理它们,从而减轻应用程序的处理负担。
在实际系统中,这类完整性规则一般在建立数据库表的同时进行定义,应用程序人员不需再做考虑。如果某些约束条件没有建立在数据库表一级,则应用编程人员应在各模块的具体编程中通过程序进行检查和控制。

74
73
25
news

版权所有© 亿企邦 1997-2022 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭