2016-04-03 32 views
0

的懸而未決的號碼,我有我填寫下面的東西的一種形式:如何設計一個數據庫,在那裏我可以添加項目

Nick: SbsNick; 
Item: SomeItem1; Price: PriceOfItem1 
Item: SomeItem2; Price: PriceOfItem2 
Item: SomeItem3; Price: PriceOfItem3 
................................ 

我可以用不同的輸入數量添加項目。這意味着每個尼克可以有不同數量的項目。

我要創建我在哪裏可以查詢

SELECT ? FROM items WHERE Item="SomeItem" 

和接收SomeItem的所有缺口和價格數據庫,即我想用表一樣,落得:

Nick |Price 
------------- 
Jack |20 
BlackB |18 
Karl |25 
............. 

我在設計這樣的數據庫時有問題,因爲我覺得我缺少一個額外的維度。如果我想修復一些表格,我發現我需要在某個表格中使用無限量的列。如果我想限制表和列的數量,我會發現單元格的行爲必須像數組一樣。

有沒有一種巧妙的方法來設計這樣的數據庫?

+1

第1步 - 確定您必須滿足的業務需求。第2步 - 設計一個滿足這些要求的數據庫。第3步 - 編寫與數據庫交談的用戶界面。換句話說,你正在以錯誤的順序做事。 –

回答

1

我認爲你需要研究關係數據庫。 我不明白你確切的問題是什麼。

您需要三張表: USERS, ITEMS, PURCHASES。一個用於表示用戶,另一個用於項目,最後用於表示兩者之間的關係

USERS(ID_USER, NAME, NICK, REGISTER_DATE) 

ITEMS(ID_ITEM, DESCRIPTION, PRICE) 

PURCHASES(ID_PURCHASE, ID_USER, ID_ITEM, PRICE, PURCHASE_DATE) 

我已經使用的名稱購進因爲我個人不知道你的問題的用戶和項目之間的關係的確切性質,可自由命名任何你想要的是第三個表。

對於用戶在表USERS或表ITEMS中執行的每次購買,都不需要額外添加新列,只需在表PURCHASES中插入新行。

+0

用戶可以在我的案例中添加的項目數量非常大,用戶可以只進行一次「購買」。所以在你的解決方案中,我最終會在id_user的「購買」中以重複的方式進行重複。我看到它的作品,但我想知道如果沒有這麼大的表「購買」 –

+1

@FallenApart,這是做這件事的常見方式(雖然我還沒有得到您的要求/業務邏輯)。我們稱之爲關係數據庫,因爲我們定義了建議的項目/對象/實體之間的關係,如RubioRic。 –

+0

@PaulSpiegel我認爲的問題是我天真地認爲我可以避免創建這樣的表「purchuses」。但是,您的解決方案將適用於我,並使用它。 –

相關問題