当前位置:
文档之家› 《数据库技术与设计》 第4章 关系数据库的模式设计
《数据库技术与设计》 第4章 关系数据库的模式设计
若键码多于—个,则选定其中之一作 为主键码。包含在任何一个键码中的属性, 叫做主属性,不包含在任何键码中的属性 称为非主属性。
最简单的情况,单个属性是键码;最 极端的情况,整个属性组是键码,称为全 码。
例2 考虑关系模式:人(身份证号,姓名,性 别,住址,出生年月),在此模式中存在以下函
数依赖关系: 身份证号→姓名,性别,住址,出生年月 (姓名,住址)→身份证号,性别,出生年月
例如:R(A,B,C),其关系r如下表 所示。判断下面陈述正确与否? ① 函数依赖 A → B在r中成立 ② 函数依赖 BC → A在r中成立 ③ 函数依赖 B → A在r中成立 ④ 函数依赖 A → BC在r中成立
根据例1的语义可得出SA的函数依赖: F={ SNO→SNAME,SNO→DEPT,
思考题:主键码与外键码提供了一个什么 样的手段?发挥了什么样的作用?
4.3 函数依赖的规则 4.3.1三个推理规则
1.分解/合并规则 (1)把一个函数依赖A1A2…AnBlB2…Bm用一组 函数依赖A1A2…AnBi(i=l,2,…,m)来代 替,这种转换称为“分解规则”(splitting rule)。
定义4.2 在R(U)中,如果X→Y,并且对于X的任 何一个真子集X’,都有X’ Y,则称Y对X完全 函数依赖,记作:
上述完全函数依赖定义可用下图表示:
在R(U)中,如果 X→Y,并且存在X的一个 真子集X0,使得X0→Y,则称Y对X部分函数依赖, 记作:
上述部分函数依赖定义可用下图表示:
4.2.3 传递函数依赖
例3 关系模式R(演奏者,作品,听众)。假设一 个演奏者可以演奏多个作品,某一作品可被多个 演奏者演奏,听众也可以欣赏不同演奏者的不同 作品,这个关系模式的键码为:(演奏者,作品, 听众),即全码。
思考题:
1、已知R(A, B, C, D), F={AB, B C, A D},求:
(1)R的键码; (2)AB,(A,B) C,AC分别是何种函数
现实世界的事实是:一个系有若干学 生,但一个学生只属于一个系;一个系只 有一名负责人;一个学生可以选修多门课 程,每门课程有若干学生选修;每个学生 学习每一门课程有一个成绩。
方案一:采用一个总的关系模式: SA(SNO,SNAME,DEPT,MN,CNO, CNAME,GRADE)
方案二:采用四个关系模式: S(SNO,SNAME,DEPT)、D(DEPT,MN)、 SC(SNO,CNO,GRADE)、C(CNO,CNAME) 比较起来,第一个方案可能带来下列问题: 1.数据冗余; 2. 修改异常或潜在的不一致性; 3. 插入异常; 4. 删除异常。
定义4.3 在 R(U)中,如果X→Y,(YX),Y X, Y→Z,则称Z对X传递函数依赖。记作
上述传递函数依赖定义可以用下图表示:
思考题:
在 SA(SNO , SNAME , DEPT , MN , CNO , CNAME,GRADE)中,有函数依赖集:
F={ SNO→SNAME,SNO→DEPT,DEPT→MN, CNO→CNAME,(SNO,CNO) →GRADE } 问题:下面的函数依赖表示正确吗?
(2)把一组函数依赖A1A2…AnBi(i=l,2,…, m)用一个依赖A1A2…AnBlB2…Bm来代替,这 种转换称为“合并规则“(combining rule)。
2.平凡依赖规则 在介绍平凡依赖规则之前,先介绍平凡函数
问题: 产生这种存储异常的根源何在?
第二方案在性能上优于第一方案。
7. 设有关系模式R(A,B,C),其关系r如右表所示:
4.2 函数依赖的概念 4.2.1 函数依赖的定义 定义4.1 设R(U)是属性集U上的关系模式, X,Y是U的子集。若对于R(U)的任意一个 可能的关系r,r中不可能存在两个元组在 X上的属性值相等,而在Y上的属性值不 等,则称“X函数确定Y”或“Y函数依赖 于X”,记作X→Y。
DEPT→MN, CNO→CNAME,(SNO, CNO) →GRADE } 下面介绍一些记号和术语: 1. X→Y,但 YX,则称X→Y是非平 凡的函数依赖。若不特别声明,我们总是 讨论非平凡的函数依赖。 2 、若X→Y,Y→X,则记作: XY 3.若Y不函数依赖于X,则记作:
XY
4.2.2 完全函数依赖和部分函数依赖
பைடு நூலகம்
4.2.4 关系模式的键码
定义4.4 已知 R<U,F>是属性集U上的 关系模式,F是属性集U上的一组数据依 赖。设 K为 R<U,F>中的属性或属性组 合,若KU-K且K的任何真子集都不能决 定U,则 K为R的键码。
问题:判断关系的键码归纳起来有哪二点?
包含键码的属性集称为超键码,它是 “键码的超集”的简称。
第4章关系数据库的模式设计 Chapter 4 Pattern Design of
Relation Database
本章导言
关系数据库的模式设计主要是 设计关系模式,而深入理解函数依 赖和键码的概念则是设计和分解关 系模式的基础。
本章要点
关系模式的存储异常和数据依赖 函数依赖的概念 函数依赖的规则 关系的规范化 模式分解的优劣 典型案例分析
4.1 关系模式的存储异常和数据依赖
关系数据库模式是若干关系模式的集 合。
所谓关系数据库的模式设计实际上 就是从多种可能的组合中选取一个合适 的或者说性能好的关系模式集合作为关 系数据库模式的问题。
例1 已知描述学生和系的一些情况,面临的对象 有:学号(SNO)、姓名(SNAME)、系名(DEPT)、 系负责人(MN)、课程号(CNO)、课程名 (CNAME)和成绩(GRADE)。
依赖? 2、已知S(A,B,C), F={(A,B)C), (A,C)B)}
,求: (1)S的键码; (2)S的主属性和非主属性。
定义4.5 关系模式R中属性或属性组X并非R 的键码,但X是另一个关系模式的键码,则 称X是R的外键码。
例如在SC(SNO,CNO,GRADE)中, SNO不是键码,但SNO是关系模式S(SNO, SNAME,DEPT)的键码,则SNO对关系模 式SC来说是外键码。