2011-06-28 47 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)还会有很多冗余。