对象模型设计

时间:2011-11-23 15:24:08

标签: relational-database

我对处理此类数据的最佳方法有疑问。

在我的系统中,我将拥有许多用户和许多帐户...用户可以属于多个帐户,帐户将拥有许多用户。我猜测实现这一目标的最佳方法是使用三个表

  

用户

     

账户

     

&安培; users_accounts

我的问题是,当有人注册付费帐户时...我应该在哪里存储区分常规用户和帐户持有人的标志? user_accounts表中是否应该有所有者标志?

3 个答案:

答案 0 :(得分:1)

我可以假设一个帐户不能拥有多个用户(1对多关系)吗?在这种情况下,两个表就足够了:

  • users
  • accounts

accounts包含对用户ID的引用。当没有多对多关系时,单独的关系表将是多余的。

然后问题出现了:用户可以同时拥有付费和非付费帐户吗?如果是,则该标志属于accounts。否则,它属于users


考虑到您的澄清,您的三张桌子设计是合适的。您的问题的答案完全取决于您希望付费帐户的工作方式。

  • 付费用户是否会在所有帐户中都有额外的功能?然后该旗帜属于users
  • 任何用户在付费帐户中都有额外的功能吗?然后该旗帜属于accounts
  • 付费用户是否仅在付费帐户中具有额外功能?然后该旗帜属于users_accounts

如果每个帐户只有一个所有者,那么您应该将代表所有者的用户ID放在accounts表中。

答案 1 :(得分:0)

Users表将只包含用户相关数据...姓名,姓氏等... accounts将拥有帐户信息...类型和任何其他数据......

关键是users_accountsUsersaccounts之间的关系表,因此它会包含Usersaccounts的所有关联数据,在那里你应该放置标志,因为在你设置关系时就存在了。

答案 2 :(得分:0)

paid添加user_account标记。

示例属性:

  • user (id, name, street ...)
  • account (id, name ...)
  • user_account (user_id, account_id, paid)

如果用户是高级帐户成员,您可以通过paid列告诉。