2011-06-28 46 views
3

我必須爲大學項目設計一個用戶帳戶/配置文件表。基本的想法,我有如下:用戶配置文件數據庫設計

  1. 用戶帳戶(電子郵件,用戶名,PWD,以及很多其他的領域)
  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

您對這種模式有何看法?

一個缺點是要收集單個用戶的所有配置文件信息,現在我必須進行連接。

第二個缺點是字段'FieldContent'的類型爲varchar。如果我想要它是另一種類型(int,floatdate,FK到另一個列表框等)?

+0

您已解決此問題? – JCM

回答

2

我建議第二個選項會更好, 你提到的是不是真正的缺點的缺點,

使用連接的方式,從1個或多個表中檢索數據之一,

2)'FieldContent'的類型是varchar:我知道你將只爲所有其他字段創建'FieldContent'

在這種情況下,我建議你可以爲每個對應的字段設置'FieldContent'你可以給任何一種您希望的數據類型。

來到第一個選項,

1)如果你把所有的領域在一個表中可能會導致很多的困惑,並提供更少的可行性後延長,如果有需求的變化

2)還會有很多冗餘。