Database Systems Design Part III : Normalization

Slides:



Advertisements
Similar presentations
2010 年 6 月课件制作人:王亚楠 1 模块 2 项目开发概论 教学课件 年 6 月课件制作人:王亚楠 2 目录 目标 了解:数据库技术的基本概念与结构 理解:数据模型的分类与结构组成 掌握:关系数据库及 SQL 的基本理论 知识 掌握:数据库设计的方法与步骤 内容 2.1 数据库技术基础.
Advertisements

命题探究 从地形、气候、自然资源、自然灾害等地理要 素对农业、工业、交通运输和聚落的影响方面正确 认识人地关系,以谋求人类与自然环境和谐发展 第四章 自然环境对人类活动的影响 考纲解读 1. 地表形态对聚落及交通线路分布的影响 2. 全球气候变化对人类活动的影响 3. 自然资源对人类生存与发展的意义.
LOGO 第 6 章 数据库规范化设计 孙焘. 重点: 三个范式的基本概念 1 概念模型 2 物理模型 3 多 framePowerDesigner 工具的使用页面设计 4.
FD班座谈会 -结合学校目标 找准自己位置-
植科院57期党校党课讨论安排 植科院学生党建工作办公室.
職務法庭與 法官退場機制 行政訴訟及懲戒廳報告
系統分析與設計 第九章 資料設計.
短歌行.
第8章 資料設計.
An Introduction to Database System
第六章 数据库设计.
An Introduction to Database Systems
数据库系统概论 An Introduction to Database Systems
Informational School,Guangzhou University Spring 2005
大 播 海 直.
氧气的制法 装置 原理 练习 随堂检测.
情景导入 今年国庆升旗仪式结束后,留下5顿垃圾!.
第2章 数据模型 2.1 实体联系模型 2.2 关系模型 2.3 面向对象的数据模型 习 题 2.
第3章 SQL语言初步 2017/3/14.
第七章:数据库设计理论基础.
国家“十一五”规划教材 数据库原理与应用教程(第3版).
法國大革命                                                                            
清仓处理 跳楼价 满200返160 5折酬宾.
資料庫設計 Database Design.
第六章 結構化分析與設計 ─資料塑模.
我用灵动的声音、奇异的形体和清透的心灵向你诉说,不知道你是否读懂了我———雨的心曲?
软件设计师培训.
第六章 数据库设计.
Principles and Applications of the Database
An Introduction to Database System
软件工程 咸阳师范学院 信息工程学院.
第4章 数据库技术及应用 软件开发技术基础 计算机教学实验中心 2006.
课标教材下教研工作的 实践与思考 山东临沂市教育科学研究中心 郭允远.
数据原理复习概要.
第 4 章 CRM資料倉儲.
資料庫系統 Database Systems
資料庫系統 Database Systems
課程名稱:資料庫系統 授課老師:李春雄 博士
課程名稱:資料庫系統 授課老師:李春雄 博士
分布式数据库系统及其应用.
第7章 關聯式資料庫的正規化 7-1 正規化的基礎 7-2 功能相依 7-3 第一階到第三階正規化型式 7-4 多重值相依與第四階正規化型式
二.資料庫系統建立與管理 Access 資料庫:windows下的單機資料庫 Access 操作 Mysql資料庫介紹.
Microsoft SQL Server 2000 李金双.
資料表正規化.
第 2 章 規劃關聯式資料庫.
正規化 Normalization.
PHP與MySQL 入門學習指南 凱文瑞克 著 第 21 章 資料庫管理概論.
CH06 正規化概述.
Chapter 3 正規化與各種合併.
資料庫簡介 郭士煒 助教.
表格正規化簡介 講授大綱: 第一正規化 資料表的切割 第二正規化 第三正規化 Boyce/Codd正規化 第四正規化 第五正規化
《第二組》 組長/謝佳馨 組員/陳大為、葉容政、張智陪
第4章 關聯式資料庫模型 4-1 關聯式資料庫模型的基礎 4-2 關聯式資料庫模型的資料結構 4-3 關聯式資料庫模型的完整性限制條件
單元3:軟體設計 3-1實體關係圖 Ch 08 System models.
第一章 质点的运动 §1 质点 参考系 运动表式 一.质点 忽略物体形状和大小,保留其质量的物理点模型。 .二. 参照系 坐标系
國立東華大學試題 系所:資訊管理學系 科目:資料庫管理 第1頁/共4頁
建国以来,大陆对台政策 金亚丽 周莎 黄运娜.
Dept. of Information Management OCIT February, 2002
第6章 資料庫設計與實體關聯模型 6-1 資料庫設計的基礎 6-2 實體關聯模型 6-3 建立實體關聯圖 6-4 實體關聯圖的常見錯誤
第13章 設計模型 13-1 再談物件導向設計 13-2 建立互動圖 13-3 建立狀態機圖 13-4 設計模型的類別圖
ER Model.
資料庫管理系統 緒 論.
行政管理者 的素质要求 中南大学湘雅医院 李远斌
從 ER 到 Logical Schema ──兼談Schema Integration
第10节 实验:测定电源的电动势和内阻.
第 8 章 計量與質性預測變數之迴歸模型.
第3章 关系数据库 内容提要 关系模型的数据结构 关系模型的常用术语 关系数据库的完整性概念 数据库的关系运算 函数依赖的定义
第三章 系統與資料庫檔案設計.
百雞問題 製作者:張美玲 資料來源:數學誕生的故事—凡異出版社.
电 商 数 据 分 析 汇报人:冯方慧 第一组:杜孟泽、李诗语、金艳平、冯方慧、张梦洁 CDA数据分析就业班
Presentation transcript:

