簡體   English   中英

價格數據的數據庫設計

[英]Database design for price data

我有一個將組件存儲在組件表中的數據庫。 組件價格還有第二張表。 該表具有一個映射到組件ID的字段。 我的價格表需要存儲一堆不同價格(10、100、1000、10K,100K,1M)的信息。 問題是,將來有可能存儲其他價格類型,例如25K或50K。

截至目前,我的價格表如下所示:

id    component_id    type    price

該類型當前可以采用1-6的值。 這很好,因為它使我將來可以很輕松地添加新的價格類型。

另一個選項是價格表,如下所示:

id    component_id    price_10    price_100    price_1000    price_10K    price_100K    price_1M

但是在這種情況下,每次添加新的價格類型時,我都需要添加一個新字段。

我希望這里的人會同意第一種方法。

但是使用第一種方法時,我無法顯示一個頁面,該頁面將顯示數據庫中所有組件的價格(可能有或沒有)(在這種情況下應顯示為0)6。 顯然,使用第二種方法將很簡單。

這是我到目前為止的查詢:

SELECT * FROM `component` LEFT JOIN `component_cost` ON `cmpcst_component` = `cmp_id`

編輯:我想我會從組件價格表中顯示一些示例數據:價格是金額X的單位價格。X的范圍是10到100萬。 因此,我的組件價格表中可能會有這樣的內容:

id    component_id    type    price
1     1               1       0.50
2     1               2       0.45
3     1               3       0.40
4     1               4       0.35
5     1               5       0.32
6     1               6       0.30

第一種選擇好得多。

為了顯示數據,請創建帶有數據透視表的視圖。

您可以在這里找到幫助http://en.wikibooks.org/wiki/MySQL/Pivot_table

創建兩個表,一個用於組件,一個用於組件的價格(最小數量)。 然后,您可以為每個組件添加盡可能多的價格。 現在和將來。

這是第一個示例的變體,您只是不對類型進行硬編碼,而是具有與特定價格相關的數字。

嘗試類似的方法:

select * from component c join compcst_component cc on true and c.id = cc.cmp_id;

我不確定我是否會關注您。.希望您能給我們表結構,但這是一種嘗試:

SELECT c.cmp_id, ISNULL(p.price, 0) AS Price
FROM component AS c INNER JOI component_cost AS p
ON p.cmpcst_component = c.cmp_id

也許我沒有正確的列對表匹配,但是請嘗試一下。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM