Home > Backend Development > PHP Tutorial > MYSQL 一对多的关联表的数据更新问题

MYSQL 一对多的关联表的数据更新问题

WBOY
Release: 2016-06-06 20:20:14
Original
2085 people have browsed it

比如文章article表 有一个文章标签的关联表article_tag,一篇文章,存在多个tag。
在更新文章的时候,需要更新关联表,我想到的有两种方法,但是感觉都比较不爽。
1.更新article的时候,更新关联表的时候,把关联表中的数据全部删除,在重新写入新的关联数据。这个比较安全,但是弊端是,每次更新文章,都要对关联表进行删除又写入数据,造成浪费,而且如果这个关联表存在多个字段,每次更新的时候都要对每个字段重新写入。

  1. 关联表设置主键,在更新article的时候,根据关联表的主键查找关联表的记录,存在的主键进行更新操作,不存在的就新增。这样也麻烦,每次对article进行更新的时候,还要维护关联表的主键在表单里面,麻烦。但是这种情况比较安全,但如果要是像上面说到的,只是保存多个文章的tag,显得很麻烦。比如,文章提交的表单中tag就是一个字符串,你还转化字符串为一个数组,然后对应到关联表的主键上面。

  2. 不设置关联表的主键,设置一个根据关联ID 和 需要保存字段能定位一条记录,根据这个记录是不是存在来更新或者新增。比如 select * from article_tag where aid = xxx and tag = 'xxx', 这样去定位一条记录,来写入的其他字段或者更新操作,但也是麻烦。

所以有没有比较正式或者更好的方法呢?

回复内容:

比如文章article表 有一个文章标签的关联表article_tag,一篇文章,存在多个tag。
在更新文章的时候,需要更新关联表,我想到的有两种方法,但是感觉都比较不爽。
1.更新article的时候,更新关联表的时候,把关联表中的数据全部删除,在重新写入新的关联数据。这个比较安全,但是弊端是,每次更新文章,都要对关联表进行删除又写入数据,造成浪费,而且如果这个关联表存在多个字段,每次更新的时候都要对每个字段重新写入。

  1. 关联表设置主键,在更新article的时候,根据关联表的主键查找关联表的记录,存在的主键进行更新操作,不存在的就新增。这样也麻烦,每次对article进行更新的时候,还要维护关联表的主键在表单里面,麻烦。但是这种情况比较安全,但如果要是像上面说到的,只是保存多个文章的tag,显得很麻烦。比如,文章提交的表单中tag就是一个字符串,你还转化字符串为一个数组,然后对应到关联表的主键上面。

  2. 不设置关联表的主键,设置一个根据关联ID 和 需要保存字段能定位一条记录,根据这个记录是不是存在来更新或者新增。比如 select * from article_tag where aid = xxx and tag = 'xxx', 这样去定位一条记录,来写入的其他字段或者更新操作,但也是麻烦。

所以有没有比较正式或者更好的方法呢?

就跟你说的那样,“更新article的时候,更新关联表的时候,把关联表中的数据全部删除,在重新写入新的关联数据。”我感觉这样就不错。要是每次都比较原来和现在的标签的差别,应该更麻烦

更新article的时候,新的tag生成数组,旧的tag读出数组,两个数组做比较,然后做删除、添加。

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template