频道栏目
读书频道 > 数据库 > SQL Server > SQL SERVER 2012数据库设计与开发实务
2.4.4 引用完整性
2013-08-06 15:45:43     我来说两句
收藏   我要投稿
本书从数据库系统设计与开发者角度出发,详细深入地介绍了SQL Server数据库程序设计与开发的方法和技巧,内容包括数据库系统相关理论、数据库设计理论、T-SQL语言的语法、预存程序、过程对象、自定义函数、触发...  立即去当当网订购

引用完整性是关系表与关系表之间的完整性条件,主要用来规范外键的使用规则。

1. 引用完整性及其规则

引用完整性(Referential Integrity)是当关系表存在外键时,外键的值一定是来自引用关系表的主键值,或为空值。也就是说,外键的属性值集合是对应引用主键的属性值集合,如图2-19所示。

2-19 引用完整性

由图2-19可以看出,引用主键的属性值集合是定义域的子集,即外键的属性值集合,只是加上空值。例如,公司【员工】关系表都会参与公司的【项目】关系表,如下图2-20所示。

2-20 外键的属性值集合

2-20中的员工编号和项目编号是主键,所属项目和主管分别是员工和项目的外键,引用项目编号和员工编号主键。引用完整性的规则如下所示。

Ø      在关系表不可包含无法引用的外键。例如,员工李四的【所属项目】外键值根本不存在引用的主键【项目编号】,表示此元组违反引用完整性,因为没有父亲的项目编号,怎么会有儿子所属的项目。

Ø      如果外键不是关系表的主键,其属性值可以为空值。例如,【项目】关系表硬件授权的主管外键是空值,因为可能尚未指定项目主管,所以并没有违反引用完整性。

2. 外键引用图

关系数据库模型中的外键是数据库中各关系表之间的结合剂,只需将外键和引用主键连接起来,就可以了解关系表之间的关系,所以创建数据库架构时,通常会使用图形来标示关系表之间的外键关系,称为“外键引用图”(Referential Diagram),如图2-21所示。

2-21 外键引用图

2-21是一家公司的数据库架构,拥有员工、部门、项目工作时数和项目关系表架构,各关系表的外键是使用箭头线指向引用主键,其中【项目工作时间】关系表的主键是组合键,也是外键,图2-21可以清楚显示整个数据库中关系表之间的关系。

因为关系表的外键是引用其他关系表的主键,引用的关系表也可能拥有其他外键,再引用到其他关系表。如果将这些外键的引用关系按照顺序绘出,可以创建“外键引用链”(Referential Chain),如下所示:

项目 部门 员工

上述引用链是说明【项目】关系表引用【部门】关系表,然后再引用到【员工】关系表。如果外键引用最后回到原关系表,称为 “外键引用环”(Referential Cycle)。例如,关系表R1的引用链最后又回到R1,其外键引用环如下所示:

R1 R2 R3 Rn R1

3. 外键的使用规则

引用完整性主要是规范外键的使用,当更新外键或删除引用主键时,都可能违反引用完整性。例如,客户和订单的外键引用图,如图2-22所示。

2-22 外键引用图

在图2-22中如果删除【客户】关系表的元组,因为【订单】关系表拥有引用到【客户】关系表的外键客户编号,表示主键的元组已经不存在,即外键引用的主键元组已经不存在,违反引用完整性。

另一种情况是更新【订单】关系表的外键项目,因为此键引用【订单明细】关系表的主键编号,如果更新外键所引用的主键不存在时,一样违反引用完整性。以上情况可以定义两种外键的使用规则,如下所示。

(1) 外键的更新规则(Update Rule):如果一个元组拥有外键,当合法用户试图在更新或新增元组时,更改到外键的值,数据库管理系统会如何处理?

(2) 外键的删除规则(Delete Rule):如果一个元组拥有外键,当合法用户试图删除引用的主键时,数据库管理系统会怎么处理?

(3) 当上述规则在删除引用主键或更新外键时,将会导致违反引用完整性,数据库管理系统可能有三种处理方式,如下所示。

(4) 限制性处理方式(Restricted):拒绝删除或更新操作。

(5) 连锁性处理方式(Cascades):连锁性处理方式是当更新或删除时,需要作用到所有影响的外键,否则拒绝此操作。例如,在删除客户时,所有外键引用的订单数据也需一并删除,当更改订单明细编号时,则所有订单中拥有此项目的外键也需一并更改。

(6) 空值化处理方式(Nullifies):将所有可能的外键都设为空值,否则拒绝此操作。例如,当删除客户时,就将【订单】关系表中引用此客户主键的外键,即客户编号都设为空值。

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:2.4.3 实体完整性
下一篇:2.4.5 其他完整性约束
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站