2011-07-04 76 views
0

我有一個任務來設計一個SQL數據庫,該數據庫將記錄公司的商品產品(sku編號)的值。該公司有7600個獨特的產品需要跟蹤,每個產品在一年內會有大約200個值(每個產品每天一個值,在一年中)。SQL數據庫設計問題

我的第一個猜測是sku數字是從上到下(每個sku都有一行),每個日期都是一列。

的數據將被用於查看圖表/圖形格式和附加的計算將被顯示對那些(如百分比利潤率等)

我的問題是:
- 這是可取佈局?
- 如果這種數據類型返回大約15年(每個表格將代表一年),我必須謹慎行事嗎?

有什麼建議嗎?

回答

2

我會建議您的產品表和歷史價值表。如果您打算選擇特定時間段,也許可以基於日期爲歷史值創建索引。

create table products (
id number primary key, 
sku number, 
name text, 
desc text); 

create table values (
id number primary key, 
product_id number, 
timestamp date, 
value number, 
foreign key fk_prod_price product_id on product.id); 

create index idx_price on values.timestamp; 

注意:並不是實際的SQL,你將不得不寫自己的

+0

通過創建索引和分離表格,這將使其在屏幕上顯示更快......這是一個巨大的加...感謝您的建議。 – Csharp

3

它更好地只有3列 - 而不是很多,你所提出的建議:

sku date   value 
------------------------- 
1  2011-01-01 10 
1  2011-01-02 12 
2  2011-01-01 5 

這樣,如果你希望記錄日期每一個給定的產品別的東西,你可以很容易地添加另一列。

+0

我正在處理您的建議,但如果我使用了您的想法,我需要200 x 7600行。這將是一個非常長的桌子。 – Csharp

+0

沒什麼,我使用超過50M行的表格工作。表格通常比寬度更長。這是傳統數據庫的重點。 –

+0

這是一個很好的觀點... – Csharp

1

如果你喜歡@fiver寫道,你不必有每年一表可能。一切都在一張桌子上。並在sku /日期上添加索引以加快搜索速度