1

特定のニッチに焦点を当てたソーシャルネットワーキングWebサイトに取り組んでいますが、ユーザープロファイル情報の保存について質問がありました。ユーザーが性別、職業、好き、嫌いなどの情報を保存できるようにしたいのですが、将来、プロファイルフィールドを追加したい場合は、次のような方法で保存したいと思います。とても簡単に、そしておそらく管理インターフェースを通してさえ。

これまでに作成したデータベーススキーマは次のとおりです。

ユーザー

  • id(PK)
  • Eメール
  • パスワード(など...)

ProfileFields(これには、「性別」、「職業」などのフィールドと、予想される入力のタイプ(テキスト、リスト、チェックボックス、ラジオボタンなど)が格納されます)

  • id(PK)
  • field_label
  • is_optional
  • value_type(列挙型:text、textarea、list、dropdown、checkbox、radio)
  • is_multiple_allowed(実際にはリストにのみ有効)

ProfileFields_Presets (これにより、任意のProfileFieldsエントリの事前設定された選択可能な値が格納され、 value_typeがリスト、ドロップダウン、チェックボックス、またはラジオの場合にのみエントリがあります)

  • id(PK)
  • guid(HTML要素IDなどの場合)
  • profile_field_id(FK:ProfileFields)
  • sort_order
  • field_preset(例:性別の場合は「男性」、「女性」)

User_ProfileFields(これにより、さまざまなProfileFieldsエントリのユーザー入力が保存されます)

  • user_id(PK、FK:ユーザー)
  • profile_field_id(PK、FK:ProfileFields)
  • user_value(ユーザーが入力したもの。これはFK:ProfileFields_Valuesまたはユーザーが入力したテキストになります)

ユーザーが選択できるプリセット値を持つ「Gender」などのプロファイルフィールドは、(プリセット値を格納するための)ProfileFields_Valuesデータベースを実装しますが、「Occupation」などのフィールド(通常は制限がありません)は実装しません。

基本的に、これで十分かどうか疑問に思っています。このようにした結果、問題が発生する可能性はありますか?

また、上記のUsers_ProfileFieldsテーブルでどちらがより効率的でしょうか?外部キーIDまたはカスタム入力のいずれかを格納できる*user_value*フィールドが1つだけありますか?または、それらを*user_value_id*と*user_value_text*に分けます。ここで、2つのうちの一方は常に空になり、もう一方にはデータが入力されますか?

4

1 に答える 1

1

そのままにしておきます。user_value_id と user_value_text に分けます。User_value_id をキーとして

于 2012-07-19T21:59:05.587 に答える