表格正規化簡介 講授大綱: 第一正規化 資料表的切割 第二正規化 第三正規化 Boyce/Codd正規化 第四正規化 第五正規化

Slides:



Advertisements
Similar presentations
湘雅路街道 刘韬 2014 年 4 月 微时代 · 新挑战. 什么是微时代 : 微时代即以微博、微信 等作为传播媒介代表,以短 小精炼作为文化传播特征的 时代。 开福区湘雅路街道工委 微博:微型博客的简称,即一句话 博客,是一种通过关注机制分享简 短实时信息的广播式的社交网络平 台。 微信:是腾讯公司于.
Advertisements

2010 年 6 月课件制作人:王亚楠 1 模块 2 项目开发概论 教学课件 年 6 月课件制作人:王亚楠 2 目录 目标 了解:数据库技术的基本概念与结构 理解:数据模型的分类与结构组成 掌握:关系数据库及 SQL 的基本理论 知识 掌握:数据库设计的方法与步骤 内容 2.1 数据库技术基础.
Visual FoxPro 教程 淮海工学院计算机工程学院 巫晓琳.
自然與生活科技領域 國中1上 第2單元 生命的維持(一) 生物體的協調 6-1 神經系統 6-2 內分泌系統.
系統分析與設計 第九章 資料設計.
第8章 資料設計.
An Introduction to Database System
第六章 数据库设计.
歷史建築清水國小宿舍群修復工程 施工說明會
数据库系统概论 An Introduction to Database Systems
一、平面点集 定义: x、y ---自变量,u ---因变量. 点集 E ---定义域, --- 值域.
大 播 海 直.
七(7)中队读书节 韩茜、蒋霁制作.
第2章 数据模型 2.1 实体联系模型 2.2 关系模型 2.3 面向对象的数据模型 习 题 2.
第七章:数据库设计理论基础.
Principles and Applications of the Database
管理学基本知识.
滁州学院首届微课程教学设计竞赛 课程名称:高等数学 主讲人:胡贝贝 数学与金融学院.
資料庫設計 Database Design.
第六章 結構化分析與設計 ─資料塑模.
An Introduction to Database System
第4章 数据库技术及应用 软件开发技术基础 计算机教学实验中心 2006.
拾貳、 教育行政 一、教育行政的意義 教育行政,可視為國家對教育事務的管理 ,以增進教育效果。 教育行政,乃是一利用有限資源在教育參
課程銜接 九年一貫暫行綱要( )  九年一貫課程綱要( ) 國立台南大學數學教育系 謝 堅.
2.4 二元一次方程组的应用(1).
前不久看到了这样一则报道:某个大学校园里,一个大学生出寝室要给室友留一张字条,告诉他钥匙放在哪里。可是“钥匙”两个字他不会写,就问了其他寝室的同学,问了好几个,谁也不会写,没办法,只好用“KEY”来代替了。 请大家就此事发表一下自己看法。
Chapter 5 Relational Algebra
An Introduction to Database System An Introduction to Database System
利用共同供應契約 辦理大量訂購流程說明.
資料庫系統 Database Systems
資料庫系統 Database Systems
課程名稱:資料庫系統 授課老師:李春雄 博士
課程名稱:資料庫系統 授課老師:李春雄 博士
課程名稱:資料庫系統 授課老師:李春雄 博士
第7章 關聯式資料庫的正規化 7-1 正規化的基礎 7-2 功能相依 7-3 第一階到第三階正規化型式 7-4 多重值相依與第四階正規化型式
Advanced Database Management System
Microsoft SQL Server 2000 李金双.
資料表正規化.
第 2 章 規劃關聯式資料庫.
彰化縣政府補助辦理網頁設計資料庫應用班 資料庫簡介 建國技術學院資管系 饒瑞佶.
正規化 Normalization.
PHP與MySQL 入門學習指南 凱文瑞克 著 第 21 章 資料庫管理概論.
CH06 正規化概述.
Chapter 3 正規化與各種合併.
資料庫簡介 郭士煒 助教.
課程名稱:資料庫系統 授課老師:李春雄 博士
課程名稱:資料庫系統 授課老師:李春雄 博士
第4章 關聯式資料庫模型 4-1 關聯式資料庫模型的基礎 4-2 關聯式資料庫模型的資料結構 4-3 關聯式資料庫模型的完整性限制條件
單元3:軟體設計 3-1實體關係圖 Ch 08 System models.
第1章 SQL Server 2005 关系数据库简介.
AnQing Teachers College Department of Computer & Information
第五章 关系数据理论 关系模型有严格的数学理论基础,也是目前应用最广泛的数据模型,关系规范化是指导数据库设计的重要理论。一个好的关系数据库是应该既可以供人们方便地获取信息,而又不产生过多的不必要的重复存储问题。可以说,规范化理论是数据模型优化的理论基础,对其他数据库的逻辑设计同样具有理论上的意义。 2018年12月6日7时18分.
資料庫系統導論.
Database Systems Design Part III : Normalization
第二章 實體關係模式:基本概念 目的 何謂實體關係模式和實體關係圖(ERD) 實體型態 關係型態 二元關係型態 弱實體型態 遞迴關係型態
第二章 實體關係模式:基本概念 目的 何謂實體關係模式和實體關係圖(ERD) 實體型態 關係型態 二元關係型態 弱實體型態 遞迴關係型態
國立東華大學試題 系所:資訊管理學系 科目:資料庫管理 第1頁/共4頁
資料庫概論 許明宗.
Dept. of Information Management OCIT February, 2002
江西财经大学《数据库应用》精品课程组 2011年 Comments are welcome!
第 2 章 規劃關聯式資料庫.
資料庫管理系統 緒 論.
從 ER 到 Logical Schema ──兼談Schema Integration
資料庫管理 Database Managent Ex.1-2 課本範例練習
第二章 数控机床中常用的传感器 旋转编码器 霍尔传感器 旋转变压器 感应同步器 光栅位移传感器 磁栅位移传感器.
兒童及少年保護、 家庭暴力及性侵害事件、 高風險家庭 宣導與通報
复古潮流PPT模板.
南京市2009—2010学年度第一学期期末调研测试地理试卷讲评
第3章 关系数据库 内容提要 关系模型的数据结构 关系模型的常用术语 关系数据库的完整性概念 数据库的关系运算 函数依赖的定义
用加減消去法解一元二次聯立方程式 台北縣立中山國中 第二團隊.
Presentation transcript:

