【问题标题】:MySQL best practice: Updating relational tablesMySQL 最佳实践:更新关系表
【发布时间】:2012-01-19 08:06:29
【问题描述】:

我有一个包含产品的主 MySQL 表。每个产品的任何多个字段都保存在关系表中(例如 products_colour、products_photos 等)。每次更新产品时,我都不确定最佳做法是什么:

  1. DELETE关系表中所有与正在更新的产品相对应的行,INSERT所有新字段进入一个相对较新的表中;
  2. DELETE 关系表中不再需要的那些行,以及INSERT 已经不存在的全新行。

第一个选项毯子会在每次产品更新时删除所有内容并插入新数据;第二个选项搜索现存的值,计算它们是否冲突,如果冲突则删除它们,然后插入剩余的数据。或者类似的东西......

就最佳实践而言,最好的做法是什么?如果我选择第一个真的很重要吗?它会对 MySQL 的性能产生很大的影响吗?

【问题讨论】:

  • 当您说“关系数据库”时,实际上是指“相关表”
  • 说一个产品是红色和黄色的。用户想要更新产品,使其只有红色。如果仅使用 UPDATE,则在包含产品颜色的关系数据库中,黄色行仍将存在。我不想收集数百个冗余、过时的行。
  • @ypercube 是的,对不起 - 我的错误。立即更新问题。
  • 很遗憾你不能使用 PostgreSQL 的触发器。因为,你知道,这些东西在 MySQL 中不起作用。
  • "best" 暗示了一些健身标准。你的是什么?没有他们,这是一个不恰当的主观问题,应该结束。

标签: mysql database-design relational-database


【解决方案1】:

您的用例的“最佳实践”是DELETE 旧行,然后INSERT 新行。 确保使用transactions

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-08
    • 2019-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多