关系数据理论

  • 6.1 问题的提出
  • 6.2 规范化
    • 6.2.1 函数依赖
      • 1.函数依赖
      • 2.平凡函数依赖与非平凡函数依赖
      • 3.完全函数依赖与部分函数依赖
      • 4.传递函数依赖
    • 6.2.2 码
    • 6.2.3 范式
    • 6.2.4 2NF
    • 6.2.5 3NF
    • 6.2.6 BCNF
    • 6.2.7 多值依赖
    • 6.2.8 4NF
    • 6.2.9候选码的求解理论和算法
    • 6.2.10 规范化小结

6.1 问题的提出

逻辑设计(表结构)
1.针对具体问题,构造数据模式
2.工具:关系数据库的规范化理论
关系模式由五部分组成,是一个五元组:R(U, D, DOM, F)
R是符号化的元组语义
U为一组属性
D为属性组U中的属性所来自的域
DOM为属性到域的映射
F为属性组U上的一组数据依赖
D、DOM与模式设计关系不大,只用到三元组:R<U,F>

二维表每个分量必须是不可分开的数据项。
满足了这个条件的关系模式就属于:
第一范式(1NF)
数据依赖
是一个关系内部属性与属性之间的一种约束关系
1.通过属性间值的相等与否体现出来的数据间相互联系
2.是现实世界属性间相互联系的抽象
3.是数据内在的性质
4.是语义的体现
主要类型:
函数依赖(Functional Dependency,简记为FD)
多值依赖(Multi-Valued Dependency,简记为MVD)

6.2 规范化

6.2.1 函数依赖

1.函数依赖

设R(U)是一个属性集U上的关系模式,X和Y是U的子集。
若对于R(U)的任意一个可能的关系r,r 中不可能存在:
两个元组在X上的属性值相等,而在Y上的属性值不等,
则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y

2.平凡函数依赖与非平凡函数依赖

X→Y,但Y⊈X则称X→Y是非平凡的函数依赖。
X→Y,但Y⊆X 则称X→Y是平凡的函数依赖。

若X→Y,则X称为这个函数依赖的决定因素
若X→Y,Y→X,则记作X←→Y。
若Y不函数依赖于X,则记作X↛Y。

3.完全函数依赖与部分函数依赖

定义6.2
在R(U)中,如果X→Y,并且对于X的任何一个真子集X’, 都有 X’ ↛ Y, 则称Y对X 完全函数依赖,记作X→FYX \overset F \rightarrow YX→FY。
若X→Y,但Y不完全函数依赖于X,则称Y对X 部分函数依赖,记作X→PYX \overset P \rightarrow YX→PY
例 在关系SC(Sno, Cno, Grade)中,有:
Sno ↛Grade,Cno ↛ Grade,
因此:(Sno, Cno) → Grade
(Sno, Cno)→Sno
(Sno, Cno) →Cno

4.传递函数依赖

定义6.3
在R(U)中,如果X→Y(Y⊈X),Y↛X,Y→Z,Z⊈Y, 则称Z对X传递函数依赖(transitive functional dependency)。记为:X → Z。
注: 如果Y→X, 即X←→Y,则Z直接依赖于X,而不是传递函数依赖。

例 在关系Std(Sno, Sdept, Mname)中,有:
Sno → Sdept,Sdept → Mname,
Mname传递函数依赖于Sno

6.2.2 码

定义6.4
设K为R<U,F>中的属性或属性组合。
若K→FUK \overset F \rightarrow UK→FU。,则K称为R的一个候选码
如果U部分函数依赖于K,即K → U,则K称为超码 。
候选码是最小的超码,即K的任意真子集都不是候选码。
若关系模式R有多个候选码,则选定其中的一个做为主码
包含在任何一个候选码中的属性 ,称为主属性
不包含在任何码中的属性称为非主属性

整个属性组是码,称为全码
例6.2 S(Sno, Sdept, Sage),单个属性Sno是码
SC(Sno, Cno, Grade)中,(Sno, Cno)是码
例6.3 R(P,W,A)P:演奏者 W:作品 A:听众
一个演奏者可以演奏多个作品
某一作品可被多个演奏者演奏
听众可以欣赏不同演奏者的不同作品
码为(P,W,A),即All-Key