Database Systems Design Part III : Normalization CSEE in Hunan University Jin-Min Yang 2016.06

Database Design Flow Diagram Investigation, analysis, research Modeling (identify, deduce refine, abstract) , Individual Part 1 ER-diagram Requirements Individual Part n View Stored procedure Transformation User view 1 Rational Relations Relations User view n Normalization Implement in particular DBMS

期望的关系模式特性 设计得好的关系模式具有如下3个重要的属性: 1) 一个关系是由一组逻辑上相关联的属性构成,也就是说,一 个关系(relation)的属性是指一个实体(Entity)或者一个 关系(Relationship)的属性. 2) 无损联接性是指将一个关系分解成2个或多个关系之后,原有 的关系能够通过做自然联接来复原,这一点是从关系实例来讲 的,也就是从元组来说的,其具体情形看ER建模中的裂口陷进 和后面的5范式。 3) 依赖保留性指将一个关系分解成2个或多个关系,分解前的函 数依赖性在分解之后仍然存在,其具体情况看后面的BC范式。

函数依赖理论及其在数据库设计合理性验证中的应用 已知: 对于一个关系R, 它的属性集合A= (A1, A2, …, An), 有函数依赖集F = {X1 → Y1, …, Xj → Yj },其中Xk  A,Yk  A, 1 k  i; 应用: 判断函数依赖Xt→ Yt是否成立; 判断Xt是否是R的候选键; 计算F的闭包F+,推理出其隐含的所有其它函数依赖(放大) 构建F的最小集,也即特征集(精简);. 判断两个函数依赖集F和E是否等价;

解决问题的关键策略 对于属性集合 X, Xk  A, 在函数依赖集F下的X的闭包X+ : 是指使用F能确定的所有属性的集合; 必须掌握的内容: X+的计算; F+的计算; Let X+ = X Repeat 如果F中有某个FD,它的左边是X+的子集. 添加该FD 的右边的属性到 X+. Until ( X+ 不发生改变 or X+ 包含了R得所有属性)

判断属性集Xk是否是R的候选键的方法 对于关系R,它的属性集合A,函数依赖集F,对于属性集合 Xk, Xk  A: 如果 Xk+ = A;然后计算Xk的所有真子集的闭包,如果它们都不等于A;那么Xk是R的候选键,否则不是;

两个函数依赖集F和E 的等价性 对于两个函数依赖集F和E,如果E中的每一个函数依赖都在F+中,那么就说F覆盖E; F覆盖E 的判定方法: 对E中的每一个函数依赖X → Y ,基于F,计算X+,然后检查Y是否在X+中; 如果全部成立,那么F覆盖E; 如果 F覆盖E, F也覆盖E,那么就说E和F等价( equivalent); F和E等价,那么E+ = F+.

函数依赖集的最小集(缩减函数依赖,减炼的过程) 对函数依赖集F,如果满足如下三个条件,那么它就是最小集: F中的每一个函数依赖X → Y,Y只含一个属性;. F的任意真子集,都与F不等价; 对F中的任意函数依赖X → A,设X的真子集Y,对于F,当用Y → A替换X → A后得到的函数依赖集E,F和E不等价; 对于一个函数依赖集,它的最小集,可以说是它的一个特征集; 对于一个函数依赖集,它的最小集可能有多个,也即并不唯一;

