Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL最佳实践:更新关系表_Mysql_Database Design_Relational Database - Fatal编程技术网

MySQL最佳实践:更新关系表

MySQL最佳实践:更新关系表,mysql,database-design,relational-database,Mysql,Database Design,Relational Database,我有一个主MySQL表,其中包含产品。每个产品的任何多个字段都包含在关系表中(如产品颜色、产品照片等)。每次我更新产品时,我都不确定最佳做法是什么: 删除关系表中与正在更新的产品相对应的所有行,并将所有新字段插入到相对新的表中 仅删除关系表中不再需要的行,并插入不存在的全新行 第一个选项删除所有内容,并在每次更新产品时插入新数据;第二个选项搜索现有值,计算它们是否冲突,如果冲突,则删除它们,并插入剩余数据。或是类似的东西 就最佳实践而言,最好的做法是什么?我和第一个一起去真的重要吗?这会对MyS

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

  • 删除关系表中与正在更新的产品相对应的所有行,并
    将所有新字段插入到相对新的表中
    
  • 删除
    关系表中不再需要的行,并
    插入
    不存在的全新行
  • 第一个选项删除所有内容,并在每次更新产品时插入新数据;第二个选项搜索现有值,计算它们是否冲突,如果冲突,则删除它们,并插入剩余数据。或是类似的东西


    就最佳实践而言,最好的做法是什么?我和第一个一起去真的重要吗?这会对MySQL的性能产生这么大的影响吗

    用例的“最佳实践”是
    删除
    旧行,然后
    插入
    新行确保您使用

    当你说“关系数据库”时,实际上是指“相关表”,即产品是红色和黄色的。用户希望更新产品,使其仅为红色。如果只使用UPDATE,则在包含产品颜色的关系数据库中,黄色行仍然存在。我不想收集成百上千冗余的、被禁止的行。@ypercube是的,对不起-我的错误。现在更新了问题。很遗憾你不能使用PostgreSQL的触发器。因为,你知道,这些东西在MySQL中不起作用。“最佳”意味着一些适合的标准。你的是什么?没有它们,这是一个不恰当的主观问题,应该加以解决。