我正在設計一個網站,允許用戶發佈分類廣告,並提供他們銷售的不同類型商品的詳細信息。但是,我有一個關於最佳數據庫模式的問題。單一遺傳還是多態?
該網站的功能很多類別(如汽車,電腦,相機),每一類廣告都有自己獨特的領域。例如,汽車具有諸如門數,品牌,型號和馬力等屬性,而計算機具有諸如CPU,RAM,主板型號等的屬性。
現在,因爲它們都是列表,所以我想到了多態方法,爲每個不同類別(計算機,汽車,相機)創建父級LISTINGS表和不同的子表。每個子表將有一個鏈接回LISTINGS TABLE的listing_id。因此,當獲取列表時,它將從關聯的子表中的鏈接行所連接的LISTINGS中獲取一行。
LISTINGS
-listing_id
-user_id
-email_address
-date_created
-description
CARS
-car_id
-listing_id
-make
-model
-num_doors
-horsepower
COMPUTERS
-computer_id
-listing_id
-cpu
-ram
-motherboard_model
現在,這個模式是一個好的設計模式還是有更好的方法來做到這一點?
我考慮過單一繼承,但很快就沒有理會這個想法了,因爲表格太快會太大,但是後來出現了另一個困境 - 如果用戶在所有列表中進行全局搜索,那麼這意味着我將擁有分別查詢每個子表。如果我擁有超過100個不同的類別,會發生什麼情況?效率不高嗎?
我還想到另一種方法,其中有一個主表(元表),它定義了每個類別中的字段和一個存儲每個列表的字段值的字段表,但是會違背數據庫規範化嗎?
像Kijiji這樣的網站會怎麼做?
如果他們具有不同的屬性,我會如何將CARS表和COMPUTERS表一起加入? – peter 2010-12-09 20:30:35