完全函数依赖(Full FD) 定义: 对于函数依赖A → B,如果从A中去掉任一个属性,依赖关系不再成立,那么 A → B是一个完全函数依赖。 也说,B完全函数依赖于A; 如果从A中去掉任一个属性,依赖关系依然成立,那么就说 B部分函数依赖于A; 例子: eno → ename (完全FD) eno, ename → salary, title (部分 FD, 只依赖eno) eno, pno → hours, resp (完全 FD)

作业 13.16-13.20; 其中13.19中有关4NF部分的判定基于扇子陷进来思考;

范式(Normal Forms) 就关系(Relation)的模式(Schema)合理性而言,可从5个层面来检 测关系是否会存在有潜在的冗余和更新异常。当达到第5个层面时, 则不会有潜在的冗余和更新异常. 共有6个范式: 1NF, 2NF, 3NF, BCNF ( Boyce-Codd) , 4NF, 5NF; 特征:6个范式中,后面范式比前面范式更严格; 比如, 3NF 比 2NF更严格,它对关系(Relation)的模式(Schema), 相对于2NF,能够更进一步去除冗余和操作异常。

第一范式(First Normal Form )(1NF) 一个关系,对它的任意元组,其所有属性的取值都是原子型 (atomic)时,就说它满足第一范式。 也就是说,满足1NF的关系,它的任意元组的任意属性的取值不 能是多个值的集合(即为多值属性),或者是元组的集合; 在关系型DBMS中,1NF 是基本要求. 不满足1NF的关系是一个不规范(unnormalized)的关系.

使一个不满足1NF的关系满足1NF的处理方法 1) 拆分(Splitting)法: 把一个不满足1NF的关系R拆分成2个关系R1和R2: 关系R1:由R中满足1NF的属性构成; 关系R2:由R1的主键属性和R中不满足1NF的属性构成,重新确立R2的主键; R1的主键肯定是R2的主键的构成部分,对否? 为什么R2中要包含R1的主键属性? 2) 膨胀(Flattening )方法:把一行扩展成多行,重新确立关系的 主键.

拆分法 注意: 拆分后的表,要重新确立其主键! Analyst ENo PNo Resp Duration E1 P1 Manager 12 EName PNo Resp Duration E1 J. Doe P1 Manager 12 E2 M. Smith P2 Analyst 24 6 E3 A. Lee P3 P4 Consultant Engineer 10 48 E4 J. Miller Programmer 18 E5 B. Casey E6 L. Chu E7 R. Davis 36 拆分法 注意: 拆分后的表,要重新确立其主键! ENo PNo Resp Duration E1 P1 Manager 12 E2 Analyst 24 P2 6 E3 P3 Consultant 10 P4 Engineer 48 E4 Programmer 18 E5 E6 E7 36 ENo EName E1 J. Doe E2 M. Smith E3 A. Lee E4 J. Miller E5 B. Casey E6 L. Chu E7 R. Davis

膨胀法 膨胀后的表,要重新确立其主键! ENo EName PNo Resp Duration E1 J. Doe P1 Manager 12 E2 M. Smith Analyst 24 P2 6 E3 A. Lee P3 Consultant 10 P4 Engineer 48 E4 J. Miller Programmer 18 E5 B. Casey E6 L. Chu E7 R. Davis 36

第二范式( Second Normal Form) (2NF) 一个关系R满足2NF,当且仅当: 满足1NF; 它的所有非主键属性都完全函数依赖于它的主键;

Second Normal Form (2NF) 对于不满足2NF的关系R,进行拆分: 对 违背2NF的FD X → Y : 计算 X+; 将关系R 拆分成: R1 = X+ 和 R2 = (R - X+) U X 注意: X 是R的主键属性集的真子集.

Third Normal Form (3NF) 3NF是基于传递依赖概念而来的. 传递依赖:是指函数依赖:A → C 是基于 FD: A → B 和FD: B → C推理出来的. 一个关系R满足3NF,当且仅当: 满足2NF; 不存在非主键属性传递依赖于它的主键;

Third Normal Form (3NF) 处理方法:按照去除传递依赖的策略是拆分关系R: 对于R中的所有传递依赖X → Y,构建新关系Ri(X,Y); 去除R中的属性集Y;

