商品列表显示商品分类

分类 id name parent_id

  1   A     0
  2   B     1
  3   C     2
  

数据库这样的分类,现在商品选择了分类之后c,要在商品列表显示出分类为 A/B/C 这样的效果,如何设计合理

如果在分类表存A/B/C这样的一个字段,那么修改一个分类名就会有很多条记录修改,不合理
如果在查询商品时再去查询也不合理
(分类会很多,商品列表也可能很多)

阅读 2.1k
2 个回答

分类修改不是一个经常性的操作,至于数量多少并不是考虑的重点
增加 路径字段 A/B/C,修改时的批量 UPDATE 相比带来的便利性是可以接受的

对分类表而言:
分类表中需要添加一个字段, 记录分类id的路径,比如对C分类而言记录1/2/3, 对B分类记录1/2, 对A而言记录1.
这样无论分类如何变化,都是不需要动分类表的.

对商品表而言:
因为要在商品列表中显示分类, 最好是在获取商品列表的时候,不再查询分类表,不然挺烦的.
因此, 在设置商品分类的时候(比如选择C分类),将C分类的id记录下来, 同时也可以添加冗余字段,将要显示的分类(比如C分类), 则将A/B/C记录下来.
这样虽然会出现一些分类数据不准确的情况, 但是对分类而言, 修改分类本身是小概率的事情,出现一些误差其实也没什么大问题.
在访问商品详情时,为获取更准确的分类信息, 则可以通过分类id查询分类表获取, 这是一个比较简单的操作.如果一定要追求列表分类的准确性,这一步其实有文章可做, 对比分类是否一致,如果不一致, 接下来(日志记录或者异步任务进行更新)...

总之需求和实现之间总得会有一些妥协

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题