2011-11-23 71 views
1

我对处理这种类型的数据的最佳方式有疑问。对象模型设计

在我的系统中,我将拥有许多用户和许多帐户......用户可以属于多个帐户,并且帐户将拥有许多用户。我猜最好的方式来完成,这是三个用表

用户

& users_accounts

我的问题是,当有人为付费帐户报...我应该在哪里存储区分帐户和帐户持有人的常规用户的标志? users_accounts表中是否应该有owner标志?

回答

1

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

  • users
  • accounts

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

接下来的问题是:可以将用户拥有有偿和无偿的帐户?如果是这样,该旗帜属于accounts。否则,它属于users


考虑到您的说明,您的三表设计是适当的。您的问题的答案完全取决于您想要付费帐户的工作方式。

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

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

+0

对不起,我想我没有澄清。每个帐户也有许多用户。 – ThinkingInBits

+0

用户不会有付费帐户和未付款帐户,但他们可能是'帐户持有人'或者'帐户成员' – ThinkingInBits

+0

在这种情况下,我会将该标志存储在帐户表中。如果该帐户已付款,则所有用户都可以获得付款,对吗? –

0

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

的关键是users_accountsUsersaccounts之间的关系表,因此它将具有从Usersaccounts的任何链接数据,并且您应该放置该标志,因为在您设置关系时存在该标志。

+0

那里在users_accounts表中? – ThinkingInBits

+0

我对表名称感到困惑... users_accounts是关系表,那里你应该把这个标志...结构应该看起来像这样: 'id - id_users - id_accounts - flag' – admin

0

将一个paid标记添加到user_account

例子属性:

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

您可以通过paid列告诉我们,如果用户是一个溢价账成员与否。