ユーザーとそのグループを 3 つのテーブルと 2 つのテーブルに格納することの長所と短所について疑問に思っています。
2テーブルのメリット
- グループは簡単にユーザー自身である可能性があり、ほとんどのシナリオでは、ユーザーと同じフィールド (名前、画像、パスワード、電子メールなど) をすべて共有しているように見えます。
3テーブルの長所
- 3 番目
groups
のテーブルがあると、より明確になるため、開発者が理解したり維持したりするのが容易になる可能性があります。
3 つのテーブルの短所 1. 上記の「2 つのテーブルの長所」の 1 を実行しないことにより、アプリケーション コード全体で DRY 原則に違反します。
他に何を考えるべきですか?
2 つの必須テーブルは、users
テーブルとgroup_member
テーブルです。
+---------+ +------------+
| users | | group_member | +----------+
+---------+ +------------+ | groups |
| user_id |----->| user_id | +----------+
| name | | group_id |<----| group_id |
| pass | +------------+ | name |
| ... | | ... |
+---------+ +----------+
**theoretical 3rd table**
注:表のuser_id
とは両方ともgroup_id
、表group_member
の を指してuser_id
います。users