表格正規化簡介 講授大綱: 第一正規化 資料表的切割 第二正規化 第三正規化 Boyce/Codd正規化 第四正規化 第五正規化 2018/11/28

第一正規化(1/2) 缺點:各個欄位內的資料數不一致的情形,使資料庫系統很難設計。 表11.1 學生成績資料表 學生姓名 學號 系別 年級 課程名稱 課程代號 開課老師 老師職稱 學分 成績 李景維 M9903 資管系 二 資訊管理 IM01 李天行 教授 4 Null 管理數學 IM02 趙文華 副教授 3 85 吳致賢 B9901 企管系 BM01 BM02 2 統計學 BM03 羅曉梅 平行計算 EE01 王立詳 助理教授 張志中 M0300 一 93 缺點:各個欄位內的資料數不一致的情形,使資料庫系統很難設計。 2018/11/28

第一正規化(2/3) 關聯式資料庫(relational database)要求各個資料表皆須符合第一正規化(first normal form, 簡稱1NF),如下: 第一正規化:每一個欄位只准有一個值。 表11.2每個橫行在資料庫的術語中叫做一個tuple。 表11.2的資料表中各欄位都只有一個值,有時候有些欄位的資料還沒有決定,此時欄位的內容可以什麼資料都沒有,即Null。 對欄位值的規定謂之欄位值真確性(referential integrity):欄位內沒有值時可以Null代之,若有值時,則必須在定義的範圍之內。 關聯式資料庫要求每個資料表都要有一個主鍵(primary key),用來識別每一個tuple。 主鍵可以是資料表中的某一個欄位,也可以由幾個欄位組成。 若主鍵是由幾個欄位組成時,主鍵中不可以有多餘的欄位。 關聯式資料庫對主鍵欄位另外有個要求,即實體真確性(entity integrity):組成主鍵的任何欄位值,都不可以是Null。 2018/11/28

