数据库设计:可以访问特定页面的用户

时间:2011-01-15 19:17:35

标签: php mysql database database-design web-applications

我正在开发一个允许用户管理其托管帐户的应用程序。目前,数据库只是用户表和 hostingaccounts 表。但是,我不知道将这些链接到表格的最佳方法是什么。

用户表是否应该有一个名为“owned_accounts”的列,其中插入的数据如“5,18,28”,然后将其拆分为应用程序?你有什么建议?

5 个答案:

答案 0 :(得分:2)

如果只有一个用户可以是托管帐户的所有者,请使用 hostingaccounts 上的外键,例如 ownerid

如果您的托管帐户可以由多个用户拥有,请使用 ownershipid userid hostingaccountid添加额外的表格,例如 hostingaccountsownerships 并从那里获取。

答案 1 :(得分:0)

创建一个包含2列的第三个表:user_id,account_id。这样,一个用户可以连接到多个帐户,反之亦然。这样,您可以轻松地连接这三个表,以找出用户可以使用的帐户等。

答案 2 :(得分:0)

如果用户可以拥有多个hostingaccount,则需要使用链接表UserId + HostingAccountID作为密钥。

答案 3 :(得分:0)

如果hostaccounts记录的用户是1比1的关系,那么您的解决方案可以正常工作,但如果用户有可能拥有超过1个hostingaccount,那么“user_id”列应该在托管帐户表中。< / p>

如果您认为您需要多对多的关系,那么您可以创建一个包含user_id和hosting_account_id的第三个表。

最佳答案实际上取决于系统的目标和限制。

答案 4 :(得分:0)

使用您的描述我看到以下实体和关系:

users(
   user_id (PK)
)

accounts(
   account_id (PK)
)

user_accounts(
   user_id    references users(user_id)
  ,account_id references accounts(account_id)
)

根据您的要求,您可以通过不同方式在user_accounts上定义密钥以强制执行约束:

1. primary key(user_id)

用户可能只拥有一个帐户。帐户可能由多用户拥有。

2. primary key(account_id)

用户可能拥有多个帐户。帐户只能由一个用户拥有。

3. primary key(user_id, account_id)

用户可能拥有多个帐户,并且帐户可以由多个用户拥有。

如果以上都不符合您的要求,您必须提供其他信息。