2013-03-04 72 views
1

假設我有一個由3個主要項目組成的產品。該產品是筆記本電腦,其物品爲: 螺絲(編號,編碼,描述) 編號 覆蓋範圍(編號,編碼,描述,顏色)。推廣+價格歷史

每檯筆記本電腦都包含這些項目的任意組合。

  1. 我可以把所有到一個表「材料」,並添加一個名爲「類型」每個項目區分屬性,但隨後會有許多行空「色」值。

    我想到專業化: 材料(id,代碼,描述),然後都是它的子類。但然後按鈕&螺絲班沒有任何不同於母親課。

    那麼你的想法是什麼?

  2. 我想添加單位價格屬性。我需要實際價格,並且我希望保持每月價格較高的歷史記錄(即每個價格都必須爲MM/YYYY)。

    我能創造一個價格表:

    prices (id, price, date) 
    

    但我應該保持實際=目前的價格在材料表或乾脆在價格表?

回答

0
/* keep your general product specs here: */ 
PRODUCT 
id primary key 
type 
code 
description 
standard_price 


/* or add a subtype table for some of them: */ 
COVERAGE_PRODUCT 
id pk fk PRODUCT 
colour 


/* products are composed of other products: */ 
PRODUCT_STRUCTURE 
part_of not null references product(id), 
composed_of not null references product(id) 
primary key (part_of, composed_of) 

你可以把你的歷史定價數據倉庫中,或添加PRODUCT_PRICE表。在這種情況下,請從產品中刪除「standard_price」。

PRODUCT_PRICE 
product_id fk product(id) 
from_date 
price 
to_date (nullable) 
primary key (product_id, from_date) 
+0

感謝您的幫助 1.您已經添加了一個名爲「類型」(我想這將是任何螺絲,鈕釦,或覆蓋)的新屬性。這不應該放在自己的桌子上嗎? 2.爲什麼我們需要/ *產品是由其他產品組成的:*/ PRODUCT_STRUCTURE? – Miracle 2013-03-05 07:04:11

+0

取決於您是否要使用單表繼承(使用空值,但更簡單)或類表繼承(沒有空值,但更復雜)。 產品可以由其他產品組成。例如,滑板由板,卡車和輪子組成。在某些情況下,它是一個網絡結構,而不是分層的,因此該表的設計。 – 2013-03-05 19:16:46

+0

因此,表中的某些屬性有多個空值可以嗎? – Miracle 2013-03-05 20:34:21