定义6.5
关系模式 R中属性或属性组X 并非 R的码,
但 X 是另一个关系模式的码,
则称 X 是R 的外部码也称外码
SC(Sno,Cno,Grade)中,Sno不是码
Sno是 S(Sno,Sdept,Sage)的码,则Sno是SC的外码
主码与外码一起提供了表示关系间联系的手段

6.2.3 范式

范式是符合某一种级别的关系模式的集合。
种类:
1.第一范式(1NF)
2.第二范式(2NF)
3.第三范式(3NF)
4.BC范式(BCNF)
5.第四范式(4NF)
6.第五范式(5NF)
各种范式之间存在联系:

某一关系模式R为第n范式,可简记为R∈nNF。
一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化。

6.2.4 2NF

定义6.6若关系模式R∈1NF,并且每一个非主属性完全函数依赖于任何一个候选码,则R∈2NF
例6.4 S-L-C(Sno,Sdept,Sloc,Cno,Grade), Sloc为学生的住处,并且每个系的学生住在同一个地方。S-L-C的码为(Sno,Cno)。
函数依赖有
(Sno,Cno)→FGrade(Sno,Cno) \overset F \rightarrow Grade(Sno,Cno)→FGrade
Sno→Sdept, (Sno,Cno)→PSdept(Sno,Cno) \overset P \rightarrow Sdept(Sno,Cno)→PSdept
Sno→Sloc, (Sno,Cno)→PSloc(Sno,Cno)\overset P \rightarrow Sloc(Sno,Cno)→PSloc
Sdept→Sloc

非主属性Sdept、Sloc并不完全依赖于码
关系模式S-L-C不属于2NF
一个关系模式不属于2NF,会产生插入异常、删除异常、修改复杂
解决方法
用投影分解把关系模式S-L-C分解成两个关系模式
SC(Sno,Cno,Grade)
S-L(Sno,Sdept,Sloc)

6.2.5 3NF

定义6.7设关系模式R<U,F>∈1NF,若R中不存在这样的码X、属性组Y及非主属性Z (Y⊇ Z), 使得X→Y,Y→Z成立,Y ↛ X不成立,
则称R<U,F> ∈ 3NF。
SC没有传递依赖,因此SC ∈ 3NF
S-L中Sno →Sdept( Sdept ↛ Sno), Sdept→Sloc,可得Sno → Sloc。
解决的办法是将S-L分解成
S-D(Sno,Sdept)∈ 3NF
D-L(Sdept,Sloc)∈ 3NF

6.2.6 BCNF

通常认为BCNF是修正的第三范式,有时也称为扩充的第三范式。
定义6.8 设关系模式R<U,F>∈1NF,若X →Y且Y ⊆ X时X必含有码,则R<U,F>∈BCNF。
换言之,在关系模式R<U,F>中,如果每一个决定属性集都包含候选码,则R∈BCNF。
例6.6关系模式S(Sno,Sname,Sdept,Sage),
假定Sname具有唯一性
S有两个候选码:Sno,Sname,非主属性:Sdept,Sage
非主属性不存在对码的传递依赖和部分依赖,所以S∈3NF。
S中决定因素Sno,Sname包含码,所以S也属于BCNF。
例6.7 关系模式SJP(S,J,P)中,S是学生,J表示 课程,P表示名次。每一个学生选修每门课程的成绩有一定的名次,每门课程中每一名次只有一
个学生(即没有并列名次)。
由语义可得到函数依赖: (S,J)→P;(J,P)→S
1.候选码:(S,J),(J,P)。没有非主属性。
2.没有非主属性对码传递依赖或部分依赖,所SJP∈3NF
3.除(S,J)与(J,P)以外没有其他决定因素,所以SJP∈BCNF
例6.8 关系模式STJ(S,T,J)中,S表示学生,T表示教师,J表示课程。每一教师只教一门课。每门课有若干教师,某一学生选定某门课,就对应一个固定的教师。
由语义可得到函数依赖:(S,J)→T;(S,T)→J;T→J
候选码:(S,J),(S,T);没有非主属性
因为没有非主属性对码传递依赖或部分依赖,STJ ∈ 3NF
因为T是决定因素,而T不包含码,所以STJ ∈ BCNF

