2012-11-27 55 views
0

對不起,如果這之前已經問過,我想不出如何制定這個問題。如何高效查詢用戶數據庫中的「項目」? (亞馬遜SimpleDB)

我有一個數據庫(特別是在亞馬遜SimpleDB)在我使用2個域的地方。

  • 域1擁有包含一些一般信息的用戶列表。

  • 域2是項目信息列表。

我希望能夠查詢屬於從域1的特定用戶對於這一點,每個項目只能屬於1個用戶的所有物品,從域2的屬性這樣一個,用戶名。

直到知道,我認爲最好的選擇是保持域1的屬性與該用戶有(類似物品1 & & ITEM2 & &項目3 & & ...等)的項目列表,只是查詢對於這個屬性。我認爲這會使它非常高效,但是我意識到屬性限制是1024字節,所以我最終將耗盡空間(因爲我的項目名稱有點長)。

在這種情況下,我想我必須在每次我想要獲取所有用戶項目時在Domain2中執行「select * where userID = something」,但不知何故,這看起來效率不高。 (我仍然可以保留域1中最後更新和數量的項目,以查看本地設備是否需要查詢或本地設備是否具有最新版本)。

任何建議將是偉大的!

(或者我應該問這個計算器中的數據庫?)

回答

0

我不知道亞馬遜的SimpleDB,但在數據庫方面,你有兩個表:第一個是USERS這大概商店的表至少一個用戶ID和用戶名;第二個是ITEMS表,其中存儲物品ID,物品名稱及其當前所有者/用戶。

您不希望將用戶擁有的項目列表存儲在用戶表中的分隔列表中;遍歷這個列表將是痛苦的。除此之外,數據(用戶擁有哪些項目)已經存在於項目表中。

在標準SQL中,你會寫下面的查詢檢索特定用戶擁有

select items.name 
from items inner join users 
on items.user = users.id 
where users.username = 'Luis' 

標準數據庫項目的列表被用來處理表數以百萬計的條目,所以不要擔心效率(至少,只要您添加適當的索引 - 您需要項目表中'用戶'字段的索引)。

相關問題