2012-11-27 53 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' 

标准数据库项目的列表被用来处理表数以百万计的条目,所以不要担心效率(至少,只要您添加适当的索引 - 您需要项目表中'用户'字段的索引)。

相关问题