【发布时间】:2012-01-19 08:06:29
【问题描述】:
我有一个包含产品的主 MySQL 表。每个产品的任何多个字段都保存在关系表中(例如 products_colour、products_photos 等)。每次更新产品时,我都不确定最佳做法是什么:
-
DELETE关系表中所有与正在更新的产品相对应的行,INSERT所有新字段进入一个相对较新的表中; - 仅
DELETE关系表中不再需要的那些行,以及INSERT已经不存在的全新行。
第一个选项毯子会在每次产品更新时删除所有内容并插入新数据;第二个选项搜索现存的值,计算它们是否冲突,如果冲突则删除它们,然后插入剩余的数据。或者类似的东西......
就最佳实践而言,最好的做法是什么?如果我选择第一个真的很重要吗?它会对 MySQL 的性能产生很大的影响吗?
【问题讨论】:
-
当您说“关系数据库”时,实际上是指“相关表”
-
说一个产品是红色和黄色的。用户想要更新产品,使其只有红色。如果仅使用 UPDATE,则在包含产品颜色的关系数据库中,黄色行仍将存在。我不想收集数百个冗余、过时的行。
-
@ypercube 是的,对不起 - 我的错误。立即更新问题。
-
很遗憾你不能使用 PostgreSQL 的触发器。因为,你知道,这些东西在 MySQL 中不起作用。
-
"best" 暗示了一些健身标准。你的是什么?没有他们,这是一个不恰当的主观问题,应该结束。
标签: mysql database-design relational-database