2013-02-20 198 views
0

我有一個表,這個結構:我應該創建另一個表嗎?

enter image description here

COL1將是 「PRODUCT_NAME」 和COL2 「product_name_abbreviated」。

忽略ID科拉姆我有這樣的數據:

1 1 43 
1 1 5 
1 1 6 
1 1 7 
1 1 8 
2 2 9 
2 2 10 
2 2 34 
2 2 37 
2 2 38 
2 2 39 
2 2 50 

我可以做的另一個表,並把有COL1COL2列becouse它們是重複的。事情是這樣的:

enter image description here

我敢肯定,它會不會被重複超過15次,那麼......是否值得?

謝謝先進。

+1

的心臟是什麼'col1'和' col2'應該代表? – 2013-02-20 17:03:33

+1

很難說 - 但我強烈建議不要命名您的列「col1」和「col2」。 – 2013-02-20 17:04:49

+1

如果不知道「col1」和「col2」的含義以及它們與價格的關係,很難告訴你應該做什麼。 – Danny 2013-02-20 17:05:03

回答

4

是的,你應該將它們分成不同的表格 - 這是一個標準化爲Second Normal Form的例子。

+0

如果只重複兩次呢?例如想象我有另一個包含genere(男性或女性)的列。 – harrison4 2013-02-20 20:43:37

+0

性別(男性/女性)會如何與產品和/或價格相關? (功能依賴性決定哪些列應該放在哪些表上。) – 2013-02-20 21:46:55

0

只能使用一張ID和ID,兩個VARCHAR列的名稱和縮寫以及一個NUMBER的價格。

2

你確定現在,但是你什麼時候會在一年內擴展你的應用程序?拆分表格

0

規範化對避免重複數據很有幫助。您的模型很小,數據很小,您不必擔心並留下一個實體(表格)。

在實際項目中,有時我們會正常化,然後意識到我們弄得一團糟。在重複數據和容易理解模型和查詢之間保持平衡總是很好的。更不用說使用數據倉庫數據庫時...

0

這是數據庫設計中一個非常基本的問題,答案是一個響亮的「兩個表」! 下面就介紹幾種原因:

  1. 如果你有一個表,然後錯誤地有人可以有產品名稱進入一個新行的「1」和縮寫產品名稱「2」只有這樣,才能阻止這種將會增加規則和約束條件 - 遠遠比僅僅分割表格更復雜。

  2. 查看數據庫模式應該能夠有效地告訴你它代表什麼。如果事實證明,您不能擁有產品名稱爲「1」和縮寫產品名稱爲「2」的產品,那麼通過查看錶格結構應該清楚這一點。單個表格告訴你相反的,這是UNTRUE。數據庫應該說實話 - 否則這是誤導。

  3. 如果除了你自己以外的任何人查看或開發這個數據庫,他們可能會被這種基本的設計規則的偏差所迷惑和誤導。或者更糟糕的是,如果他們認爲它沒有經過精心設計,並且因此不關心自己的工作,就可能導致窗戶綜合症破裂。

原則被稱爲「歸化」,是在意味着什麼東西是關係數據庫,而不是僅僅是一些數據在一堆:)

相關問題