ユーザー モデルとタスク モデルがあります。
ユーザーがタスクを作成します。これは単純に思えます: タスクには user_idforeign_key があります
しかし、今は共有を導入しています。現在、タスクはユーザーと多対多の関係にありますが、所有者に属しています。
- タスクに user_id を残す (おそらく「owner_id」に名前を変更する) - そして、多対多の結合テーブル (user_tasks または shared_user_tasks) を、共有されているモデル タスクのみにします。
または、次のこともできます: - タスクの user_id を削除します - そして、user_tasks をブール値の「is_owner」との純粋な多対多の関係にして、そのユーザーが所有者かどうかを教えてくれます
または、次のことができます: - タスクの user_id を削除します - そして、user_tasks に shared_user_id と owner_id の両方をリストします。これは、一部のレコードでは、shared_user_id と owner_id が同じ数になることを意味します (上記よりも難しいクエリ)。
ベストプラクティスによると、どちらがより健全ですか?
お時間をいただきありがとうございます。
そして、最初の答えが示唆するように (私は何らかの理由で受け入れるのを少しためらっていますが)、概念的には、2 つの役割は異なります。1 人はタスクの所有者で、もう 1 人は単にタスクを共有された人です。