2012-03-21 8 views
0

イム持つ難しさ:ユーザ、グループ、およびタグデータベース設計次のシナリオのためのデータベース構造を設計しようと

私のデータベースは、一般的なユーザー情報のユーザーIDが含まれている必要があり、姓、 姓、JoiningDate。

各ユーザーはグループに含めることができます。

各グループには「タグ」が付いており、複数のタグを持つことができます。ユーザー も利用可能なグループのリストを返すことができます( タグでフィルタリング)。

(グループに付随するタグで)グループを検索できるようになり、 (姓またはユニークIDで特定のユーザーを検索する)。 )。 は、利用可能なグループ(タグでフィルタリング)のリストと、特定のグループ(姓でフィルタリングされ、 加入日によってフィルタリングされた)のメンバー を返すこともできます。

もあり、ユーザーの グループは、(ブラボーグループ 『と『デルタ』 グループ「のメンバーである』 上のクエリ)グループの数に属して発見する手段であること、および追跡する必要がありますグループ内で送信されたメッセージの数( フォーラムなど)

これはちょうど2つのテーブルですか?または、それは3つのテーブル...ユーザー、グループ、タグである必要がありますか? iveはリレーショナルデータベースを作ってから1年近く経っています。誰かがこのデータベースデザインを視覚的に表現できるかどうか疑問に思っていましたか?

答えて

5

ユーザー、グループ、タグ、リンクテーブルのUserGroupsとGroupTagsという5つのテーブルをお勧めします。

これは、ユーザーとグループ、およびグループとタグの間に多対多の関係があるように見えるためです。リンクエンティティは、リレーショナル設計でエンティティを多対多の関係で結合する必要があります。

--------- ------------ -------- 
| Users | | Groups | | Tags | 
--------- ------------ -------- 
    |   |  |  | 
    |   |  |  | 
    /|\  /|\ /|\  /|\ 
    -------------- ------------- 
    | UserGroups | | GroupTags | 
    -------------- ------------- 
+0

ありがとうございました。これをダイアグラムに表示することは可能でしょうか? –

+1

@ギャリス:それは助けになるのでしょうか? –

+0

ha私はあなたが時間をかけてどのようにしたのが好きです。私はちょうどスクリーンダンプを意味していました。 +1 –

0

少なくとも3つのユーザー、グループ、タグ。

グループとタグの間に多対多の関係(あなたの説明からの前提)を使用しているので、グループとタグをリンクするためのクロステーブルが必要になることがあります。

1人のユーザーが複数のグループに所属できる場合は、ユーザーとグループの間にクロステーブルが必要です。

関連する問題