2011-06-28 19 views
3

大学のプロジェクトのユーザーアカウント/プロフィールテーブルを設計する必要があります。私が持っている基本的な考え方は以下の通りである:ユーザープロフィールのデータベースデザイン

  1. ユーザアカウント(メール、ユーザ名、PWD、および他の分野の束)
  2. ユーザー・プロファイル・テーブル用のテーブル。

ユーザー・プロファイル・テーブルをモデル化するための2つの方法があるように私には思える:

  1. は、テーブル内のすべてのフィールド [UserProfileTable]

    UserAccountID (FK) 
    UserProfileID (PK) 
    DOB   Date 
    Gender   (the id of another table wich lists the possible gender) 
    Hobby   varchar(200) 
    SmallBio  varchar(200) 
    Interests  varchar(200) 
    

    を入れて...

  2. 共通フィールドをテーブルに入れ、ProfileFieldNameテーブルを設計します。これはですすべてのフィールドが必要です。たとえば、次のように

    [ProfileFieldNameTable] 
    
    ProfileFieldID int (PK) 
    Name   varchar 
    

名前は「利益」など、「趣味」、「バイオ」になります...最後に、私たちは、プロファイルフィールドを持つプロファイルを関連付けるテーブルを持っています:

[ProfileFieldTalbe] 
ProfileFieldID int (PK) 
UserProfileID FK FK 
FieldContent  varchar 

'FieldContent'は、趣味、ユーザーの趣味、興味などについての小さなテキストを保存します。

この方法は拡張可能です。つまり、このようにフィールドを追加するとINSERTに対応します。

このスキーマについてどう思いますか?

1つの欠点は、1人のユーザーのすべてのプロファイル情報を収集するために、今は参加する必要があることです。

フィールド 'FieldContent'がタイプvarcharであるという欠点があります。何か別のタイプ(intfloatdate、FKとリストボックスなどの別のテーブル)にしたい場合はどうすればいいですか?

+0

これを解決しましたか? – JCM

答えて

2

私はが良いだろう第二のオプションを示唆して、あなたは実際の欠点はありません述べた 欠点、

使用が加入、1つのまたは複数のテーブルからデータを取得する方法の一つである

2) 'FieldContent'はvarchar型であることを理解しています。他のすべてのフィールドで 'FieldContent'のみを作成することを理解しています。

この場合、対応するフィールドごとに 'FieldContent'あなたはあらゆる種類のものを与えることができますあなたが望むデータタイプの最初のオプションに来る

1)あなたは多くの混乱を招くことができる1つのテーブルにすべてのフィールドを入れて、いずれかの要件が

2を変更した場合、後から拡張するために少ない可能性を提供している場合)冗長性もたくさんあります。

関連する問題