私はグループを持つシステムを作成しています。これらはFacebookグループのように考えることができます。ユーザーは新しいグループを作成できます。現在、私は次のタイプのグループを持っています:Facebookのようなグループを持つシステムのデータベース設計
- 都市グループ - 特定の都市に基づくグループ。たとえば、「London Buy and Sell Group」
- 学校グループ - 学校に基づくグループ。たとえば、「London University Study Group」
- 興味グループ - 場所に結ばれていないグループ。たとえば、「50's Over Knitting Group」
今後、さらにグループタイプが追加されます。各グループは、オプションの異なる型を持つことができますが、すべてのグループが同じ基本的なデータを持っている:
- ID
- クリエータID
- 名
- オプションの説明
Iをこのためのデータベース設計をまとめることに苦労しています。私の最初の考えは、異なるグループの異なるテーブルを作成することでした。
たとえば、group
という単一のテーブルがあります。このテーブルは、id
,creator id
,name
,description
,member count
,timestamps
を有する。
他のグループを表すテーブルがあり、それをgroup
にリンクします。だから私は、group_id
、city_id
を含むcity_group
テーブルがあります。他のグループタイプについても同様です。
私がこれを持っている唯一の問題は、interest_group
には通常のgroup
という余分なデータがありません。しかし、インタレストグループのみを照会できるようにするには、interest_group
テーブルを作成することが理にかなっていると思っていました。それは次の列だけを持っています:id
、group_id
、timestamps
...この目的のためだけにテーブルを持っているのは少し無駄です。ここで
は、私の解決策に問題、またはこの設計上の問題を解決するために任意のより良い方法はありますか?
あなたはグループのいくつかの定義済みの型を持っていますか?ユーザーが新しいグループを作成するとどうなりますか?それは利益団体になるのだろうか?または、後でグループを追加できるのはあなただけですか? –
ユーザが作成したグループは 'city group'と' interest group'になります。管理者だけが「学校グループ」を作成できます。将来的には、スポーツチームを代表する「スポーツグループ」など、他のタイプのグループも存在します。 – BugHunterUK
ここにある興味深い質問です。これらのグループに所属するメンバーはどうですか?ユーザーテーブルとユーザーとグループの間のリンクテーブルのようなものがありますか? –