0

抱歉,如果以前有人问过这个问题,我想不出如何提出这个问题。

我有一个使用 2 个域的数据库(特别是在亚马逊 SimpleDB 中)。

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

  • 域 2 是具有项目信息的项目列表。

我希望能够从域 1 中查询属于特定用户的所有项目。为此,每个项目只能属于 1 个用户,因此域 2 的属性之一是用户 ID。

直到知道我认为最好的选择是在域 1 中保留一个属性,其中包含该用户拥有的项目列表(类似于 item1&&item2&&item3&&...等),然后只查询这个属性。我认为这会使其非常高效,但是我意识到属性限制是 1024 字节,所以我最终会用完空间(因为我的项目名称有点长)。

在这种情况下,我认为每次我想获取所有用户项目时,我都必须在 Domain2 中执行“select * where userID = something”,但不知何故,这似乎并不那么有效。(我仍然可以保留域 1 中的最后更新和项目数量,以查看我的本地设备是否需要查询,或者它是否在本地具有最新版本)。

任何建议都会很棒!

(或者我应该在stackoverflow中问这个数据库吗?)

4

1 回答 1

0

我不知道 amazon-simpledb,但在数据库方面,你有两个表:第一个是 USERS 表,它可能至少存储一个用户 ID 和用户名;第二个是存储项目 ID、项目名称及其当前所有者/用户的项目表。

您不想将用户拥有的项目列表存储在用户表的分隔列表中;遍历这个列表会很痛苦。除此之外,数据(哪些用户拥有哪些项目)已经存在于项目表中。

在标准 SQL 中,您将编写以下查询来检索特定用户拥有的项目列表

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

标准数据库是为处理具有数百万条目的表而构建的,因此不必担心效率(至少,只要添加适当的索引 - 您需要在 items 表中的“用户”字段上建立索引)。

于 2012-11-27T08:14:20.660 回答