首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设计在线交友网站的用户表?

如何设计在线交友网站的用户表?
EN

Stack Overflow用户
提问于 2010-12-16 18:00:09
回答 5查看 4K关注 0票数 3

我正在做一个本地在线约会网站的下一个版本,PHP和MySQL为基础,我想做正确的事情。用户表相当庞大,随着新版本的推出,预计会有更大的增长,因为会有很多钱花在推广上。

目前的版本,我猜是7-8岁,可能是由一个对PHP和MySQL不太了解的人完成的,所以我必须从头开始。

那里的社区目前拥有200k+用户,预计在未来一到两年内将增长到500k-100万。每个用户的配置文件有100多个属性,我必须能够搜索至少30-40个属性。

正如您可以想象的那样,对于创建一个具有200k行和100列的表,我有点谨慎。我的前任将用户表一分为二...一个包含最常使用和搜索的列,另一个包含其余(和批量)列。但这会导致两个表之间出现很大的同步问题。

那么,你认为这是最好的方式吗?

EN

回答 5

Stack Overflow用户

发布于 2010-12-16 18:09:04

您可以做的是将用户数据拆分到两个表中。

1)表:用户

这将包含用户的“核心”固定信息,如名字、姓氏、电子邮件、用户名、role_id、registration_date和其他类似信息。

与配置文件相关的信息可以放在它自己的表中。这将是一个具有键=> val性质的无限可扩展的表。

2)表: user_profile

字段:user_id,选项,值

user_id: 1

选项: profile_image

取值: /uploads/12/myimage.png

user_id: 1

选项: questions_answered

取值: 24

希望这能帮到你,保罗。

票数 4
EN

Stack Overflow用户

发布于 2010-12-16 18:01:22

实体-属性-值模型可能非常适合您:

http://en.wikipedia.org/wiki/Entity-attribute-value_model

添加一个包含三列的表,而不是拥有100个不断增长的列:

user_idpropertyvalue

票数 1
EN

Stack Overflow用户

发布于 2010-12-16 19:17:43

通常,您不应该牺牲数据库完整性来换取性能。

为此,我要做的第一件事是创建一个包含100万行虚拟数据的表,并使用ab等压力工具测试其中的一些典型查询。它很可能会表现得很好--100万行对于mysql来说是小菜一碟。因此,在尝试解决问题之前,请确保您确实拥有它。

如果你发现性能很差,数据库真的是一个瓶颈,考虑一下一般的优化,比如缓存(从mysql查询缓存到html缓存),获得更好的硬件等等,这在大多数情况下应该是可行的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4459466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档