Day23. MySQL: 資料庫正規化Database normalization - iT 邦幫忙
文章推薦指數: 80 %
第1正規形式(1NF); 第2正規形式(2NF); 第3正規形式(3NF); BCNF正規形式(BCNF); 第4正規形式(4NF); 第5正規形式(5NF). 資料庫正規化實作- 練習 ...
第11屆iThome鐵人賽
DAY
23
0
自我挑戰組
網頁服務開發之路系列第
23篇
Day23.MySQL:資料庫正規化Databasenormalization
11th鐵人賽
jiajun_chou
團隊中興應數98級3+1個香皮匠
2019-10-0814:42:223568瀏覽
學習資源:codedata-Databasenormalization
降低資料重複性
避免資料更新異常
在實務上,BCNF被視為大部分應用程式所需的最高階正規形式
第1正規形式(1NF)
第2正規形式(2NF)
第3正規形式(3NF)
BCNF正規形式(BCNF)
第4正規形式(4NF)
第5正規形式(5NF)
資料庫正規化實作-練習
第1正規形式(firstnormalform,1NF)
「若且唯若關聯表中的每一個屬性其值皆為基元值(AtomicValue)」
每一個欄位只能有一個基元值(Atomic)即單一值
沒有任何兩筆以上的資料是完全重覆
資料表中有主鍵,而其他所有的欄位都相依於「主鍵」
非正規形資料因同一欄位存在複數值,會發生無法進行演算的問題
_做法
將重複的資料項分別儲存到不同的記錄中,並加上適當的主鍵
第2正規形式(secondnormalform,2NF)
分割資料表;亦即將「部分功能相依」的欄位「分割」出去,再另外組成「新的資料表」
「若且唯若關聯表中,所有非鍵值屬性皆完全功能相依於主鍵」
非Key值完全從屬於候補Key值
換言之,「部分功能相依」只有當「主鍵」是由「多個欄位」組成時才會發生(亦即複合主鍵),也就是當某些欄位只與「主鍵中的部分欄位」有「相依性」,而與另一部分的欄位沒有相依性
_做法
檢查是否存在「部分功能相依」
將「部分功能相依」的欄位分割出去,再另外組成新的資料表
第3正規形式(thirdnormalform,3NF)
分割資料表;亦即將「遞移相依」或「間接相依」的欄位「分割」出去,再另外組成「新的資料表」
「一個關聯表為第三正規化表格,若且唯若該關聯表中,不存在非鍵值屬性遞移相依於主鍵」
非Key值推移從屬於候補Key值
_做法
檢查是否存在「遞移相依」
將「遞移相依」的欄位「分割」出去,再另外組成「新的資料表」
BCNF正規形式(!Boyce/Coddnormalform;BCNF)
適用時機:如果資料表的「主鍵」是由「多個欄位」組成的,則必須再執行Boyce-Codd正規化
規則:「主鍵」中的各欄位不可以相依於其他非主鍵的欄位
BCNF去除了屬性間的不必要的函式依賴,「任何屬性(包括非主屬性和主屬性)都不能被非主屬性所決定」
任何一個BCNF必然滿足
所有非主屬性都完全函式依賴於每個候選鍵
所有主屬性都完全函式依賴於每個不包含它的候選鍵
沒有任何屬性完全函式依賴於非候選鍵的任何一組屬性
第4正規形式(fourthnormalform,4NF)
「符合BCNF,再除去所有的多值相依(Multi-ValuedDependency)」
多值相依:關聯表R中有3個欄位以上,R(A,B,C),主鍵為ABC,而A對應B時,B有多個值相對應﹔A對應C時,C有多個值相對應,B和C無關
第5正規形式(fifthnormalform,5NF)
「符合4NF,且沒有合併相依(JoinDependency)」
合併相依:如果表格T可以透過其子集而重建,那麼表格T就是具有合併相依
留言
追蹤
檢舉
上一篇
Day22.MySQL:效率
下一篇
Day24.HTTP通訊協定Part1
系列文
網頁服務開發之路
共30篇
目錄
RSS系列文
訂閱系列文
17人訂閱
26
Day26.ChromeDevelopTool:Network
27
Day27.SearchEngineOptimization(SEO)
28
Day28.受眾分析
29
Day29.【資訊安全】資訊安全政策與基本概念
30
Day30.資料庫類型介紹與索引建立
完整目錄
尚未有邦友留言
立即登入留言
iT邦幫忙鐵人賽
參賽組數
1087組
團體組數
52組
累計文章數
20492篇
完賽人數
572人
鐵人賽最新文章
Day36-使用Container建立AmazonSageMaker端點
Day35-AmazonSageMaker簡介
今天來瞄一眼龍與雀的科技:知覺共享技術Body-sharing
更新網格交易機器人
Day34-實作S3驅動Lambda函數進行YOLO物件辨識
建立第一個RESTfulapiserver(設定環境變數篇)-7(Day19)
Day48.下載個範例iosapp來試著build
原來Arduino開發板的腳位與程式內數字的對應會隨著開發商不同而改變?
EP32:TopStoreAppwith.NETMulti-platformAppUI(MAUI)
[Day32]HexoxGitHubPages主題自訂樣式+問題排除
前往鐵人賽
技術推廣專區
[Day2]抓取每日收盤價
[Day1]基本工具安裝
利用python取得永豐銀行API的Nonce
永豐金融API測試員
[Day03]tinyML開發板介紹
[Day01]在享受tinyML這道美食之前
[Day3]使用ta-lib製作指標
計算API所需要的參數:HashID
[Day4]函數打包與買進持有報酬率試算
計算API所需要的參數:IV
前往鐵人賽
熱門問題
電信商說我透過Steam或是PS4下載遊戲是異常封包而斷我網路,怎麼辦?
有關新手SQL問題一問
有人知道怎麼解決gmail一直擋信的問題?
LINUX帳戶密碼最大使用期限90天
Win10的系統還原
線上版文書處理除了Google雲端,365,還有其他選擇嗎?
Windows2008R2如何讀取ISO檔
Server掛掉,Acronis的備份檔無法復原
MSSQL資料庫主機Ping的到,但無法連線
MSSQLUNION後進階排序問題請教
IT邦幫忙
站方公告
2021iThome鐵人賽精彩文章超過2萬篇,預計12月揭曉本屆獲勝鐵人
熱門tag
看更多
13th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
2018鐵人賽
javascript
2017鐵人賽
windows
php
python
windowsserver
linux
c#
程式設計
資訊安全
css
vue.js
sql
分享
熱門回答
有關新手SQL問題一問
MSSQL資料庫主機Ping的到,但無法連線
TIPTOPmail
MSSQLUNION後進階排序問題請教
線上版文書處理除了Google雲端,365,還有其他選擇嗎?
電信商說我透過Steam或是PS4下載遊戲是異常封包而斷我網路,怎麼辦?
如果想把現有NAS掛給ESXI6當VM備份儲存區.請問要如何做
新手程式提問
Windows2008R2如何讀取ISO檔
求助!用ExcelUserForm來Update資料到SQL
熱門文章
【第31天】番外篇-Windows+YOLOV4本地端訓練
原來Arduino開發板的腳位與程式內數字的對應會隨著開發商不同而改變?
建立第一個RESTfulapiserver(設定環境變數篇)-7(Day19)
Day48.下載個範例iosapp來試著build
Day34-實作S3驅動Lambda函數進行YOLO物件辨識
【換機必學】將資料從Android轉移到iOS的兩種方法
EP32:TopStoreAppwith.NETMulti-platformAppUI(MAUI)
[Day32]HexoxGitHubPages主題自訂樣式+問題排除
更新網格交易機器人
免費錄影!原來Windows10有内建的螢幕錄影工具
一週點數排行
更多點數排行
海綿寶寶(antijava)
raytracy(raytracy)
ccenjor(ccenjor)
rogeryao(rogeryao)
㊣浩瀚星空㊣(yoching)
純真的人(jer5173)
Samuel(kuanyu)
huahualiu(ffang55tw)
juck30808(juck30808)
淺水員(ren1244)
×
At
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{result.label}}
{{result.account}}
關閉
延伸文章資訊
- 1資料庫正規化
如果符合前二條規則,則資料庫就被視為屬於「第二正規化. 形式(2NF)」。雖然資料庫的正規化最多可以進行到第五正規化形式,. 但是在實務上, BCNF被視為大 ...
- 2資料庫正規化實作練習 - MySQL Taiwan
資料庫正規化實作練習. Admin - 4月30, 2014. 如下的資料,我們應該如何進行正規化呢? 如果無正規化,對於處理上有何問題呢? 資料表1: 問題在於欄位並非atomic(基元 ...
- 3Database 正規化步驟 - 翻轉工作室
第一正規化定義如下:『在一個資料表內,所屬欄位的內容都是單元值(Atomic Value),則稱該資料表滿足 1NF。』簡單的說,每個欄位的內容都是最小單元,不可以再分割的。
- 4「不是工程師」關聯式資料庫正規化是什麼? 先從第一 ... - 進度條
先從第一正規化(1NF)開始吧!(database normalization, Primary Key - PK). 資料庫設計很難?都不實作練習當然難!先用這簡單的 ...
- 5Day23. MySQL: 資料庫正規化Database normalization - iT 邦幫忙
第1正規形式(1NF); 第2正規形式(2NF); 第3正規形式(3NF); BCNF正規形式(BCNF); 第4正規形式(4NF); 第5正規形式(5NF). 資料庫正規化實作- 練習 ...