私のアプリケーションには、グループに所属できるユーザー向けの通知設定があります。グループ管理者はグループ全体の設定を定義できるため、いずれかのユーザーがアクションを実行すると管理者に通知されます。管理者は、グループ設定を上書きする個々のユーザーの設定を定義することもできます。
現在、列を持つデータベースがあります: group_id, action1, action2, action3, ...
. アクションは、そのアクションがグループ内のユーザーによって実行されたときに管理者に通知するかどうかを決定するブール値です。
Group モデルの代わりに User モデルが所有する別のテーブルを作成することもできますが、完全に別のテーブルにまったく同じデータを格納するのは非効率的group_id
ですuser_id
。
別のオプションは、user_id
既に持っているテーブルに追加し、 に null 値を許可することですgroup_id
。ユーザーの通知設定を決定するとき、アプリケーションは最初にユーザーに基づいて設定を選択し、group_id
null でない設定にフォールバックします。データベースには多くの null 値が存在するため、これは効率が悪いように感じますが、私の側での作業が少なくて済むことは間違いありません。
私が説明した 2 つよりも効率的なこの状況の設計はありますか?