私は、ユーザーがさまざまなアクションの通知を送信するかどうかを指定できる、当社の通知システムを設計しています。
このデザイン パターンの名前は何だろうと思っているので、それを読んで、すべきこととすべきでないことに従うことができます。
ストーリー (要件): ユーザーがサイト (アプリ) でさまざまなアクションを実行すると、アクションが Facebook と Twitter のアカウントに投稿され、メールも送信されます。多くのアクションがあり、Facebook で 6 つ、Twitter で 6 つ、メールで 12 です。そのため、アクションごとに個別の列を作成することは意味がありません。特に、それらの値がデフォルトで true であるためです。
たとえば、ユーザーが私たちのウェブサイトの自分のページに新しい画像をアップロードするとき、Facebook や Twitter に投稿したいので、アプリに画像をアップロードするだけです。
これに対する私の設計は、これらの列 (行の例を含む) を持つ meta_data テーブルです。
id, user_id, namespace, notification, value
0, 1, 'facebook', 'image_upload', false
1, 1, 'twitter', 'video_post', false
2, 10, 'email', 'send_money', false
また、すべてのアクションとその名前空間について、テーブルを作成するときにデフォルトでいくつかの行をデータベースに追加し、すべての値を true に設定します。次に、ユーザー設定ページで、デフォルトですべてチェックされているこれらの設定のチェックボックスを確認できます。ユーザーがチェックを外すたびに、そのユーザー、アクション、および名前空間の新しい行を作成し、値を false にします。