请问一个表结构设计的思路
想在cms设计一个管理tag的模块,要如何设计好?
编辑可以在后台编辑文章的时候编辑该文章的tag
前端用户可以查看该tag的所有文章。
目前,我是这么设计的。
一个文章表,一个中间表(用于存放文章id和tagid的表),一个tag表
文章表里面有一个tag_name字段。这样,在加载文章详细页的时候,不用通过复合查询去通过中间表去获取tag名字了。
但是,在后台,文章tag管理的时候,就出现了一个问题。如果编辑人员去编辑一篇文章的tag,把A标签换成了B标签。那我后台目前是这样处理的,感觉有点怪怪的感觉,但是又没有解决方案。
把标签名更新到文章表里,同时,删除中间表所有该文章下所有的tag关联数据。然后再把新关联的数据插入到数据库里。
我这样做的目的是不用循环去挨个的检查,对比数据,再删除。
所以,请问大佬一下,还有比这更加优秀的解决方案吗?
Laravel自带的ORM就是自动对比,有的插入,没有的删除,有现成的方式。
不过你现在的方式也没什么问题,只要中间表的主键没有被用到就可以先删除后添加。
只是有个问题,产品的话不要信,说不准哪天就说TAG名称改一下,那你存的名称就没有用了。
可以看TAG表会有多少数据,几十个以内的话,可以在查询列表的时候查出所有TAG,然后循环文章列表用PHP补TAG。