2013-02-10 77 views
-2

我需要建立一個網站,顯示所有類型的產品,他們都具有相同的屬性。像Shopping.com,亞馬遜等。產品的數據庫設計

我目前正在考慮兩種選擇:每個產品類型

  1. 一個表(電視機,攝像機,音箱等),並在其中會有所有該類型的屬性相同。例如,如果它TV_Table將有分辨率,價格,重量,技術等。
  2. 有此表:
    • 產品:ID,名稱
    • ProductColumn:ID,產品ID,名稱,類型
    • ColumnValue :ID,ColumnID的,價值

這兩種方式似乎確定我和他們每個人都會有自己的優點和缺點。

我正在尋找一個解決方案:

  • 重複的代碼將在數據庫儘可能的少
  • 搜索和其他的東西(的分組,計數等)將是簡單,方便,快捷,代碼友好的(我不喜歡10號線一個SQL查詢)
  • ,基本上會以正確的方式

請告知,如果你有這似乎更好其他的方式 - 歡迎您SH是。

謝謝。

回答

1

您正在尋找一個基於類的結構。 第二種方法至少可以說是醜陋的。這確實是一個解決方案的骯髒破解。

基本上,如果您熟悉OOP範例並且繼承支柱回收您的知識。

您將有產品,然後表延伸一個抽象的表,添加另外的屬性,直到你可以叫它型「電視」或「交易卡」的產品。對於子類型選擇,將一系列OR子句連接到SQL檢索腳本中的WHERE過濾器。

爲簡潔的SQL語句在id列上執行NATURAL JOIN。

祝你好運!

+0

我的第一個選擇(或你的答案)的問題是,在代碼中,我會有很多類似的查詢(在呈現數據時)和很多關節(在搜索上)。不管他們是否擴展抽象類,因爲列是不同的。再加上我需要複製頁面代碼並根據產品類型進行更改,雖然它們看起來是一樣的,因爲列不完全相同 – Nir 2013-02-10 17:48:34

相關問題