第一正規化(3/3) 表11.2 學生成績資料表 學生姓名 學號 系別 年級 課程名稱 課程代號 開課老師 老師職稱 學分 成績 李景維 M9903 資管系 二 資訊管理 IM01 李天行 教授 4 Null 管理數學 IM02 趙文華 副教授 3 85 吳致賢 B9901 企管系 BM01 BM02 2 統計學 BM03 羅曉梅 平行計算 EE01 王立詳 助理教授 張志中 M0300 一 93 2018/11/28

新增資料的問題 如果李景維想修企管系的統計學,則所有個人資料:學生姓名、學號、系別、年級,雖然資料庫系統中已經有這些資料,但是仍然要重新鍵入一遍,要重複鍵入許多資料。 又如果資管系要新開一門網頁設計的課,也無法加進學生成績資料表中。此資料表的主鍵是由學號及課程代號組成,則加進網頁設計這門課後,主鍵中的學號欄位是Null,就違背了關聯式資料庫entity integrity的規定,即主鍵中有未決定的值。 表11.3 新增資料的問題 學生姓名 學號 系別 年級 課程名稱 課程代號 開課老師 老師職稱 學分 成績 李景維 M9903 資管系 二 資訊管理 IM01 李天行 教授 4 Null 管理數學 IM02 趙文華 副教授 3 85 ? 網頁設計 IM03 王有禮 2018/11/28

刪除資料的問題 如果吳致賢及張志中都退選了統計學這門課,則這兩位學生選修這門課的資料會從資料表中刪除,而統計學這門課的課程代號、開課老師、學分數也都跟著被刪除了。 所以表11.2的設計會造成資料庫中資料不完整的問題。 表11.5 刪除資料的問題 學生姓名 學號 系別 年級 課程名稱 課程代號 開課老師 老師職稱 學分 成績 李景維 M9903 資管系 二 資訊管理 IM01 李天行 教授 4 Null 管理數學 IM02 趙文華 副教授 3 85 吳致賢 M9901 企管系 BM01 BM02 2 平行計算 EE01 王立詳 助理教授 張志中 M0300 一 93 2018/11/28

修改資料的問題 如果趙文華教授因故不能來上課,而請王有禮教授上管理數學,請羅曉梅教授上資訊管理,則資料庫中所有相關資料都要修正過。如果有50位學生修管理數學,有80位學生修資訊管理,則這130個tuples都要修正,頗浪費時間。 2018/11/28

資料表的切割 表11.6 課程資料表 課程名稱 課程代號 開課老師 老師職稱 學分 資訊管理 IM01 李天行 教授 4 管理數學 IM02 趙文華 副教授 3 BM01 BM02 2 統計學 BM03 羅曉梅 平行計算 EE01 王立詳 助理教授 表11.8 成績資料表 學號 課程代號 成績 M9903 IM01 Null IM02 85 B9901 BM01 BM02 BM03 EE01 M0300 93 表11.7 學生資料表 學生姓名 學號 系別 年級 李景維 M9903 資管系 二 吳致賢 B9901 企管系 張志中 M0300 一 2018/11/28

只有一個資料表(1/3) 解決了只有一個資料表的新增問題 三個資料表來設計學生成績資料,避免了資料重複的問題。如果要新增學生陳道航的資料,雖然他還沒有選課,仍然可以將他的基本資料加進學生資料表中。 表11.9 學生資料表 學生姓名 學號 系別 年級 李景維 M9903 資管系 二 吳致賢 B9901 企管系 張志中 M0300 一 陳道航 I9107 工管系 2018/11/28

只有一個資料表(2/3) 解決了只有一個資料表的刪除問題 在表11.5中,因為吳致賢和張志中都退選了統計學這門課,統計學這門課的基本資料,也跟著被刪除了,在資料表中再也找不到這門課的基本資料。但是在分割的資料表中,只要刪除表11.8中的第5個和第9個tuples,成為表11.10,就不會有吳致賢和張志中修統計學的資料,而統計學這門課的基本資料仍然好好的在表11.6中。 表11.10 成績資料表 學號 課程代號 成績 M9903 IM01 Null IM02 85 B9901 BM01 BM02 EE01 B0300 93 2018/11/28

