我正在做一个网站,那里有不同类型的项目,如博客,帖子,文章等.用户可以将它们中的任何一个设置为他/她的最爱.现在当我接近这件事时,我有两个 Select

  1. 为每种类型的对象创建用户Collection 夹表.
  2. 为所有用户的所有对象类型创建一个公共表.

第一种 struct 的问题是,我必须查询很多表来显示特定用户的Collection 夹.但它可以让我很容易地把最喜欢的分类.

然而,如果我必须在一个页面上显示所有Collection 夹,并将它们全部合并,按时间排序,那么这就变得很困难.但是如果我使用第二个模型,我可以很容易地获得最新的Collection 夹,并且根据对象类型对它们进行分组并不困难,但我会在整个站点上有一个大表.

这两种策略中哪一种更具可扩展性.

第一个需要多个数据库查询,第二个需要多个数据库查询 需要一张很大的单人桌.

如果有用的话,我用MySql

推荐答案

看起来你已经知道答案了,但请记住,要让你设计的系统易于修改,因为商业模式总是随着时间的推移而改变,否则最终会失败(这是一个概括,但你明白了).由此产生的一个推论是,如果你制作一个僵化的模型,不管是快还是慢,它都是僵化的,改变会更困难,最终用户看不到区别,因此不会实现金钱/幸福的改变,除非这是一个非常糟糕的改变.

Database相关问答推荐

在Prisma中建立关系

聚合以过滤 MongoDB 中的引用

Mongodb聚合$group,限制数组长度

预测下一个自动插入的行 ID (SQLite)

时间数据库设计,有一个转折(live vs draft rows)

单元测试:用于测试的数据库设置

我应该为 Realm 中的每个实体定义主键吗?

多列索引的顺序

TSQL - 表值函数中的 If..Else 语句 - 无法通过

按请求的可变事务隔离级别

CouchDB 和 Lotus Notes 有什么区别?

从旧数据 struct 到新数据 struct 的数据迁移

添加具有初始(但不是默认)值的新列的最佳方法?

在单个 postgres 查询中多次调用 `now()` 是否总是给出相同的结果?

Hibernate如何连接多个数据库

可以将 SQLAlchemy 配置为非阻塞吗?

如何将纬度/经度对转换为 PostGIS 地理类型?

如何在 MySQL 中清理或调整 ibtmp1 文件的大小?

PHP PDO: error number' 00000' when query is correct

数据库与纯文本