我应该为社交网络数据库的用户及其个人资料创建单独的表吗?

Posted

技术标签:

【中文标题】我应该为社交网络数据库的用户及其个人资料创建单独的表吗?【英文标题】:Should I create separate tables for users and their profiles for a social network database? 【发布时间】:2011-02-18 05:06:09 【问题描述】:

我想为社交网络设计一个数据库,为用户提供个人资料。我应该为用户及其个人资料使用单独的表格,还是只为用户和其中的所有属性使用一个表格?

【问题讨论】:

【参考方案1】:

如果你想做大,那就为用户做一个单独的。

用户和属性同表的优势:

更简单的 SQL 查询。 如果您假设您将始终需要这些属性,那么就少了一个连接。

分表的优点:

在现实生活中,您并不总是需要属性。 当您需要将其他事物与用户配对时,您不需要所有属性。

【讨论】:

【参考方案2】:

如果您要使用关系数据库,我会推荐一个单独的表(规范化、外键等)

如果您有兴趣尝试其中一个文档存储数据库(例如 MongoDB、CouchDB、RavenDB),那么我会首先考虑您是否在访问用户时通常访问属性。如果是这样,那么您应该将属性作为嵌入文档放置在用户内部。

祝你好运!

【讨论】:

【参考方案3】:

将它们分开,用户和配置文件松散耦合从长远来看会有所帮助。个人资料可以是社区、组,而不仅仅是用户,所以我建议将它们分开。

【讨论】:

以上是关于我应该为社交网络数据库的用户及其个人资料创建单独的表吗?的主要内容,如果未能解决你的问题,请参考以下文章

片段或活动?最好在社交媒体应用中显示用户个人资料?

有限的个人资料,如 Facebook

关于 Facebook 等社交网络的数据库模式

构建社交网络类型应用程序的模式?

为社交网站设计朋友表

安卓社交网络应用