只有一個資料表(3/3) 解決了只有一個資料表的修改問題 在表11.2中,趙文華教授因故不能來上課,而請王有禮教授上管理數學,請羅曉梅教授上資訊管理。因為修改資料表時,牽扯到許多tuples,很浪費處理的時間。如果有單獨的課程資料表,這件工作會變得很輕鬆。只要在表11.6課程資料表中,將課程代號為IM02的管理數學老師換成王有禮,課程代號為BM01的資訊管理老師換成羅曉梅,只要修改兩筆資料就完成了,如表11.6中箭頭所示。相對於前面修改130筆資料,不是輕鬆愉快? 2018/11/28

三個資料表的查詢問題 三個資料表的查詢問題 在只有一個資料表的設計中,查詢是個很簡單的問題。例如在表11.2中要查詢吳致賢選修哪幾門課,只要將表中滿足"學號=B9901"的tuples印出,即可得到吳致賢選修的課,如表11.11。 表11.11 資料表的查詢 吳致賢 B9901 企管系 二 資訊管理 BM01 趙文華 副教授 4 Null 管理數學 BM02 李天行 教授 2 統計學 BM03 羅曉梅 3 平行計算 EE01 王立詳 助理教授 當資料分成三個資料表時,資料庫系統提供了一個合成(join)的運算, 可以利用三個資料表組合出所要的資料表,各種組合的方法將在第十二章中介紹。 2018/11/28

圖11.1 表11.2各個attribute之間的功能相依關係 第二正規化 第二正規化: 資料表要滿足第一正規化,而且所有欄位都完全功能相依於主鍵。 功能相依(functionally dependence): 由attribute X的值可以決定一個唯一的attribute Y的值,簡寫成X→Y。 完全功能相依(full functional dependence): 如果attribute Y功能相依attribute X,但是並不功能相依於attribute X的任何子集,則稱attribute Y完全功能相依於attribute X。 表11.2各個attribute之間的功能相依關係,可以用圖11.1表示。 學號 課程代號 學生姓名 年級 系別 課程名稱 開課老師 老師職稱 學分 成績 圖11.1 表11.2各個attribute之間的功能相依關係 2018/11/28

第二正規化 學生姓名、系別、年級這三個attributes除了功能相依於(學號,課程代號) 表11.2各欄位的關係 學號 課程代號 學生姓名 年級 系別 課程名稱 開課老師 老師職稱 學分 成績 圖11.2 非完全功能相依的attributes 學生姓名、系別、年級這三個attributes除了功能相依於(學號,課程代號) 這個組成的attribute之外,還功能相依於學號這個attribute, 而“學號”這個attribute是“(學號,課程代號)“這個attribute的子集, 所以表11.2並不滿足完全功能相依的要求。 在表11.2中做新增、刪除、修改時所遇到的問題, 皆源自不是完全功能相依於主鍵這個原因。 2018/11/28

從完全功能相依的角度 從完全功能相依的角度看表11.2新增、刪除、修改的問題 只有一個資料表時新增資料的問題: 由圖11.2可以看出,只有在主鍵(學號,課程代號)中的兩個attributes都有資料後才能輸入資料。只有學生資料或只有課程資料,主鍵都有部分是Null,由於違反entity integrity的規定是不能輸入資料的。 只有一個資料表時刪除資料的問題: 由於主鍵是由(學號,課程代號)組成,刪除學生資料時,學號的值變成了Null,使得主鍵中有部分的attribute的值是Null,所以課程資料也必須一併刪除,以避免違反entity integrity。 只有一個資料表時修改資料的問題: 在表11.2中,由於主鍵包含(學號,課程代號),每一位學生的資料中都有開課老師的資料。所以當某一門課換老師時,所有修該門課的學生資料都必須更改,否則資料庫中的資料就不正確了。 2018/11/28

第二正規化的資料表 學號 學生姓名 年級 系別 課程名稱 開課老師 老師職稱 學分 課程代號 成績 2018/11/28

