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