2011-06-23 102 views
0

我正在努力想出一個適當的設計來保存回收數據。數據是在三個月的週期內收集的,當月的每個星期。所以數據如下所示(它們目前收集數據在Excel現在):回收數據數據庫設計

Month 1  | Plastic  | Metal | Newspaper | Cardboard | Paper 
--------------------------------------------------------------------------------- 
    Measurement: | (x) 19 Gal | 19 Gal | 19 Gal | 19 Gal | 19 Gal 
       | 36 Gal  | 36 Gal | 36 Gal | 36 Gal | 36 Gal 
       | Lbs   | Lbs | Lbs  | Lbs  | Lbs 
       | Other:(txt) | Other | Other  | Other  | Other      
--------------------------------------------------------------------------------- 
    Week 1  | 1 
    Week 2  | 
    Week 3  | 
    Week 4  | 
    Week 5  | 2 
---------------------------------------------------------------------------------- 
    Total (Lbs) | Z 

在此示例中,總的(Z)將是3米19加侖倉的轉化向LBS

讓我頭部受傷的部分是每個可回收產品也具有多個屬性附加到他們,所以塑料有一個大小,它是如何回收,等......

我已閱讀EAVs and class Table inheritance,但他們對這個問題不感覺「正確」。提前致謝。

+0

你可以發佈一些更多的數據和解釋嗎? 'Week1-Plastic-BinSize'是什麼意思? –

回答

0

一開始,請你使用的不是 「1周」 告訴我等,永遠,但間隔(即int開始日期,int結束日期)。

現在...你的問題與表繼承?這看起來很經典。 基類/表將是可回收的產品與一個普通的屬性modicum ... 是這個問題?除了名字之外,找不到任何「共同點」?

測量單位如何?即是否提到另一張詳細說明公斤,加侖,立方英尺等的表格?

也許是「危險」旗幟?

從此,您可以專注於「塑料」,爲「回收方法」添加字段。指向另一個列出可用備選方案的表格。 「分類大小」將作爲度量單位?這應該是一個基本的「階級」屬性(即所有的塑料都是以重量衡量)還是應該依賴於不同的東西? (即塑料類型?採集點類型?)

無論如何,除了數字ID和一些描述性字段之外,基本表中還有很多東西是完全沒問題的。

+0

我向您展示了收集數據的舊方式。我並不是說我在使用舊系統。他們讓我可以用「正確的東西」取代舊系統。至於斌的大小,我們需要知道它是如何測量的,以箱子或磅計,最終報告以磅爲單位。 – mcauthorn

0

難道你不想要的東西,如:

Month | Recycling_Type | Recycling_ID


Week1Plastic2342
Week2Plastic2343
Week2Metal4

然後對每個回收類型一個單獨的表:

Plastic
IDBin Size


23425
23436

1

您的情況看起來像Gen-Spec設計模式的實例。 Gen-spec對於面向對象的程序員來說通過超類 - 子類層次結構是很熟悉的。不幸的是,對關係數據庫設計的介紹往往會忽略如何爲Gen-Spec情況設計表格。幸運的是,它很好理解。關於「關係數據庫泛化專業化」的網頁搜索將產生關於這個主題的幾篇文章。您的一些點擊將成爲此前的關於SO的問題。

訣竅在於子類(專用)表的PK得到分配。它不是由某種自動編號功能生成的。相反,它是超類(廣義)表中PK的副本,因此是FK對其的引用。因此,如果情況是車輛,卡車和轎車,每輛卡車或轎車都會在車輛表中進入,卡車也會在卡車表中進入,其中PK是相應PK的副本在車輛表中。同樣的轎車和轎車表。通過簡單地進行連接就可以很容易地確定車輛是卡車還是轎車,而且您通常都希望以這種查詢方式加入數據。