6.2.7 多值依赖

定义6.9 设R(U)是属性集U上的一个关系模式。X,Y,Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关。
例 Teaching(C, T, B)
Teaching具有唯一候选码(C,T,B), 即全码。Teaching∈BCNF
对于C的每一个值,T有一组值与之对应,而不论B取何值。
因此T多值依赖于C,即C→→T。
平凡多值依赖和非平凡的多值依赖
若X→→Y,而Z=Ф,则称X→→Y为平凡的多值依赖
否则称X→→Y为非平凡的多值依赖

6.2.8 4NF

定义6.10 关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y ⊈ X),X都含有码,则R<U,F>∈4NF。
如果一个关系模式是4NF, 则必为BCNF。
在例6.10的WSC中,W →→S, W→→C,他们都是非平凡多值依赖。而W不是码,关系模式WSC的码是(W,S,C),即All-key,因此WSC ∈ 4NF。
可以把WSC分解成WS(W,S),WC(W,C), WS∈4NF,WC∈4NF。

6.2.9候选码的求解理论和算法

闭包(记作X+ )就是由一个属性直接或间接推导出的所有属性的集合。
例如:
f={a->b,b->c,a->d,e->f};
由a可直接得到b和d,间接得到c,
则a的闭包就是{a,b,c,d}
对于给定的关系R(A1,A2,…An)和函数依赖集F,可将其属性分为4类:
L类 仅出现在函数依赖左部的属性。
R 类 仅出现在函数依赖右部的属性。
N 类 在函数依赖左右两边均未出现的属性。
LR类 在函数依赖左右两边均出现的属性。
1.对于给定的关系模式R及其函数依赖集F,若X(X∈R)是L类属性,则X必为R的任一候选码的成员。
2.若X(X∈R)是L类和N类组成的属性集,且X+包含了R的全部属性;则X是R的唯一候选码。
例 1
设关系模式 U=(A , B , C , D ),
函数依赖集
F={D→ B , B → D , AD → B , AC → D},
求 U 的候 选码。
解:
(1) L=(A , C), R=空, LR=(B , D), N=空;
(2) L∪N=(A , C), 因为(AC) + = ACBD = U,
AC 是唯一候选码
例2
R<U,F>,U=(A,B,C,D,E,G),
F={AB→C,CD→E,E→A,A→G},
求候选码。

(1) L=(B,D), R=(G), LR=(A,C,E ), N=空;
(2) L∪N=(B,D), (BD)+=BD;
(3)
ABD:AB→C,CD→E, A→G,,所以(ABD)+ = ABDCEG = U
BDC:CD→E, E→A, A→G,所以(BDC)+ = BDCEAG = U
BDE:E→A, A→G, AB→C,,所以(BDE)+ = BDEAGC = U
候选码有3个分别是ABD、BCD和BDE
例3
设关系模式 U=(A , B , C , D , E , F ),
函数依赖集
F={A→BC , BC→A , BCD→EF , E→C},
求 R 的候选码。
解:
(1) L=(D), R=(F), LR=(A , B , C , E ), N=空;
(2) L∪N=(D) , D+=D;
(3)因为 (DA)+=DABCEF=U, (DB)+=DB ,(DC)+=DC, (DE)+=DEC, 所以 DA 是候选码;
(4)因为 (DBC)+=DBCAEF=U, (DBE)+=DBECAF=U, (DCE)+=DCE, 所以DBC、DBE 是候选码;
(5) U 的候选码有 DA、DBC、DBE
思考
因为DA是候选码, BC→A,所以DBC是候选码。
因为DBC是候选码,E→C,所以DBE是候选码

6.2.10 规范化小结

不能说规范化程度越高的关系模式就越好。
必须对现实世界的实际情况和用户应用需求作进一步分析,确定一个合适的、能够反映现实世界的模式。上面的规范化步骤可以在其中任何一步终止。

