高级数据库技术 (3)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
UNIT two 完整性与视图
1
武汉大学计算机学院
思 考 几 个 问 题
1.
2.
应用环境中存在很多规则,而这些规则反 映为属性的取值域、属性之间的取值约束, 这是数据库必须遵从的,否则,数据库中 的数据会出现不一致或错误。你如何保证 数据之间的约束关系的?你考虑过完整性 约束的检测对系统性能的影响吗?你知道 DBMS能提供什么帮助吗? 视图是一个虚表,应用环境中你会用到很 多视图,它确实给你带来很多好处,但你 真的觉得操作起来视图能与基本表一样吗?
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
sid
lname
fname
11
武汉大学计算机学院
完整性约束条件分类
2.
完整性约束条件的对象状态
静态约束 -- 指数据库每一确定状态时的数据对象所 应满足的约束条件,它是反映数据库状态 合理性的约束。
动态约束 -- 指数据库从一种状态转变为另一种状态 时,新、旧值之间所应满足的约束条件, 它是反映数据库状态变迁的约束。
√
19
╳
武汉大学计算机学院
主 键 和 实 体 完 整 性
5.
什么操作可能破坏实体完整性规则?
假定关系R的主键为K,对R的操作有:检索和 更新两大类。
检索操作不可能破坏实体完整性规则 更新操作: 插入元组 (可能,当插入元组的主键属性为空时) 删除元组 (不可能) 修改元组 (可能,当修改元组的主键属性为空时)
1) 2)
如果u,v是T中两个不同的元组,则u[K]≠v[K]; 没有K的真子集H具有特征1)。
表在某一时刻的内容无法告诉我们表中 的键是什么 每个表都至少有一个键
17
武汉大学计算机学院
主 键 和 实 体 完 整 性
3.
主键
—— 主键是被数据库设计者选择出来作为表T的 行的唯一性标识符的候选键 键是客观的概念,主键是主观的概念 例 下表中的键和主键是什么?
26
武汉大学计算机学院
外 键 和 参 照 完 整 性
3.
实例
例1 两个关系间 学生(学号,姓名,性别,专业号,年龄) 专业(专业号,专业名) 例2 两个以上的关系间 学生(学号,姓名,性别,专业号,年龄) 课程(课程号,课程名,学分) 选修(学号,课程号,成绩) 例3 同一关系 学生2(学号,姓名,性别,专业号,年龄,班长)
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). 可以任选一个作主键 如果学校允许重 名呢?
29
武汉大学计算机学院
外 键 和 参 照 完 整 性
5.
创建表时定义外键,DBMS自动支持参照完整性
定义表语句的基本语法
CREATE TABLE 〈表名〉 ( (<列名><数据类型>[NOT NULL│NULL] [UNIQUE] [, <列名><数据类型>[NOT NULL│NULL] [UNIQUE]]… [, PRIMARY KEY (<列名>[,<列名>] …)] [, FOREIGN KEY (<列名>[,<列名>] …)REFERENCES <被参照表名>] );
(修改元组 = 删除元组 + 插入元组)
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
22
武汉大学计算机学院
主 键 和 实 体 完 整 性
标准化
SQL-86
“数据库语言SQL” “具有完整性增强的数据库语言SQL”,增加了对完整性 约束的支持 “数据库语言SQL”,是SQL-89的超集,增加了许多新特 性,如新的数据类型,更丰富的数据操作,更强的完整 性、安全性支持等。 正在讨论中的新的标准,将增加对面向对象模型的支持
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
2
武汉大学计算机学院
本讲主要目标
学完本讲后,你应该能够了解:
1. DBMS的完整性控制的基本原理; 2. 完整性机制的实施会极大地影响系统性能; 3. 实现完整性约束的方法有非过程性的方法和过 程性的方法,利用CREATE TABLE语句的列约束 和表约束实现有限的非过程性地约束;利用触 发器过程性地实现动态的约束; 4. 实体完整性和参照完整性的内容和使用; 5. 视图是虚表,一旦视图定义,可以像使用基本 表一样操作视图,但并非所有的视图都是可更 新的。
改变列定义 或列值
元组值应满 足的条件
实体完整性约束 参照完整性约束 函数依赖约束 统计约束
动态
元组新旧值 之间应满足 的约束条件
关系新旧状态间应满 足的约束条件
14
武汉大学计算机学院
主键和
实体完整性
15
武汉大学计算机学院
主 键 和 实 体 完 整 性
1.
超键
—— 超键是能唯一区分任意两行数据的列或多个列 例,在表students中,通过哪些列可以区别不同的学生?
当用户操作违背 约束时,使用不 同的检查时机是 否影响处理方法?
• 对于立即执行约束,
系统将拒绝操作 • 对于延迟执行约束, 系统将拒绝整个事务
9
武汉大学计算机学院
完整性约束
条件分类
10
武汉大学计算机学院
完整性约束条件分类
1.
完整性约束条件的对象粒度
关系约束 -- 是若干元组间、关系集合上以及关系 之间的联系的约束。 元组约束 -- 是元组中各个字段间的联系的约束。 列约束 -- 列的类型、取值范围、精度、排序等 约束。
2)
3)
4)
武汉大学计算机学院
外 键 和 参 照 完 整 性
7.
参照完整性被破坏时可选择的策略
DBMS在实现参照完整性时,除了要提供定 义主键、外键的机制外,还需要提供不同的 策略供用户选择。根据应用环境的要求,选 择策略(Full SQL-99):
被参照的关系 参照关系 外键
S
KS
R
KR F
25
武汉大学计算机学院
外 键 和 参 照 完 整 性
2.
参照完整性规则
若属性(或属性组)F是基本关系R的外键,它与基 本关系S的键KS 相对应(关系R和S不一定是不同的关 系),则对于R中每个元组在F上的值必须为: (1)或者取空值(F的每个属性值均为空值); (2)或者等于S中某个元组的主键值。
7.
创建表时定义主键,DBMS自动支持实体完整性
定义表语句的基本语法
CREATE TABLE 〈表名〉 ( (<列名><数据类型>[NOT NULL│NULL] [UNIQUE] [, <列名><数据类型>[NOT NULL│NULL] [UNIQUE]]… [, PRIMARY KEY (<列名>[,<列名>] …)] [, FOREIGN KEY (<列名>[,<列名>] …)REFERENCES <被参照表名>] );
30
武汉大学计算机学院
外 键 和 参 照 完 整 性
6.
1)
实现参照完整性要考虑的几个问题:
外键能否接受空值的问题 在被参照关系中删除元组的问题 -- 级联删除、受限删除、置空值删除 在参照关系中插入元组的问题 -- 受限插入、递归插入 修改关系中主键的问题 -- 不允许修改主键、允许修改主键
31
(sid,cno , first) (sid,cno , time) sid 为主键? 为主键 ? 为主键 ? cno 为主键? 主键的选择可能决 (sid,cno)为主键 ? 定系统的功能 (sid,cno,major)为主键? 21 武汉大学计算机学院
主 键 和 实 体 完 整 性
1.
完整性控制定义 数据的完整性是为了防止数据库中存 在不符合语义的数据,防止错误信息的 输入和输出,即所谓垃圾进垃圾出所造 成的无效操作和错误结果。
完整性约束条件 ---- 加在数据库数据 之上的语义约束条件。 完整性控制 ---- DBMS中检查数据是 否满足完整性条件的机制。
6
武汉大学计算机学院
12
武汉大学计算机学院
完整性约束条件分类
3.
完整性约束条件分类
动态列级约束 动态元组约束
对象状态 动态
动态关系约束
静态
静态列级约束
静态元组约束
静态关系约束
列
元组
关系
对象粒度
13
武汉大学计算机学院
完整性约束条件分类
3.
完整性约束条件分类
状态 粒度 列级 元组级 关系级
静态
列定义 类型 格式 值域 空值
23
SQL-89
SQL-92
Βιβλιοθήκη Baidu
SQL-99
武汉大学计算机学院
外键和
参照完整性
24
武汉大学计算机学院
外 键 和 参 照 完 整 性
1.
外键
设F是基本关系R的一个或一组属性,但不是R的键。 如果F与基本关系S的键KS 相对应,则称F是R的外键 (Foreign Key),并称R为参照关系(Referencing Relation ) , S 为 被 参 照 关 系 ( Referenced Relation)。关系R和S不一定是不同的关系。
3
武汉大学计算机学院
一.完整性控制的实现原理 二.完整性约束条件分类 三. 主键和实体完整性 四. 外键和参照完整性 五. 非过程性约束的实现 六. 过程性约束与触发器 七. 视图的定义、查询与更新 八. 视图的作用
4
武汉大学计算机学院
完整性控制的
实现原理
5
武汉大学计算机学院
完整性控制的实现原理
完整性控制的实现原理
2.
完整性控制子系统(过程性约束)
定义 完整性 约束 用户发出 更新操作 请求 完整性规则 登记 DD
检查
操作数据 DB DBMS的完整性子系统
7
武汉大学计算机学院
完整性控制的实现原理
3.
完整性控制的功能
定义功能
-- 提供定义完整性约束条件的机制
检查功能
-- 在一定的时机,检查用户操作请求是否违背完 整性约束条件
18
武汉大学计算机学院
主 键 和 实 体 完 整 性
4.
实体完整性规则
—— 表T中的任意行在主键列的取值都不允许为空
下面的理解中,哪个是正确的?
规则4.1 实体完整性规则 若属性A是基本关系R的主属性, 则属性A不能取空值。 ? 规则4.1 实体完整性规则 若属性A是基本关系R的主键属性, 则属性A不能取空值。 √ 规则4.1 实体完整性规则 任何主键属性都不能为空。 规则4.1 实体完整性规则 主键不能为空。
27
武汉大学计算机学院
外 键 和 参 照 完 整 性
4.
什么操作可能破坏参照完整性
被参照的关系 参照关系 外键
S
KS
R
KR F
S 插入元组 删除元组
R
修改元组
28
武汉大学计算机学院
外 键 和 参 照 完 整 性
4.
什么操作可能破坏参照完整性 对被参照表的删除和更新操作 对参照表的插入和更新操作
保证数据完整性功能
-- 如果发现用户操作请求使数据违背了完整性约 束,则采取一定的动作来保证数据的完整性。
8
武汉大学计算机学院
完整性控制的实现原理
4.
完整性约束的检测时机
立即执行约束 -- 在一条语句执行完后立即检查
延迟执行约束 -- 完整性检查延迟到整个事务执行结束后再进行, 检查正确方可提交。
(lname,fname)
telephone
(lname,fname,telephone)
包含超键的多 个列都是超键
(sid,fname)
16
武汉大学计算机学院
主 键 和 实 体 完 整 性
2.
键(候选键)
—— 给定一个表T,标题Head(T)=A1…An。 表T的一个键,有时也称为候选键,是具有 以下两个特征的一组属性的集合K=Ai1…Aik:
1
武汉大学计算机学院
思 考 几 个 问 题
1.
2.
应用环境中存在很多规则,而这些规则反 映为属性的取值域、属性之间的取值约束, 这是数据库必须遵从的,否则,数据库中 的数据会出现不一致或错误。你如何保证 数据之间的约束关系的?你考虑过完整性 约束的检测对系统性能的影响吗?你知道 DBMS能提供什么帮助吗? 视图是一个虚表,应用环境中你会用到很 多视图,它确实给你带来很多好处,但你 真的觉得操作起来视图能与基本表一样吗?
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
sid
lname
fname
11
武汉大学计算机学院
完整性约束条件分类
2.
完整性约束条件的对象状态
静态约束 -- 指数据库每一确定状态时的数据对象所 应满足的约束条件,它是反映数据库状态 合理性的约束。
动态约束 -- 指数据库从一种状态转变为另一种状态 时,新、旧值之间所应满足的约束条件, 它是反映数据库状态变迁的约束。
√
19
╳
武汉大学计算机学院
主 键 和 实 体 完 整 性
5.
什么操作可能破坏实体完整性规则?
假定关系R的主键为K,对R的操作有:检索和 更新两大类。
检索操作不可能破坏实体完整性规则 更新操作: 插入元组 (可能,当插入元组的主键属性为空时) 删除元组 (不可能) 修改元组 (可能,当修改元组的主键属性为空时)
1) 2)
如果u,v是T中两个不同的元组,则u[K]≠v[K]; 没有K的真子集H具有特征1)。
表在某一时刻的内容无法告诉我们表中 的键是什么 每个表都至少有一个键
17
武汉大学计算机学院
主 键 和 实 体 完 整 性
3.
主键
—— 主键是被数据库设计者选择出来作为表T的 行的唯一性标识符的候选键 键是客观的概念,主键是主观的概念 例 下表中的键和主键是什么?
26
武汉大学计算机学院
外 键 和 参 照 完 整 性
3.
实例
例1 两个关系间 学生(学号,姓名,性别,专业号,年龄) 专业(专业号,专业名) 例2 两个以上的关系间 学生(学号,姓名,性别,专业号,年龄) 课程(课程号,课程名,学分) 选修(学号,课程号,成绩) 例3 同一关系 学生2(学号,姓名,性别,专业号,年龄,班长)
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). 可以任选一个作主键 如果学校允许重 名呢?
29
武汉大学计算机学院
外 键 和 参 照 完 整 性
5.
创建表时定义外键,DBMS自动支持参照完整性
定义表语句的基本语法
CREATE TABLE 〈表名〉 ( (<列名><数据类型>[NOT NULL│NULL] [UNIQUE] [, <列名><数据类型>[NOT NULL│NULL] [UNIQUE]]… [, PRIMARY KEY (<列名>[,<列名>] …)] [, FOREIGN KEY (<列名>[,<列名>] …)REFERENCES <被参照表名>] );
(修改元组 = 删除元组 + 插入元组)
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
22
武汉大学计算机学院
主 键 和 实 体 完 整 性
标准化
SQL-86
“数据库语言SQL” “具有完整性增强的数据库语言SQL”,增加了对完整性 约束的支持 “数据库语言SQL”,是SQL-89的超集,增加了许多新特 性,如新的数据类型,更丰富的数据操作,更强的完整 性、安全性支持等。 正在讨论中的新的标准,将增加对面向对象模型的支持
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
2
武汉大学计算机学院
本讲主要目标
学完本讲后,你应该能够了解:
1. DBMS的完整性控制的基本原理; 2. 完整性机制的实施会极大地影响系统性能; 3. 实现完整性约束的方法有非过程性的方法和过 程性的方法,利用CREATE TABLE语句的列约束 和表约束实现有限的非过程性地约束;利用触 发器过程性地实现动态的约束; 4. 实体完整性和参照完整性的内容和使用; 5. 视图是虚表,一旦视图定义,可以像使用基本 表一样操作视图,但并非所有的视图都是可更 新的。
改变列定义 或列值
元组值应满 足的条件
实体完整性约束 参照完整性约束 函数依赖约束 统计约束
动态
元组新旧值 之间应满足 的约束条件
关系新旧状态间应满 足的约束条件
14
武汉大学计算机学院
主键和
实体完整性
15
武汉大学计算机学院
主 键 和 实 体 完 整 性
1.
超键
—— 超键是能唯一区分任意两行数据的列或多个列 例,在表students中,通过哪些列可以区别不同的学生?
当用户操作违背 约束时,使用不 同的检查时机是 否影响处理方法?
• 对于立即执行约束,
系统将拒绝操作 • 对于延迟执行约束, 系统将拒绝整个事务
9
武汉大学计算机学院
完整性约束
条件分类
10
武汉大学计算机学院
完整性约束条件分类
1.
完整性约束条件的对象粒度
关系约束 -- 是若干元组间、关系集合上以及关系 之间的联系的约束。 元组约束 -- 是元组中各个字段间的联系的约束。 列约束 -- 列的类型、取值范围、精度、排序等 约束。
2)
3)
4)
武汉大学计算机学院
外 键 和 参 照 完 整 性
7.
参照完整性被破坏时可选择的策略
DBMS在实现参照完整性时,除了要提供定 义主键、外键的机制外,还需要提供不同的 策略供用户选择。根据应用环境的要求,选 择策略(Full SQL-99):
被参照的关系 参照关系 外键
S
KS
R
KR F
25
武汉大学计算机学院
外 键 和 参 照 完 整 性
2.
参照完整性规则
若属性(或属性组)F是基本关系R的外键,它与基 本关系S的键KS 相对应(关系R和S不一定是不同的关 系),则对于R中每个元组在F上的值必须为: (1)或者取空值(F的每个属性值均为空值); (2)或者等于S中某个元组的主键值。
7.
创建表时定义主键,DBMS自动支持实体完整性
定义表语句的基本语法
CREATE TABLE 〈表名〉 ( (<列名><数据类型>[NOT NULL│NULL] [UNIQUE] [, <列名><数据类型>[NOT NULL│NULL] [UNIQUE]]… [, PRIMARY KEY (<列名>[,<列名>] …)] [, FOREIGN KEY (<列名>[,<列名>] …)REFERENCES <被参照表名>] );
30
武汉大学计算机学院
外 键 和 参 照 完 整 性
6.
1)
实现参照完整性要考虑的几个问题:
外键能否接受空值的问题 在被参照关系中删除元组的问题 -- 级联删除、受限删除、置空值删除 在参照关系中插入元组的问题 -- 受限插入、递归插入 修改关系中主键的问题 -- 不允许修改主键、允许修改主键
31
(sid,cno , first) (sid,cno , time) sid 为主键? 为主键 ? 为主键 ? cno 为主键? 主键的选择可能决 (sid,cno)为主键 ? 定系统的功能 (sid,cno,major)为主键? 21 武汉大学计算机学院
主 键 和 实 体 完 整 性
1.
完整性控制定义 数据的完整性是为了防止数据库中存 在不符合语义的数据,防止错误信息的 输入和输出,即所谓垃圾进垃圾出所造 成的无效操作和错误结果。
完整性约束条件 ---- 加在数据库数据 之上的语义约束条件。 完整性控制 ---- DBMS中检查数据是 否满足完整性条件的机制。
6
武汉大学计算机学院
12
武汉大学计算机学院
完整性约束条件分类
3.
完整性约束条件分类
动态列级约束 动态元组约束
对象状态 动态
动态关系约束
静态
静态列级约束
静态元组约束
静态关系约束
列
元组
关系
对象粒度
13
武汉大学计算机学院
完整性约束条件分类
3.
完整性约束条件分类
状态 粒度 列级 元组级 关系级
静态
列定义 类型 格式 值域 空值
23
SQL-89
SQL-92
Βιβλιοθήκη Baidu
SQL-99
武汉大学计算机学院
外键和
参照完整性
24
武汉大学计算机学院
外 键 和 参 照 完 整 性
1.
外键
设F是基本关系R的一个或一组属性,但不是R的键。 如果F与基本关系S的键KS 相对应,则称F是R的外键 (Foreign Key),并称R为参照关系(Referencing Relation ) , S 为 被 参 照 关 系 ( Referenced Relation)。关系R和S不一定是不同的关系。
3
武汉大学计算机学院
一.完整性控制的实现原理 二.完整性约束条件分类 三. 主键和实体完整性 四. 外键和参照完整性 五. 非过程性约束的实现 六. 过程性约束与触发器 七. 视图的定义、查询与更新 八. 视图的作用
4
武汉大学计算机学院
完整性控制的
实现原理
5
武汉大学计算机学院
完整性控制的实现原理
完整性控制的实现原理
2.
完整性控制子系统(过程性约束)
定义 完整性 约束 用户发出 更新操作 请求 完整性规则 登记 DD
检查
操作数据 DB DBMS的完整性子系统
7
武汉大学计算机学院
完整性控制的实现原理
3.
完整性控制的功能
定义功能
-- 提供定义完整性约束条件的机制
检查功能
-- 在一定的时机,检查用户操作请求是否违背完 整性约束条件
18
武汉大学计算机学院
主 键 和 实 体 完 整 性
4.
实体完整性规则
—— 表T中的任意行在主键列的取值都不允许为空
下面的理解中,哪个是正确的?
规则4.1 实体完整性规则 若属性A是基本关系R的主属性, 则属性A不能取空值。 ? 规则4.1 实体完整性规则 若属性A是基本关系R的主键属性, 则属性A不能取空值。 √ 规则4.1 实体完整性规则 任何主键属性都不能为空。 规则4.1 实体完整性规则 主键不能为空。
27
武汉大学计算机学院
外 键 和 参 照 完 整 性
4.
什么操作可能破坏参照完整性
被参照的关系 参照关系 外键
S
KS
R
KR F
S 插入元组 删除元组
R
修改元组
28
武汉大学计算机学院
外 键 和 参 照 完 整 性
4.
什么操作可能破坏参照完整性 对被参照表的删除和更新操作 对参照表的插入和更新操作
保证数据完整性功能
-- 如果发现用户操作请求使数据违背了完整性约 束,则采取一定的动作来保证数据的完整性。
8
武汉大学计算机学院
完整性控制的实现原理
4.
完整性约束的检测时机
立即执行约束 -- 在一条语句执行完后立即检查
延迟执行约束 -- 完整性检查延迟到整个事务执行结束后再进行, 检查正确方可提交。
(lname,fname)
telephone
(lname,fname,telephone)
包含超键的多 个列都是超键
(sid,fname)
16
武汉大学计算机学院
主 键 和 实 体 完 整 性
2.
键(候选键)
—— 给定一个表T,标题Head(T)=A1…An。 表T的一个键,有时也称为候选键,是具有 以下两个特征的一组属性的集合K=Ai1…Aik: