2

データベース設計の一部について助けを求めています。

連絡先のグループと配布リストのグループのデータベースをモデル化する必要があります。

各連絡先は多数の配布リストに含めることができ、各配布リストには多数の連絡先を含めることができます。通常のインスタンスでは、ジャンクション テーブルを使用してこのソリューションを実現できます。

しかし、もう1つ追加することがあります。連絡先には、SMS または電子メールの 2 つの異なる方法で通知を受け取るオプションがあります。

連絡先は、いずれかまたは両方の方法で通知の送信を要求できます。

私が立ち往生している問題の一部は、連絡先が特定の配布リストに応じて異なる方法で通知を受け取りたいということです。

したがって、次のような問題があります:--

CONTACT A is in DL-A - Receives Notification via SMS 
CONTACT A is in DL-B - Recieves Notification via Email & SMS.

連絡先テーブルに連絡先の複数のエントリがないようにしようとしています。各連絡先は一意である必要があります。

誰でも助けることができますか?

4

4 に答える 4

4

別のジャンクション テーブルを使用できます。

contactid, distributionlistid, messagepreference

Messagepreference は、電子メールまたは SMS です。両方が必要な場合は 2 行。DB を変更することなく、新しいメッセージング タイプを追加できます。安全のために、コード内で定数を使用して、列に入れる値を表してください。

または、sendemailおよびsendms列を元のジャンクション テーブルに追加しますが、これには、新しいメッセージング タイプを導入する場合に DB 構造を変更する必要があるという欠点があります。

于 2012-07-25T10:40:18.600 に答える
2

したがって、ジャンクション テーブルのフィールドに追加できます。

ContactsDistributions(ContactId, DistributionId, SMSFlag, EmailFlag)

配布ごとに連絡先が選択した通知の種類を指定するため。

于 2012-07-25T10:42:04.240 に答える
1

ジャンクション テーブルにもう 1 つのフィールドを追加できます。これは、特定の連絡先が特定の配布リストから通知を受け取る方法を表します。

于 2012-07-25T10:41:58.250 に答える
1

この場合、ジャンクション テーブル SMS に 2 つのフィールドを追加し、その件で通知を受け取りたい場合にのみ、ブール値と true に設定されたメールの両方を送信します。これにより、組み合わせリストと連絡先で通知を別々に設定できます。

また、リストからの削除をどのように処理したいかによっては、結合テーブルに制約を追加して、2 つのフィールドの少なくとも 1 つが true になるようにして、通知が常に送信されるようにすることもできますが、Google グループではいくつかにアクセスできます通知を受け取らないように選択したリスト。

于 2012-07-25T10:43:56.610 に答える