更完备的2NF和3NF 前面的 2NF and 3NF 仅就关系的主键而言,其实还可以考虑所有的候选键( candidate keys) 对关系R,满足1NF;它的任意候选键X,其它不在X中的属性都完全函数依赖于X;. 完备的3NF: 对关系R,满足2NF;它的任意候选键X,对其它不在X中的属性,不存在传递依赖于X情况;

更完备的3NF例子 . Emp relation: fd1 fd2 根据3NF的定义,此例不满足3NF,原因是SSN属性不是主键属性; ENo EName BDate Title Salary SuperNo DNo SSN fd1 fd2 根据3NF的定义,此例不满足3NF,原因是SSN属性不是主键属性; 但是满足完备的3NF,因为SSN 属性是候选键; .

回答问题 关系R(A, B, C, D, E, F, G, H, I, J) , 函数依赖集F= { A,B → C ; A → D, E ; B → F ; F → G,H ; D → I,J } 求出R的候选键; 把R分解成第二范式和第三范式.

Boyce-Codd Normal Form (BCNF) 一个关系满足 BCNF,当且仅当:任一确定因子(determinant)都是候选键; 对关系R, FD: X → Y ,那么X就为确定因子; 3NF 和 BCNF 的差异在于: 对FD: X → Y,如果Y是一个主键的成员属性,并且X不是候选键,3NF对该情况是允许的; BCNF 要求X是一个候选键; BCNF 比 3NF 更严格.

不满足BCNF的基本条件 满足3NF而不满足BCNF的情况非常少见; 满足3NF而不满足BCNF的基本条件是: 至少有两个或以上的组合性候选键; 候选键之间存在交集,即它们之间有公共属性。

BCNF versus 3NF 分解到BCNF时,不能保证函数依赖性保留(即dependency preservation 不能保证),即对FD: X → Y,BCNF分解后可能会出现X,Y分别位于不同的关系中,即失去了函数依赖约束; 而对于3NF,就不会出现该情况,它能保持住函数依赖性(dependency preservation) ; 满足3NF而不满足BCNF的情况非常非常少见; 就是存在,也可以不考虑;

无损联接依赖Lossless-join Dependency   无损联接依赖Lossless-join Dependency 无损联接属性是指,当分解一个关系后,原有的关系能够通过联接运算复原; 无损联接依赖是指,当分解一个关系后,原有的关系能够通过联接运算复原,不会导致多余的元组(即行)出现; 要保障无损联接属性,有时有必要把一个关系分解成两个以上的关系.

4NF and 5NF in Practice In practice, 4NF and especially 5NF are rare. 在ER建模中,注意了Fan trap, 就能满足4NF; 在ER建模中,注意了Chasm trap, 就能满足5NF;

4NF 答疑 老师,在书上第四范式给出的例子中 BranchStaffOwner(branchNo, sName, cName)中的主键是哪一个 呢?该关系有多值依赖如下:brachNo->>sName, brachNo- >>oName, 如果是这样的,那么它的主键应该就是branchNo啊? 可是看书上它的关系表觉得应该又是(sName, cName).而它满足 第四范式后就变成了BranchStaff(branchNo, sName)和 BranchOwner(branchNO, oName)同样看其关系表,主键也不是 branchNo, 对应的应该分别是sName,oName。这是为什么呢?求 解

答疑解答 brachNo->>sName是一对多关系, 即一个分支机构有多个员工, brachNo->>oName也是一对多关系, 即一个分支机构接待有多个房 东。而实际业务需求中,要求关注员工和他负责接待的房东。刚 好满足扇子陷阱,因此拆分成BranchStaff(branchNo, sName)和 BranchOwner(branchNO, oName)后还不够,没有精准表达 (sName, oName)之间的关系,即哪个员工负责接待哪个房东,因 此还需要StaffOwner(sName, cName)关系。当然这里有一个假设, 也就是branchNO, sName, oName分别充当了实体分支机构,员工, 房东的主键。

答疑解答 在这个多值依赖branchNo->>sName中branchNo是键吗? 答: 键是就关系而言的,基本准则就是关系中的元组具有唯 一性,唯一性又要根据语义来判断,对 BranchStaffOwner(branchNo,sName,cName)而言,键自 然是(branchNo,sName,cName);

范式和ER建模 规范化和ER建模是两个独立的概念 对一个已经上线的,设计得很差的数据库进行改造时,通常使用范式化理论来检测原有数据库,把它改造成合理的数据库;