【发布时间】:2011-06-28 08:08:31
【问题描述】:
我必须为大学项目设计一个用户帐户/个人资料表。我的基本思路如下:
- 用户帐户表(电子邮件、用户名、密码和一堆其他字段)
- 用户个人资料表。
在我看来,有两种方法可以对用户个人资料表进行建模:
-
将所有字段放在一个表中 [用户资料表]
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)...
-
将常用字段放在一个表中,并设计一个 ProfileFieldName 表,该表将列出 我们想要的所有领域。例如:
[ProfileFieldNameTable] ProfileFieldID int (PK) Name varchar
名称将是“爱好”、“生物”、“兴趣”等...最后,我们将有一个表格,将个人资料与个人资料字段相关联:
[ProfileFieldTalbe]
ProfileFieldID int (PK)
UserProfileID FK FK
FieldContent varchar
'FieldContent' 将存储有关爱好、用户个人简介、兴趣等的小文本。
这种方式是可扩展的,也就是说这种方式添加更多的字段对应一个INSERT。
你觉得这个架构怎么样?
一个缺点是,现在要收集单个用户的所有个人资料信息,我必须加入。
第二个缺点是字段“FieldContent”的类型为varchar。如果我希望它是另一种类型(int、float、date、另一个表的列表框的 FK 等...)怎么办?
【问题讨论】:
标签: database-schema extensibility user-profile