2011-11-23 7 views
1

このタイプのデータを処理する最良の方法について質問がありました。オブジェクトモデルの設計

私のシステムでは、多くのユーザーと多くのアカウントを持ちます...ユーザーは多くのアカウントに所属でき、アカウントには多くのユーザーが所属します。私はこれを実現する最良の方法は、3つのテーブル

ユーザー

& users_accounts

私の質問は、誰かが有料アカウントにサインアップするとき、あるアカウントである推測しています...アカウントの通常のユーザーとアカウント所有者を区別するフラグはどこに保存する必要がありますか? users_accountsテーブルに所有者フラグがありますか?

答えて

1

1つのアカウントに複数のユーザー(1対多の関係)を割り当てることはできません。その場合、二つのテーブルは十分であろう。

  • users
  • accountsユーザIDへの参照を含むaccounts

。多対多の関係がない場合は、別の関係表が不要になります。

次に、問題が発生します。ユーザーは有料アカウントと未払いアカウントの両方を持つことができますか?その場合、フラグはaccountsに属します。それ以外の場合はusersに属します。


あなたの明確化を考慮すると、3つのテーブルデザインが適切です。あなたの質問に対する答えは、支払ったアカウントをどのように働かせるかによってまったく異なります。

  • 有料ユーザーは、すべてのアカウントで追加機能を利用できますか?その後、フラグはusersに属します。
  • ユーザーは有料アカウントで追加機能を利用できますか?その後、フラグはaccountsに属します。
  • 有料ユーザーは有料アカウントでのみ追加機能を利用できますか?その後、フラグはusers_accountsに属します。

すべてのアカウントは一つだけオーナーを持っている場合は、accountsテーブルに所有者を表すユーザIDを入れる必要があります。テーブルにはユーザーのみに関連するデータ...名前、姓、などがあります

+0

申し訳ありませんが、私は明確にしていないと思います。各アカウントにも多くのユーザーがいます。 – ThinkingInBits

+0

ユーザーは有料で未払いのアカウントを保有していませんが、話すのに「アカウント所有者」または「アカウントメンバー」 – ThinkingInBits

+0

です。この場合、アカウントテーブルにフラグを保存します。アカウントが支払われれば、すべてのユーザーが支払われます。 –

0

Users ... accountsアカウント...タイプおよびその他のデータの情報を持っています...

キーusers_accountsUsersaccountsの間のリレーションテーブルなので、Usersからaccountsへのリンクデータがあります。リレーションを設定すると、そこにフラグが入るはずです。

+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列で伝えることができます。

関連する問題