私は、ユーザーに自分自身に関する情報と一致するユーザーの好みに関する情報を提供させることにより、出会い系サイトと同じように機能するFacebookWebアプリケーションを作成しています。
私はこのためのデータベースを作成しており、次の設計を念頭に置いています。
- メンバーテーブル: FBIDを主キーとして使用しているユーザーに関する情報が含まれています。
- プリファレンステーブル: ユーザーが必要とするプリファレンスに関する情報が含まれています。
ユーザーが設定を指定できるフィールドは約20ありますが、それらはすべてオプションです。「設定」テーブルを構成する最善の方法がわからないため、現在2つのアイデアがあります。
解決策1: Facebook IDの外部キーを使用し、照合できるフィールドごとに新しい列を作成します。私が見ることができる問題は、値が指定されていないフィールドのデータベースに多くの「null」値が存在することです。
- データベースの「null」値はスペースを占有しますか、それとも他の問題を引き起こしますか?
解決策2: Facebook IDの外部キーを再度使用しますが、次の2つの列では、キーと値のペアのアプローチを使用します。したがって、一方の列にはユーザー設定のIDが含まれ、もう一方の列にはその値が含まれます。ユーザー設定ごとに、「ユーザーID」-「設定ID」-「値」という構造のレコードがあります。
- これに関する問題は、「value」列の値のタイプが「preferenceID」列の内容に依存することです。
私の質問:
- どちらのアプローチが良いですか?
- この種のWebアプリケーションに対する標準のスキーマソリューションはありますか?