iT邦幫忙

3

3. SQL Server學習日記-關聯式資料庫-關聯模型(二)

  • 分享至 

  • xImage
  •  

一、關聯

1.一對一關聯 (1 : 1)

資料表A的一筆記錄,只能對應到資料表B的一筆記錄,而資料表B的一筆記錄,只能對應到資料表A中的一筆記錄。
例如 : 一個人對應一張有效身分證,一張身分證也只對應一個人

2.一對多關聯 (1 : N)

資料表A的一筆記錄,可以對應到資料表B的多筆記錄,但是資料表B的一筆記錄,只能對應到資料表A的一筆記錄。
例如 : 一個學生只能在一個班級,但一個班級可以包含多個學生

3.多對多關聯 (N : M)

資料表A的一筆記錄,能夠對應到資料表B的多筆記錄,而資料表B的一筆記錄,能夠對應到資料表A的多筆記錄。
例如 : 選課系統中,一位學生可以選擇多門課程,每門課程可以被多位學生選擇

二、關聯正規化

資料庫中實體之間的關聯是資料、數值之間的關聯,如何定義這個關聯會影響到之後操作資料的效率、準確性,於是有了正規化,正規化是透過修改資料以減少矛盾的一系列步驟,關聯模型定義了3種正規化。

初始範例

客戶代號 客戶姓名 商品 價錢 數量 購買日期 訂單編號
0001 Rose 水煮蛋、黑輪 10、15 2、2 9/20 114
0002 Irene 蒟蒻 10 3 9/20 115
0003 Joy 豬血糕、黑輪 20、15 4、2 9/21 116
0004 Amy 貢丸 20 5 9/21 117
0004 Amy 貢丸 20 5 9/22 118

《出現的問題》
△ 一個欄位出現多筆資料
△ 出現屬性意義相同的欄位

1 第一正規化 1NF

原則
1 一個欄位只能有一筆資料
2每列資料裡的同一屬性包含的數值數量需一樣多
3多個屬性的意義不能相同

經過第一正規化之後

客戶代號 客戶姓名 商品 價錢 數量 總金額 購買日期 訂單編號
0001 Rose 水煮蛋 10 2 20 9/20 114
0001 Rose 黑輪 15 2 30 9/20 114
0002 Irene 蒟蒻 10 3 30 9/20 115
0003 Joy 豬血糕 20 4 80 9/21 116
0003 Joy 黑輪 15 2 30 9/21 116
0004 Amy 貢丸 20 5 100 9/21 117
0004 Amy 貢丸 20 5 100 9/22 118
《出現的問題》
△ 有太多重複資料

2 第二正規化 2NF

原則
1 消除部分相依
2滿足第一正規化

經過第二正規化之後

客戶代號 客戶姓名 數量 總金額 購買日期 訂單編號
0001 Rose 2 20 9/20 114
0001 Rose 2 30 9/20 114
0002 Irene 3 30 9/20 115
0003 Joy 4 80 9/21 116
0003 Joy 2 30 9/21 116
0004 Amy 5 100 9/21 117
0004 Amy 5 100 9/22 118
商品 價錢
水煮蛋 10
黑輪 15
蒟蒻 10
豬血糕 20
貢丸 20

3 第三正規化 3NF

原則
1消除遞移相依
2滿足第二正規化

經過第三正規化之後

訂單資料表

編號 購買日期 訂單編號 客戶代號 商品 數量 總金額
1 9/20 114 0001 水煮蛋 2 20
2 9/20 114 0001 黑輪 2 30
3 9/20 115 0002 蒟蒻 3 30
4 9/21 116 0003 豬血糕 4 80
5 9/21 116 0003 黑輪 2 30
6 9/21 117 0004 貢丸 5 100
7 9/22 118 0004 貢丸 5 100

客戶資料表

客戶代號 客戶姓名
0001 Rose
0002 Irene
0003 Joy
0004 Amy

商品資料表

商品 價錢
水煮蛋 10
黑輪 15
蒟蒻 10
豬血糕 20
貢丸 20

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言