高级数据库技术 (3)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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:
相关文档
最新文档