gpt4 book ai didi

php - 社交网络 - 用户个人资料设计架构问题

转载 作者:行者123 更新时间:2023-11-29 06:19:54 25 4
gpt4 key购买 nike

我正在我的网站上创建用户个人资料,但不知道如何设计:有很多字段,有些是 1:1,例如居住城市、生日等。但是有 50 多个字段是 1:很多 (或者多对多?)比如最喜欢的电影、运动队、约会偏好、屏幕名称、电话号码、电子邮件地址等。当我们以前工作过的公司、以前的学校等时,事情会变得更加复杂。一个人可以属于许多公司该组中有很多字段,例如工作日期、部门、公司名称、行业名称等。

所以问题是如何存储这一切?如果我们规范化所有这些配置文件字段,将会有很多表需要连接。据我所知,对于社交网络,人们推荐采用非规范化方法。但无论如何,我将所有用户详细信息和个人资料详细信息存储在主用户表中,因此每一行都是一个唯一的用户。如果我必须存储所有这些多重偏好,特别是像最喜欢的电影可以有数百个,过去的公司本身有一整组字段,所以用户表中会有很多重复项。

社交网络为此采取什么方法?

最佳答案

社交网络数据存储问题实际上与一般的数据存储问题没有什么不同......规范化和相关的数据是有效“存储”这些数据的最佳方式。 RDBMS 是为了处理这些关系而设计的 - PK-FK 关系和 JOINS 是关系数据库的要点...所以即使您“看到”join join 连接等,数据库(应该)在处理这些连接方面是有效的.

从使用的角度来看,获取相关数据 - 确保您的索引准确且经过优化 - 并利用 View “展平”显示所需的数据...

因此,无论您使用什么应用程序服务器来获取数据,都会调用 VIEW - 它将“显示”给您(开发人员),作为数据的“更扁平”表示,使 UI 和应用程序服务器交互更干净、更高效(在资源和编码方面),

作为一般准则 - 在数据仓库环境中,数据扁平化通常被认为是“可接受的”......当然,我不知道如何展开“标准化程度如何,是‘标准化’”的可怕辩论(标准化的第一至第六种形式...)

我猜您可能会将 SN 视为 OLAP,而不是 OLTP。在这种情况下,“某些”非标准化数据存储是常见的 - 并且可以接受 - 实际上,您可以决定您想要的东西的非标准化程度......例如 - 在您的示例中,工作历史和电影,体育。我认为简单的 1:many 允许在此类项目上重复条目就可以了,而且可能更容易维护......

希望对您有帮助,

关于php - 社交网络 - 用户个人资料设计架构问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4337015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com