遞移功能相依(1/2) X→Y,Y→Z的關係稱做遞移功能相依(transitive functional dependence),即Z遞移功能相依於X,在此例為老師職稱遞移功能相依於課程代號。 新增資料的問題: 如果李天行教授要開一門新課,雖然資料庫系統中已經有李天行的老師職稱,但是仍然要輸入老師職稱,因為每個欄位都必須有值。 如果王有禮教授這學期沒有開課,則他的資料是不能存在課程資料表中的。見表11.12,王有禮教授那個tuple主鍵欄(即課程代號)的值還沒有決定,根據entity integrity,即主鍵中有未決定的值時,這種資料是不能存進資料表的。所以在資料庫中找不到沒有開課老師的資料。 課程名稱 課程代號 開課老師 老師職稱 學分 資訊管理 IM01 李天行 教授 4 管理數學 IM02 趙文華 副教授 3 BM01 BM02 2 統計學 BM03 羅曉梅 平行計算 EE01 王立詳 助理教授 ? 王有禮 表11.12 課程資料表 2018/11/28

遞移功能相依(2/2) 刪除資料的問題: 修改資料的問題: 如果羅曉梅教授被借調至政府機構三年,停開所開課程,則在資料庫中,再也找不到羅曉梅教授的資料,如表11.13。 修改資料的問題: 如果趙文華副教授升等為教授,則所有趙文華副教授的老師職稱欄位,都要改成教授,此例中有兩個tuples要修改。 表11.13 課程資料表 課程名稱 課程代號 開課老師 老師職稱 學分 資訊管理 IM01 李天行 教授 4 管理數學 IM02 趙文華 副教授 3 BM01 BM02 2 平行計算 EE01 王立詳 助理教授 2018/11/28

第三正規化(third normal form,簡稱3NF) 第三正規化: 資料表要滿足第二正規化,而且所有欄位都不可遞移功能相依於主鍵。 課程名稱 開課老師 老師職稱 學分 課程代號 圖11.4 消除遞移功能相依 表11.14 課程資料表 表11.15 教師資料表 課程名稱 課程代號 開課老師 學分 老師職稱 資訊管理 IM01 李天行 4 教授 管理數學 IM02 趙文華 3 副教授 BM01 羅曉梅 BM02 2 王立詳 助理教授 統計學 BM03 平行計算 EE01 根據圖11.4表11.6要再切割成兩個表,如表11.14和表11.15所示。 2018/11/28

第三正規化解決的問題 解決了新增資料的問題: 解決了刪除資料的問題: 解決了修改資料的問題: 李天行教授要新開課程,只要加在表11.14中即可,不必重複輸入老師職稱。王有禮教授這學期沒有開課,他的資料仍然可以儲存在表11.15教師資料表中。 解決了刪除資料的問題: 羅曉梅教授被借調至政府機構三年,停開所開課程,則在表11.14中刪除羅曉梅教授所開的課,但是羅曉梅教授的資料仍然在表11.15中。 解決了修改資料的問題: 趙文華副教授升等為教授,則只有表11.15趙文華副教授的老師職稱欄位改成教授即可,只要修改一個tuple。 2018/11/28

Boyce/Codd正規化(1/2) 如果我們設計的學生成績資料表只有四個欄位,包含姓名、學號、課程代號成績,如表11.16,而不是前面所設計的含有十個欄位的資料表。 並假設該校的學生都沒有同名同姓的情形,意即一個學號只對應一個唯一的名字,所以(課程代號,姓名)也可以當作一組主鍵。 在資料庫中一個資料表只能定義一個主鍵,其他也能識別各個tuple的候選主鍵(candidate key)就謂之替代鍵(alternate key)。例如表11.16中,如果attribute(課程代號,學號)是主鍵,則attribute(課程代號,姓名)就是替代鍵。 圖11.5是表11.16中各attribute的功能相依圖。在這個圖中,可以發現"學號"功能相依於"姓名",並不完全功能相依於(課程代號,姓名)。"姓名"功能相依於"學號",並不完全功能相依於(課程代號,學號)。 根據Codd教授的定義,如果某個attribute是替代鍵的一部份,則該attribute可以不必完全功能相依於主鍵。根據這個定義,表11.16是滿足第三正規化的。 2018/11/28

Boyce/Codd正規化(2/2) 表11.16成績資料表 姓名 學號 課程代號 成績 李景維 M9903 IM01 Null IM02 85 吳致賢 B9901 BM01 BM02 BM03 EE01 張志中 M0300 93 姓名 課程代號 學號 成績 圖11.5 表11.16的功能相依圖 表11.16 顯然存在資料重複的問題,例如吳致賢從企管系轉到工管系,學號由B9901改成I9805,則表11.16中有4個tuples的學號欄位要修改。又如果李景維要多修一門課,則必須重複輸入他的學號。 2018/11/28

