用于存储用户配置文件的更好的数据模型是啥?
Posted
技术标签:
【中文标题】用于存储用户配置文件的更好的数据模型是啥?【英文标题】:What is a better data model to use to store user profiles?用于存储用户配置文件的更好的数据模型是什么? 【发布时间】:2012-01-03 05:23:53 【问题描述】:我正在研究关系数据库的数据模型,我必须在其中存储用户信息以及用户的个人资料,例如教育水平、个人兴趣、爱好等。类似于大多数社交网站所拥有的或任何其他允许您建立个人资料的系统。
我无法决定是将所有这些信息存储在一个用户表中,还是将其分成两个表更好。
如果我将它分成两个表,我将拥有只存储用户 ID、姓名、电子邮件、出生日期、性别的用户表。
UserProfiles 将存储与配置文件有关的其余内容,与 Users 表共享相同的 UserID
【问题讨论】:
您的网站/数据库将有多大/多复杂? 【参考方案1】:如果单个用户的多个配置文件意味着一对多关系,那么我建议您创建 2 个表,一个是用户,另一个是用户配置文件。
如果一个用户只有一个配置文件,那么您应该只创建一个包含用户属性和配置文件的表。
【讨论】:
单个用户只有一个配置文件。我主要关心的是搜索的响应时间。假设我有诸如“最喜欢的音乐”或“最喜欢的书”之类的文本字段。如果用户想在这些字段上进行搜索以找到匹配项,最好将这些项目存储在单独的表中(UserID、FavoriteMusic [varchar(2000)])吗? 我相信这是最简单的答案。【参考方案2】:采用更模块化的设计,这将带来更大的灵活性和控制力。我建议将数据保存在单个表中的唯一情况是您计划经常查询相同的数据。
有一篇很棒的文章here 深入探讨了为什么连接很昂贵。您最终应该根据链接中提供的信息做出决定,但是正如我之前提到的,如果您打算经常同时查询这两个表,那么将数据保存在一个表中。
【讨论】:
谢谢!很棒的帖子。我去看看。【参考方案3】:我认为,为了决定选择哪种数据模型,只需查看一些类似需求的Datamodels,它们在this Datamodel Library中介绍。
特定于您的用户配置文件数据模型要求,this link may be useful。
希望这些链接有用。或者我得到了这个描述 facebook 类型数据模型的数据模型图像:
【讨论】:
链接到外部资源总是好的,但是你能总结一下你的答案的内容吗?有时外部链接会消失或更改,然后您的回答将不再有用。以上是关于用于存储用户配置文件的更好的数据模型是啥?的主要内容,如果未能解决你的问题,请参考以下文章