2010-01-21 72 views
2

我有保存有關特定對象信息的表,說項目並具有列基本數據庫設計。使用另一個表或科拉姆

項ID,ITEMNAME,價格,ItemListingType ..... LastOrderDate

一個信息位,ItemListingType可能是10種不同的類型之一 如:

私人,GOV,非政務,商務...等(串),並可以擴展到未來更多類型。

我應該使用表內的列ITEM或者我應該使用一個單獨的表與兩列,並在項目表中引入一個外鍵引用(一對多關係)?像:

  • ListingTypeID INT

  • ListingTypeName VARCHAR(MAX)

編輯:一個列有多少價值,你會考慮使用另一臺爲

2,4什麼?

感謝

回答

8

使用單獨的表來存儲這種參考數據。這是規範化的一個宗旨,並且由於您正在分離只讀和讀寫數據,因此還可以實現更輕鬆的緩存。我的兩分錢...

2

我肯定會去的 「查找」 樣式列;這樣當未來增加允許列表類型時,您不會陷入困境。您也正在減少冗餘,並且更容易改變特定類型的列表的名稱(如果「政府」更改爲「政府機構」,那麼您只需在一個地方更改它)。

0

從關係上看,您應該使用額外的表格,因爲您不會有任何重複的方式。它也將允許您在一個地方更改此列表的值。但是,如果您非常確定不會添加任何類型,請保留該列。

3

單獨的表格。

  • 如果您尚未使用上市類型,該怎麼辦?
  • 或刪除類型爲x的最後一項?
  • 還是需要更改一個值?

這些insert, update and delete anomalies,這是一個原因正常化

1

在這樣的情況下,我問自己: 的項目可以有清單類型的數目不詳的?如果是的話,不同的表格。

是否規範說永遠不會超過3種類型?依靠。有時候我仍然會選擇一張單獨的桌子,有時候不會。過一段時間後你會感覺到這一點。

項目總是有單一的上市類型?如果是,同一張表,單列。


現在要更進一步。 如果一個項目有零個或多個列表類型,而這些列表類型實際上是共享的(換句話說,兩個項目可以具有相同的列表類型,那麼我們有3個表格:Items,ListingTypes和一個交叉引用表格來支持許多很多關係。