Boyce/Codd正規化(簡稱BCNF) 資料表中的determinant都必須是candidate key。 所謂candidate key: 前面解釋過,是也能用來識別各個tuple的attribute。 所謂determinant: 是指一種attribute,若有別的attribute功能相依於它,則這類attribute就謂之determinant,即X→Y中的X就是determinant。表11.16中,姓名和學號都是determinants,因為“姓名→學號”,而且“學號→姓名”。 但是兩者在表11.16中都不是candidate key,因為無法用姓名或學號來識別各個tuple,所以表11.16是不滿足Boyce/Codd正規化的。 從圖11.5中將學號和姓名分離出來,可以得到圖11.6,根據圖11.6作出來的資料表就會滿足Boyce/Codd正規化,見表11.17和11.18。 2018/11/28

Boyce/Codd正規化(簡稱BCNF) 表11.17成績資料表 表11.18學生資料表 學號 課程代號 成績 姓名 M9903 IM01 Null 李景維 IM02 85 吳致賢 B9901 BM01 張志中 M0300 BM02 BM03 EE01 93 課程代號 學號 成績 姓名 圖11.6 表11.16的功能相依圖 表11.17只有一個determinant,即主鍵,而沒有其他的candidate key, 所以滿足BCNF。表11.18有兩個determinants,即姓名和學號。 這兩個determinants在表11.18中都是candidate key, 所以表11.18也滿足BCNF。 2018/11/28

第四正規化(1/3) 如果某高中教數學課的老師有三位:陳立、沈赫哲,所有教育部規定的教科書都是教材,有:南一書局、龍騰書局、台灣書局等書局出版的三個版本,即不管哪位老師都要教所有部訂的教材。 英文也一樣,老師有徐薇、何嘉仁和殷非凡,教科書的版本有:遠東書局、復興書局等兩個版本。 還有一個限制就是,教數學的老師只教數學,教英文的老師也只教英文,不會教別的科目。將這些資料製作成表11.19。 表11.19課程資料表 課程 老師 教科書 數學 陳立 沈赫哲 南一書局 龍騰書局 台灣書局 英文 徐薇 何嘉仁 殷非凡 遠東書局 復興書局 2018/11/28

第四正規化(2/3) 很顯然地表11.19不是正規化的資料表,但是容易就可以將表11.19轉換成第一正規化的資料表,如表11.20。 表11.20 課程資料表 課程 老師 教科書 數學 陳立 南一書局 龍騰書局 台灣書局 沈赫哲 英文 殷非凡 遠東書局 復興書局 徐薇 何嘉仁 很顯然地表11.19不是正規化的資料表,但是容易就可以將表11.19轉換成第一正規化的資料表,如表11.20。 2018/11/28

第四正規化(3/3) 表11.20其實已經是一個BCNF的資料表,乍看之下,或許會覺得奇怪。此表的課程不是determinant,因為由課程無法決定唯一的一位老師,也無法決定唯一的一種教科書。很明顯的,老師和教科書都不是determinant。表11.20只有一個determinant,那就是由所有欄位組成的attribute(課程,老師,教科書),亦即是此表的主鍵。 比照BCNF的定義,此表確實滿足BCNF的定義。這種由所有欄位組成的主鍵謂之all key。 表11.20中資料重複的很厲害,造成這種現象的原因,無法用功能相依的性質來解釋,而是因為多值相依(multivalued dependency)。:在一個資料表中,存在三個attributes A、B、C,對A的任一個值可以決定多個B的值和多個C的值,不會和別的A值重複,而不只一個B的值可以決定C的值,也不只一個C的值可以決定B的值,則稱B和C多值相依於A。 以此例來說,由數學課可以知道有哪些數學老師和數學教材,不會和英文課的老師和教材搞混。注意,數學課的老師和出版書局和英文課的老師和出版書局都不一樣。但是對某一位數學老師來說,不是只有他會用三個書局出版的版本,另外的數學老師也會用這三個書局出版的版本。 這種多值相依的關係寫成A→→B,A→→C,即B和C多值相依於A。 功能相依是多值相依的一個特例,即A的任一個值都可以決定唯一的一個B的值。17 2018/11/28

