2012-06-05 33 views
1

我很難做出這個決定。我有一個模式,我希望特定類別的產品具有該類別的特定值。相對錶中的相對值表

我做了我的方式,以5桌,我只是想知道這是做的正確的方式。

場景: 主表:

Element (id, name, category_ID) 
Category (id, name) 
Characteristic (id, name, unity) 

我想要一個類別有特點的具體數目(即計算機需要CPU,RAM,屏幕大小等的特點和鼠標的需求。有isCordless,numberOfButtons等),所以我已經創建的表Category_has_Characteristic:

Category_has_Characteristic(id_category, id_characteristic) 

對於來自我創建該表中的類別的特定元件值設置爲每個特徵:

Element_has_Characteristic (id_element, id_Category_has_Characteristic, value) 

這是最好的方法來創建一個表具有每個特徵的具體元素值?

我缺少的東西,或這是做它的唯一/最好的方法是什麼?

任何評論將不勝感激。

回答

1

這聽起來像是overnormalization的經典案例。考慮一個表格:

Category 
    id 
    name varchar(50) 
    isCordless bit 
    numberOfButtons int 
    ... 

這導致更簡單的查詢。如果你的特徵是動態的,你只需要一個多對多的關係。例如,如果您打算編寫一個控制面板,用戶可以使用它將特徵添加到類別中。

+0

我不確定我是否理解你的概念,但在這種情況下,類別表有一些固定的行(isCordless,numberOfButtons),我不希望發生這種情況。爲什麼?因爲元素表將具有完全不同的產品,並因此而具有不同的特性。 – NewK

+0

好吧,我明白你現在說的「超標準化」。那麼在這種情況下,你認爲最好爲每個元素類別創建一個新表格?即使用戶可以添加新的類別,並隨後添加該類別的新特徵? – NewK

+0

@NewK:好吧,我可以創建一個名爲Category的表格,只要你喜歡就可以有很多列。只有這樣做不成功,我纔會添加額外的表格。在一天結束的時候,你應該花費更多的時間來增加價值。祝你好運! – Andomar