ユーザーに1つ以上の連絡方法(電子メール、電話、ファックス、その他)を選択してもらいたいとします。また、他を選択した場合は、独自の単一の連絡方法を入力できます。これをデータベースに保存する最良の方法は何ですか?私は3つの可能性を見ます:
- set datatype列に加えて、単一の「other_contact」varchar列を使用して、オプションのユーザー入力値を格納します。
- 多対多、およびユーザーが入力した列を使用します。したがって、userテーブル、contact_methodテーブル、および2つを接続するuser_contact_methodテーブルがあります。さらに、user.other_contact varchar列を使用して、ユーザーが入力したオプションの値を格納します。
- 多対多を使用するだけです。2と同じ設定ですが、ユーザーがcontact_methodテーブルにエントリを追加できるようにします。ただし、これは、「システム」値を追跡するために列を追加する必要があることを意味します(これらはユーザーが変更または削除することはできず、これらのみがドロップダウンに表示されます)。さらに、ユーザーが入力した値を変更できるように、ロジックを追加する必要があります。
上記についてのコメント、またはより良い解決策はありますか?