Mysql 如何将关联编辑为单个实体

Mysql 如何将关联编辑为单个实体,mysql,database,relational-database,Mysql,Database,Relational Database,我有一个web应用程序,其中我有帖子,每个帖子都有并属于许多标签。我希望与每篇文章相关联的标签可以使用单个文本字段(以逗号分隔的列表)进行编辑。这允许添加、删除和编辑标记(删除和添加)。但是,我的web应用程序不知道删除了什么,因为它只是传递了一组我希望帖子拥有的标签 我可以想出两种处理方法: 删除标记和帖子之间的所有关联,并重新生成它们 在编辑之前获取标记数组,进行比较以找出要添加或删除的标记 处理这种情况的最佳方法是什么?为什么?我最后做的就是删除与该帖子相关的所有标记,然后重新构建它们。我

我有一个web应用程序,其中我有帖子,每个帖子都有并属于许多标签。我希望与每篇文章相关联的标签可以使用单个文本字段(以逗号分隔的列表)进行编辑。这允许添加、删除和编辑标记(删除和添加)。但是,我的web应用程序不知道删除了什么,因为它只是传递了一组我希望帖子拥有的标签

我可以想出两种处理方法:

  • 删除标记和帖子之间的所有关联,并重新生成它们
  • 在编辑之前获取标记数组,进行比较以找出要添加或删除的标记

  • 处理这种情况的最佳方法是什么?为什么?

    我最后做的就是删除与该帖子相关的所有标记,然后重新构建它们。

    我选择选项(1),因为它在应用程序中比较省力,而且通常对数据库来说也不太昂贵。在事务中执行两个操作(
    DELETE
    然后
    INSERT
    ),以保持原子性。是的,这是事务的一个优点。如果你有一对多的关系呢?使用超过必要数量的自动递增主键是否重要?为什么关联表需要一个
    auto_increment
    列?对于一对多关系,您没有关联表。一对多表也不需要一个自动递增列。