0

ユーザーに1つ以上の連絡方法(電子メール、電話、ファックス、その他)を選択してもらいたいとします。また、他を選択した場合は、独自の単一の連絡方法を入力できます。これをデータベースに保存する最良の方法は何ですか?私は3つの可能性を見ます:

  1. set datatype列に加えて、単一の「other_contact」varchar列を使用して、オプションのユーザー入力値を格納します。
  2. 多対多、およびユーザーが入力した列を使用します。したがって、userテーブル、contact_methodテーブル、および2つを接続するuser_contact_methodテーブルがあります。さらに、user.other_contact varchar列を使用して、ユーザーが入力したオプションの値を格納します。
  3. 多対多を使用するだけです。2と同じ設定ですが、ユーザーがcontact_methodテーブルにエントリを追加できるようにします。ただし、これは、「システム」値を追跡するために列を追加する必要があることを意味します(これらはユーザーが変更または削除することはできず、これらのみがドロップダウンに表示されます)。さらに、ユーザーが入力した値を変更できるように、ロジックを追加する必要があります。

上記についてのコメント、またはより良い解決策はありますか?

4

1 に答える 1

0

1人のユーザーと複数の連絡方法の可能性がある場合、それはおそらく1対多の関係です。(複雑さが増し、そのようなモデルのクエリが遅くなるため、可能な限り多対多を避けます。)

users_table 
id INTEGER
name VARCHAR 
etc.

contacts_table
user_id INTEGER -- foreign key on user.id
contact_method ENUM('email', 'phone', 'mail', 'other')
contact_address VARCHAR
etc.
于 2009-07-27T09:05:01.193 に答える