我必须为大学项目设计一个用户帐户/个人资料表。我的基本想法如下:
- 用户帐户表(电子邮件、用户名、密码和一堆其他字段)
- 用户配置文件表。
在我看来,有两种方法可以对用户配置文件表进行建模:
将所有字段放在一个表中 [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)
...
将公共字段放在一个表中并设计一个 ProfileFieldName 表,该表将列出我们想要的所有字段。例如:
[ProfileFieldNameTable] ProfileFieldID int (PK) Name varchar
名称将是“爱好”、“生物”、“兴趣”等......最后,我们将有一个表格,将个人资料与个人资料字段相关联:
[ProfileFieldTalbe]
ProfileFieldID int (PK)
UserProfileID FK FK
FieldContent varchar
'FieldContent' 将存储有关爱好、用户的个人简介、他的兴趣等的小文本。
这种方式是可扩展的,这意味着通过这种方式添加更多的字段对应于一个INSERT
.
你觉得这个架构怎么样?
一个缺点是,现在要收集单个用户的所有个人资料信息,我必须加入。
第二个缺点是字段 'FieldContent' 的类型是varchar
。如果我希望它是另一种类型(int
, float
, a date
, FK 到另一个表的列表框等...)怎么办?