第四正規化(fourth normal form) 要消除表11.20中資料重複出現的情形須藉助第四正規化(fourth normal form,簡稱4NF) 第四正規化(fourth normal form):沒有多值相依的BCNF資料表謂之第四正規化的資料表。 所以要得到第四正規化的資料表,須先造出BCNF的資料表,然後將BCNF的資料表切割成沒有多值相依的資料表。例如A→→B,A→→C,即B和C多值相依於A,則將A和B形成一個資料表,將A和C形成另一個資料表,就解除了B和C多值相依於A的問題。 表11.21課程老師資料表 表11.22課程書局資料表 課程 老師 教科書 數學 陳立 南一書局 沈赫哲 龍騰書局 英文 殷非凡 台灣書局 徐薇 遠東書局 何嘉仁 復興書局 2018/11/28

連環資料表 連環限制(circular constraint): 若有三個tuples,其中一個tuple在第一欄和第二欄的值為A和B,另一個tuple在第二欄和第三欄的值為B和C,第三個tuple在第一欄和第三欄的值為A和C,則資料表中必須要有一個tuple在第一欄、第二欄、第三欄位的值分別為A、B、C。 例如表11.23,此表和表11.19不同的地方是,教國文的老師也可以教英文,教英文的老師也可以教國文。如果此表也要求要滿足連環限制,即有一個tuple有“國文”和“徐薇”,另外一個tuple有“徐薇”和“龍騰書局”,還有一個tuple有“國文”和“龍騰書局”,則此資料表中就必須有一個tuple含有“國文、徐薇、龍騰書局”。 我們稱這種對欄位內容有連環限制的資料表為連環資料表。如果表11.23少了第4個tuple,則這個資料表就不滿足連環限制,也就不是連環資料表了。 表11.23 課程資料表 課程 老師 教科書 國文 徐薇 南一書局 英文 龍騰書局 陳立 2018/11/28

連環資料表的問題(1/2) 環資料表的新增資料問題: 如果我們要在表11.23中新增一筆資料:"英文、陳立、南一書局",如表11.24。 表11.24 課程資料表 課程 老師 教科書 國文 徐薇 南一書局 英文 龍騰書局 陳立 表11.24 是不滿足連環限制的要求的,因為有一個tuple有“英文”和“陳立” (第5個tuple), 英文、陳立、龍騰書局“這筆資料,以維持新增後的資料表仍然是連環資料表。 也因為如此,所以增添了連環資料表新增資料的困難。 2018/11/28

連環資料表的問題(2/2) 連環資料表的刪除資料問題: 連環資料表的修改資料問題: 如果在表11.23中要刪除第4個tuple:“國文、徐薇、龍騰書局”,前面討論過,會使表11.23不滿足連環資料表的要求。為了要維持連環資料表的要求,勢必在前3個tuples中任意再刪除一個tuple。原來只要刪掉一筆資料,卻連帶的刪掉數筆資料,所以也造成了刪除資料的困難。 連環資料表的修改資料問題: 若要將表11.23中的第4個tuple:"國文、徐薇、龍騰書局"修改成"英文、陳立、南一書局",首先新的資料表就不滿足連環資料表的要求。因為前面解釋過,第4個tuple是表11.23不可或缺的。再者,因為有"英文、南一書局"(修改過後的第4個tuple),又有一個tuple是"英文、徐薇"(第2個tuple),還有一個tuple是"徐薇、南一書局"(第1個tuple),所以還要增加一筆"英文、徐薇、南一書局"。由此可以看出,修改連環資料表變得非常困難。 2018/11/28

