当前位置:文档之家› 高级数据库技术 (3)

高级数据库技术 (3)


29
武汉大学计算机学院
外 键 和 参 照 完 整 性
5.
创建表时定义外键,DBMS自动支持参照完整性
定义表语句的基本语法
CREATE TABLE 〈表名〉 ( (<列名><数据类型>[NOT NULL│NULL] [UNIQUE] [, <列名><数据类型>[NOT NULL│NULL] [UNIQUE]]… [, PRIMARY KEY (<列名>[,<列名>] …)] [, FOREIGN KEY (<列名>[,<列名>] …)REFERENCES <被参照表名>] );
(lname,fname)
telephone
(lname,fname,telephone)
包含超键的多 个列都是超键
(sid,fname)
16
武汉大学计算机学院
主 键 和 实 体 完 整 性
2.
键(候选键)
—— 给定一个表T,标题Head(T)=A1…An。 表T的一个键,有时也称为候选键,是具有 以下两个特征的一组属性的集合K=Ai1…Aik:
18
武汉大学计算机学院
主 键 和 实 体 完 整 性
4.
实体完整性规则
—— 表T中的任意行在主键列的取值都不允许为空
下面的理解中,哪个是正确的?
规则4.1 实体完整性规则 若属性A是基本关系R的主属性, 则属性A不能取空值。 ? 规则4.1 实体完整性规则 若属性A是基本关系R的主键属性, 则属性A不能取空值。 √ 规则4.1 实体完整性规则 任何主键属性都不能为空。 规则4.1 实体完整性规则 主键不能为空。
UNIT two 完整性与视图
1
武汉大学计算机学院
思 考 几 个 问 题
1.
2.
应用环境中存在很多规则,而这些规则反 映为属性的取值域、属性之间的取值约束, 这是数据库必须遵从的,否则,数据库中 的数据会出现不一致或错误。你如何保证 数据之间的约束关系的?你考虑过完整性 约束的检测对系统性能的影响吗?你知道 DBMS能提供什么帮助吗? 视图是一个虚表,应用环境中你会用到很 多视图,它确实给你带来很多好处,但你 真的觉得操作起来视图能与基本表一样吗?

sid 1 2 3 5
lname Jones Smith Brown White
fname Allan John Harry Edward
class 2 3 2 3
telephone 555-1234 555-4321 555-1122 555-3344
如果学校不允许重名, 则键为sid,(lname,fname). 可以任选一个作主键 如果学校允许重 名呢?
26
武汉大学计算机学院
外 键 和 参 照 完 整 性
3.
实例
例1 两个关系间 学生(学号,姓名,性别,专业号,年龄) 专业(专业号,专业名) 例2 两个以上的关系间 学生(学号,姓名,性别,专业号,年龄) 课程(课程号,课程名,学分) 选修(学号,课程号,成绩) 例3 同一关系 学生2(学号,姓名,性别,专业号,年龄,班长)
(sid,cno , first) (sid,cno , time) sid 为主键? 为主键 ? 为主键 ? cno 为主键? 主键的选择可能决 (sid,cno)为主键 ? 定系统的功能 (sid,cno,major)为主键? 21 武汉大学计算机学院
主 键 和 实 体 完 整 性
被参照的关系 参照关系 外键
S
KS
R
KR F
25
武汉大学计算机学院
外 键 和 参 照 完 整 性
2.
参照完整性规则
若属性(或属性组)F是基本关系R的外键,它与基 本关系S的键KS 相对应(关系R和S不一定是不同的关 系),则对于R中每个元组在F上的值必须为: (1)或者取空值(F的每个属性值均为空值); (2)或者等于S中某个元组的主键值。
27
武汉大学计算机学院
外 键 和 参 照 完 整 性
4.
什么操作可能破坏参照完整性
被参照的关系 参照关系 外键
S
KS
R
KR F
S 插入元组 删除元组
R
修改元组


28
武汉大学计算机学院
外 键 和 参 照 完 整 性
4.
什么操作可能破坏参照完整性 对被参照表的删除和更新操作 对参照表的插入和更新操作
30
武汉大学计算机学院
外 键 和 参 照 完 整 性
6.
1)
实现参照完整性要考虑的几个问题:
外键能否接受空值的问题 在被参照关系中删除元组的问题 -- 级联删除、受限删除、置空值删除 在参照关系中插入元组的问题 -- 受限插入、递归插入 修改关系中主键的问题 -- 不允许修改主键、允许修改主键
31
2)
3)
4)
武汉大学计算机学院
外 键 和 参 照 完 整 性
7.
参照完整性被破坏时可选择的策略
DBMS在实现参照完整性时,除了要提供定 义主键、外键的机制外,还需要提供不同的 策略供用户选择。根据应用环境的要求,选 择策略(Full SQL-99):

