2019/0118/資料庫正規化
資料庫正規化(範式)
正規化的動作會將大表切劃為落干個小表,
讓資料異動時,就算讀取麻煩,但必須沒異常錯誤。
第一正規化(範式) 1NF :
一個欄位儲存一個值
第二 :
去除"!"部分"!"功能(函數)相依 :
"!"部分"!"功能(函數)相依
學號 姓名 課程編號 成績
S001 王曉明 C001 95
S001 王曉明 C005 80
S002 王小英 C003 92
王曉明不知到幾個,C001 這堂課分數是95 不知道是誰 ,
↓ S001 王曉明選 C001 成績95 這樣才知道是誰
功能相依 :
學號可以決定姓名 也可決定 選了哪堂課 成績多少。
知道欄位 A 就會知道欄位 B C D , 1+2=3 --> 3-1=2 , 知道身分證FXX 就知道 王曉明 地址XXX。
列出心智圖表,找出最具代表性的元素,念念看合不合理。
供應商ID可以決定供應商嗎?可以,供應商能夠決定品項嗎?不行,必須要供應商ID與供應商決定品項。
無重複 : XX 主檔 (功能相依
一決定一 : XX 主檔 (功能相依
二決定一 : 明細 (部分功能相依
一決定一決定一 : (遞移相依 通常是多加上去的流水號
新增異常 :
沒有林的基本資料但卻新增林的品項賣的蘋果與價錢。
刪除異常 :
林今天不賣蘋果了刪除資料時連林的基本資料都刪除。
修改異常 :
修改林的蘋果漲價卻修改了所有的蘋果漲價。
第三
BC正規化 BCNF 第三的延伸
去除遞移相依
"所在地"可以決定"運費",具有功能相依,
"供應商代號"也可以決定"運費",
"供應商代號"也可以決定"所在地",
所以"所在地"與"運費",具有遞移相依,必須移出主表,獨立出副表。
心置圖表元素 : 不可以被兩個箭頭指到。
第四
去除多值依賴
第五
以上為實務上,切劃為落干個,讓資料異動時,就算讀取麻煩,但必須沒異常錯誤。
(需求不明確 - 專案經理 -> 系分析師 -> 程式編程)
schema 欄位 value 值 unit 單位
以下為學術上
.
.
.
.
Last updated