MySQL表设计结构用户偏好

标签 mysql database-design web query-optimization

我最近的任务是帮助建立一个约会网站的数据库。我对数据库的概念一点都不陌生,但我遇到了障碍,不知道如何进行。

请注意,我曾尝试搜索答案,但没有一个结果非常清楚,这就是我自己问这个问题的原因。此外,我熟悉 1 对 1、1 对多和多对多的概念。

该网站的用户将选择他们在匹配中寻找的内容,并提供他们自己的匹配信息。

每个用户有 8 或 9 个属性。其中 3 个属性可以有多个值,我能描述的最好方式是一组应该可搜索的复选框(例如,用户可以具有外向、关心和有趣的个性)。

根据我的搜索,最受欢迎的答案是:

  1. 在一张表中为每个复选框设置一个字段
  2. 使用多对多关系,每个复选框都是表中的一条记录

而且,我应该存储他们正在寻找的内容,还是应该将其留作用户自行运行的查询?

如果我存储用户正在寻找的内容,他们将针对相同的 8 到 9 个属性进行搜索,但所有这些属性都可以包含多个值(例如,您只能是一种性别,但您可能正在寻找某人任何性别)。

我希望能够存储用户在匹配项中查找的内容,以便可以自动建议匹配项,但我不知道如何以有效的格式创建此结构(如果有的话)。

但我不知道其中哪一个或我不知道的第三种解决方案最适合网站设计。我本来以为我可以让每个属性有多个值,一个 BIT 字段,每个位是一个复选框,但后来我意识到我不知道我是否可以有效地查询该信息。如果我有办法做到这一点,我会更喜欢那种方法,只要没有性能问题。

所有相关人员都希望该网站能够流行起来,所以我想知道为大量用户提供服务的最佳结构。

如果我的问题已经有了答案,我深表歉意,我发现没有一个答案适合我的情况,而且我真的不知道如何用搜索引擎表达我的问题。

谢谢你能给我的任何帮助。

最佳答案

你想多了。现在把它全部放在一个平板上。当您看到数据集的类型/大小时,您可以随时对其进行优化并编写 sql 以使其产生相同的输出。

在实际实现之前不要优化。这听起来不像是有数十亿行。

关于MySQL表设计结构用户偏好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12439348/

相关文章:

mysql - 查询 phpMyAdmin 以仅显示具有特定值的行

sql - 引用非主键列的外键约束有什么缺点?

sql - 基于用户角色权限的数据库设计

mysql - MySQL 数据库中可搜索的用户名列使用什么数据类型和索引?

jquery - 无法读取未定义的属性 'left'

javascript - ExtJS 6 - 我们应该在哪里编写样式?

asp.net - 如何在谷歌分析中记录每一刻?

mysql - 多次按 F5 时 Symfony2 和 Apache 会填满内存 RAM

mysql - 在催化剂中将多个项目添加到模型中

Javascript If 语句在自动完成功能中不起作用