1) 2)
如果u,v是T中两个不同的元组,则u[K]≠v[K]; 没有K的真子集H具有特征1)。


表在某一时刻的内容无法告诉我们表中 的键是什么 每个表都至少有一个键
17
武汉大学计算机学院
主 键 和 实 体 完 整 性
3.
主键
—— 主键是被数据库设计者选择出来作为表T的 行的唯一性标识符的候选键 键是客观的概念,主键是主观的概念 例 下表中的键和主键是什么?
11


武汉大学计算机学院
完整性约束条件分类
2.
完整性约束条件的对象状态

静态约束 -- 指数据库每一确定状态时的数据对象所 应满足的约束条件,它是反映数据库状态 合理性的约束。

动态约束 -- 指数据库从一种状态转变为另一种状态 时,新、旧值之间所应满足的约束条件, 它是反映数据库状态变迁的约束。
sid 1 1 2 3 3 5 5 cno 101 108 105 101 108 102 105 major No Yes No Yes No No No first Y Y Y Y Y Y Y
enrollment
sid 1 1 2 3 3 5 5 cno 101 108 105 101 108 102 105 major No Yes No Yes No No No time 1 1 1 1 1 1 1
3
武汉大学计算机学院
一.完整性控制的实现原理 二.完整性约束条件分类 三. 主键和实体完整性 四. 外键和参照完整性 五. 非过程性约束的实现 六. 过程性约束与触发器 七. 视图的定义、查询与更新 八. 视图的作用
4
武汉大学计算机学院
完整性控制的
实现原理
5
武汉大学计算机学院
完整性控制的实现原理
7.
创建表时定义主键,DBMS自动支持实体完整性
定义表语句的基本语法
CREATE TABLE 〈表名〉 ( (<列名><数据类型>[NOT NULL│NULL] [UNIQUE] [, <列名><数据类型>[NOT NULL│NULL] [UNIQUE]]… [, PRIMARY KEY (<列名>[,<列名>] …)] [, FOREIGN KEY (<列名>[,<列名>] …)REFERENCES <被参照表名>] );
完整性控制的实现原理
2.
完整性控制子系统(过程性约束)
定义 完整性 约束 用户发出 更新操作 请求 完整性规则 登记 DD
检查
操作数据 DB DBMS的完整性子系统
7
武汉大学计算机学院
完整性控制的实现原理
3.
完整性控制的功能

定义功能
-- 提供定义完整性约束条件的机制

检查功能
-- 在一定的时机,检查用户操作请求是否违背完 整性约束条件
12
武汉大学计算机学院
完整性约束条件分类
3.
完整性约束条件分类
动态列级约束 动态元组约束
对象状态 动态
动态关系约束
静态
静态列级约束
静态元组约束
静态关系约束

元组
关系
对象粒度
13
武汉大学计算机学院
完整性约束条件分类
3.
完整性约束条件分类
状态 粒度 列级 元组级 关系级
静态
列定义 类型 格式 值域 和 实 体 完 整 性
5.
什么操作可能破坏实体完整性规则?
假定关系R的主键为K,对R的操作有:检索和 更新两大类。

检索操作不可能破坏实体完整性规则 更新操作: 插入元组 (可能,当插入元组的主键属性为空时) 删除元组 (不可能) 修改元组 (可能,当修改元组的主键属性为空时)
(修改元组 = 删除元组 + 插入元组)
20
武汉大学计算机学院
主 键 和 实 体 完 整 性
6.
sid 1 1 2 3 3 5 5
如何选择有效的主键?
enrollment
cno 101 108 105 101 108 102 105 major No Yes No Yes No No No
enrollment
students
sid 1 2 3 5 lname Jones Smith Brown White fname Allan John Harry Edward class 2 3 2 3 telephone 555-1234 555-4321 555-1122 555-3344
相关主题