MySQL多对一设计决策

MySQL多对一设计决策,mysql,database-design,Mysql,Database Design,我有一个posts表,每个post都可以有一个与画廊相关联的图像列表。目前 我将图像数据存储在一个单独的表中。我正在考虑序列化数据并将其放入 连同这些职位 这样做的原因是我想运行一个查询,生成一个帖子列表及其关联的库图像 我的问题:用这种方式反规范化可以吗?如果不行,你的解决方案是什么?通常,反规范化不是一个好主意,记住关系数据库中的关系数据库,尽管有时它是合理的。在这种情况下,我看不出有什么好的理由去规范化以存储二进制信息列表。如果是我,我会坚持一个原则:文章和图像之间有很多关系,就像数据库的

我有一个posts表,每个post都可以有一个与画廊相关联的图像列表。目前 我将图像数据存储在一个单独的表中。我正在考虑序列化数据并将其放入 连同这些职位

这样做的原因是我想运行一个查询,生成一个帖子列表及其关联的库图像


我的问题:用这种方式反规范化可以吗?如果不行,你的解决方案是什么?

通常,反规范化不是一个好主意,记住关系数据库中的关系数据库,尽管有时它是合理的。在这种情况下,我看不出有什么好的理由去规范化以存储二进制信息列表。如果是我,我会坚持一个原则:文章和图像之间有很多关系,就像数据库的设计目的一样,并确保优化索引等。

如果我保持规范化,那么如果每个文章有5个图像,并且我想创建一个列出20篇文章+图像的查询,我将在连接中获得100行。这是常见的做法吗?我应该用应用程序代码来整理它?你可以这样做,或者只选择帖子,然后在这些帖子的循环中选择当前帖子的图片…我想有很多方法可以做到这一点,但是反规范化通常不是一条可行的道路,因为它不可避免地会阻碍您的发展。在循环中进行选择将为上面示例中的每个请求生成21个查询,这正是我想要避免的。这似乎太过分了。所以我想出的唯一解决办法是1。去规范化,2。在应用程序中进行排序。我不确定哪一个是更合适的解决方案。我想我不明白……如果你想在一个页面上显示所有帖子的所有图片?即使是这样,我仍然倾向于规范化并使用连接……归根结底,这并不是一个强制取消IMHO规范化的理由。