作者aoksc (重出江湖)
看板Database
標題[SQL ] 欄位正規化的問題
時間Sat Mar 21 22:28:37 2015
(針對
SQL 語言的問題,用這個標題。請用 Ctrl+Y 砍掉這行)
資料庫名稱:MS-SQL
資料庫版本:2000
內容/問題描述:
請問各位
假設我有一個訂單的table
其中一個欄位代表是中餐、點心、飲料、晚餐
最多就只有這四個值
那麼請問我需要另開一個talbe專門紀錄這四個值
有需要再join就好
還是說直接存在訂單這個table底下就好呢?
因為每一筆訂單只有一個訂單類別
所以應該是有做到第一正規化
每筆訂單的類別也都跟主key(GUID)有關
所以應該有第二正規化吧?
第三正規化的部份我就不確定了
請問像這樣的情況我要怎麼分析呢?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.169.167.226
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Database/M.1426948120.A.1D5.html
1F:推 GoalBased: 如果你今天 中餐 要改成 中華餐 03/21 22:56
2F:→ GoalBased: 你table不拆開要怎麼辦 03/21 22:57
因為我是想說
餐點類型大概不外乎就那些
所以有必要分出來嗎?
所以一般來說只要是跟種類、分類有關的欄位都必須要分出去囉?
那麼請問這算是第幾正規化呢?
※ 編輯: aoksc (118.169.167.226), 03/21/2015 23:02:39
還有我之前的想法是想說要改的話直接update中餐全部改成中華餐不就好了
請問這作法會有什麼問題呢?
※ 編輯: aoksc (118.169.167.226), 03/21/2015 23:04:20
3F:推 GoalBased: 1.我不知道那是第幾正規化,工作中沒看過人討論 03/21 23:29
4F:→ GoalBased: 這是"第幾正規化",通常都是直覺的去做正規化 03/21 23:29
5F:→ GoalBased: 2.update可以啊,但是假如你有一萬筆中餐,那不就要 03/21 23:30
6F:→ GoalBased: 更新一萬筆嗎,如果你拆出去是不是只要更新一筆? 03/21 23:30
謝謝的回覆
我沒有考慮到如果要大量更新的情況
因為我一直預想這東西應該不會改才對
所以看來應該是跟分類有關的欄位也該考慮獨立到另一個table方便控制
※ 編輯: aoksc (118.169.167.226), 03/21/2015 23:37:57
7F:→ benqm300: 反正規化通常是在某些情況下才使用,一般來說還是該分開 03/22 11:02
8F:→ benqm300: 就分開,雖然有時候SQL會很肥@@ 03/22 11:02
9F:推 rockchangnew: 可拆,會減少資料量。日後維護也方便 03/22 14:11
10F:推 LaPass: 拆也可以,不拆也可以。看狀況。 03/22 21:27