projection運算和join運算(1/2) 所謂資料表的projection,就是從資料表中取出一些欄位形成一個新的資料表,且在新的資料表中,去掉重複的tuple。例如在表11.23做課程和老師欄位的projection,即取出表11.23第一欄和第二欄的資料,取得的資料有(國文,徐薇)(國文,陳立)(英文,徐薇)(國文,徐薇),其中第1筆和第4筆資料一模一樣,因此去掉其中一筆,所得的結果如表11.25。相同地,做老師和教科書欄位的projection,則如表11.26。做教科書和課程欄位的projection,則如表11.27。 所謂資料表的join,就是將不同的資料表,透過指定的attributes,做合併的動作。我們以表11.25和表11.26來說明合併的方式。如果表11.25和表11.26是透過老師這個attribute做合併,則表11.25的(國文,徐薇)和表11.26的(徐薇,南一書局)可以合併成(國文,徐薇,南一書局),因為這兩筆資料中的老師這個attribute的值是相同的。表11.25的(國文,徐薇)和表11.26的(陳立,龍騰書局)是不可以合併的,因為這兩筆資料中的老師這個attribute的值是不相同的。 2018/11/28

projection運算和join運算(2/2) 最後將所有合併的結果去掉重複的資料,得到的資料表如表11.28。表11.28和表11.23的資料不完全相同,因為在表11.28中多出了(英文,徐薇,南一書局)這筆資料,這是違背資料表無損切割(nonloss decomposition)的原則。 表11.25 課師表 表11.26 師教表 表11.27 教課表 課程 老師 教科書 國文 徐薇 南一書局 陳立 龍騰書局 英文 表11.28 合併表 課程 老師 教科書 國文 徐薇 南一書局 龍騰書局 陳立 英文 2018/11/28

第五正規化 表11.28和表11.23的資料不完全相同,因為在表11.28中多出了(英文,徐薇,南一書局)這筆資料,這是違背資料表無損切割(nonloss decomposition)的原則。 無損切割(nonloss decomposition):資料表切割後,若經由join可還原成原來的資料表,即原有的資料不可以變得更少,也不可以變得更多,則謂之無損切割。 合併相依(join dependency):若資料表R1、R2、…、Rn為資料表R的projections,且R可由R1、R2、…、Rn做join運算而得,則稱R合併相依於R1、R2、…、Rn。 第五正規化(fifth normal form,簡稱5NF):一個4NF的連環資料表,若其projections:R1、R2、…、Rn滿足合併相依(join dependency),則R1、R2、…、Rn謂之此連環資料表的第五正規化資料表。 前面說明過表11.25和表11.26,並不是一組滿足合併相依的projections。但是加上表11.27,這三個資料表就可組成表11.23的合併相依projections。 2018/11/28

第五正規化(1/2) 解決了連環資料表的新增資料問題: 如果我們要在表11.25到表11.27中新增一筆資料:"英文、陳立、南一書局",則將"英文、陳立"加進表11.25,將"陳立、南一書局"加進表11.26,將"南一書局、英文"加進表11.27,如表11.29到表11.31。 表11.29 課師表 表11.30 師教表 表11.31 教課表 課程 老師 教科書 國文 徐薇 南一書局 陳立 龍騰書局 英文 表11.32 課程資料表 課程 老師 教科書 國文 徐薇 南一書局 龍騰書局 陳立 英文 由表11.29到表11.31經過join運算, 所得到的資料表由於滿足合併相依於表11.29到表11.31,自然是一個連環資料表,如表11.32。 2018/11/28

第五正規化(2/2) 解決了連環資料表的刪除資料問題: 解決了連環資料表的修改資料問題: 如果要刪除“國文、徐薇、龍騰書局”,則在表11.25中要刪除“國文、徐薇”,在表11.26中要刪除“徐薇、龍騰書局”,在表11.27中要刪除“龍騰書局、國文”,如表11.33到表11.35。 解決了連環資料表的修改資料問題: 若要將"國文、徐薇、龍騰書局"修改成"英文、陳立、南一書局",則表11.25的"國文、徐薇"要改成"英文、陳立",表11.26的"徐薇、龍騰書局"要改成"陳立、南一書局",表11.27的"龍騰書局、國文"要改成"南一書局、英文",如表11.36到表11.38,這三個資料表join的結果仍然會滿足連環資料表的要求。 表11.33 課師表 表11.34 師教表 表11.35 教課表 課程 老師 教科書 國文 陳立 徐薇 南一書局 英文 龍騰書局 表11.36 課師表 表11.37 師教表 表11.38 教課表 課程 老師 教科書 英文 陳立 徐薇 南一書局 國文 龍騰書局 2018/11/28