SQL Server 数据库实验课第九周——第六章总结相关推荐

  1. SQL Server 数据库实验课第七周——授权:授予与收回

    目录 4.2.3 自主存取控制方法 4.2.4 授权:授予与收回 1.GRANT 2.REVOKE 4.2.5 数据库角色 4.2.3 自主存取控制方法 通过 SQL 的GRANT 语句和REVOKE ...

  2. 如何使用SQL Server数据库实验助手(DEA)工具

    介绍 (Introduction) This is my second article about Database Experimentation Assistant (DEA). Please r ...

  3. 如何下载和安装SQL Server数据库实验助手(DEA)

    介绍 (Introduction) The Database Experimentation Assistant (DEA) is a new Experimental solution provid ...

  4. 如何下载和安装SQL Server数据库实验助手(DEA v2.0)

    介绍 (Introduction) I had the opportunity to work and perform various tests with Database Experimentat ...

  5. 合肥工业大学—SQL Server数据库实验十:用户及其权限管理

    用户及其权限管理 1. 创建登录名Mylog及密码 2. 创建用户user2关联登录名 3. 创建角色role1 4. 对用户user2及角色role1授权 5. 验证用户授权 6. 收回用户权限 1 ...

  6. 合肥工业大学—SQL Server数据库实验四:数据库的分离和附加

    数据库的分离和附加 1. 数据库分离 2. 数据库附加 1. 数据库分离 当SQL Server服务器运行时,该服务器上所有的数据库自动处于运行状态,而运行中的数据库文件是无法进行数据库文件的拷贝的. ...

  7. 《Microsoft Sql server 2008 Internals》读书笔记--第六章Indexes:Internals and Management(3)

    <Microsoft Sql server 2008 Internals>读书笔记订阅地址: http://www.cnblogs.com/downmoon/category/230397 ...

  8. 合肥工业大学—SQL Server数据库实验八:使用聚集函数的SELECT语句

    在数据库EDUC中用SQL语句实现如下查询: 1) 查询学生的总人数 -- 查询学生的总人数 select count(*) from student select count(1) from stu ...

  9. 合肥工业大学—SQL Server数据库实验三:SQL语句创建和删除基本表

    SQL语句创建和删除基本表 1. 编写6个基本表 2. 修改基本表结构,完整性约束条件 3. 用Drop table 语句删除基本表 1. 编写6个基本表 设有简单教学管理的6个关系模式如下: 系(系 ...

最新文章

  1. 分布式存储 Ceph 介绍及原理架构分享--云平台技术栈系列01
  2. 国内好用的5款软件测试管理工具
  3. 当超级智能崛起时……
  4. perl5 第十章 格式化输出
  5. Verilog功能模块——AXI4-Lite协议主机-连续区间写-使用FIFO
  6. Redis 注册为 widows 服务
  7. 电脑技巧:C盘爆满该如何清理,实用的清理方案,小白必备
  8. 为什么选择SpringBoot?
  9. 三国树状信息展示 winform
  10. 【LeetCode】剑指 Offer 36. 二叉搜索树与双向链表
  11. poj 2096 Collecting Bugs 概率dp入门题
  12. php httputils,Android 自定义网络加载工具类 HttpURLConnectionUtils
  13. linux上c语言贪吃蛇,在linux下用C语言编写贪吃蛇小游戏-Go语言中文社区
  14. 在上海创业的日子之寻找办公室
  15. oracle执行计划相关
  16. 只用 Markdown 就写出好看的简历,在线简历应用闪亮登场!
  17. 【文件监控】之一:理解 ReadDirectoryChangesW part1
  18. 阴阳师双小小黑通关真八岐大蛇攻略——附式神配置和打法
  19. Win PE 启动盘制作
  20. 文献阅读-10X单细胞揭示肿瘤浸润性T细胞的泛癌单细胞图谱

热门文章

  1. excel中sheet不见了,怎么办
  2. ARM嵌入式主板之路
  3. 水果fl studio21最新中文注册版安装教程
  4. keepalived脑裂现象
  5. 2008.05.19 默哀祈福
  6. with recompile
  7. 薛兆丰经济学思维研究:权利在真实生活中的硬度
  8. 包过滤防火墙配置举例
  9. Linux安装教程以及开发板预学习
  10. oracle 取任意一条数据,oracle随机取一条数据详解