数据表设计心得之分类表

SJY发表于:2018年04月09日 12:14 • 阅读:

  • 显示指定分类下的文章时,该分类的所有子分类的文章也应该显示。
  • 编辑分类时,父分类不能选择当前分类本身及其下所有子分类。

PHPCMS的做法是增加一个`arrchildid`字段,值为栏目本身id及其下所有下级栏目id,格式为 3,6,8,9 只要能获取到分类id,就能取得该分类的`arrchildid`字段值,假设赋值给变量 $arrchildid

  • 要显示指定分类下的所有文章时,只需要指定条件  `catid` in ('$arrchildid')
  • 在分类编辑页面,父分类列表中,只要加入条件 `catid` not in ('$arrchildid')

因为更改父栏目时,要先删除原来父栏目的`arrchildid`值,那么如果我原来有多个上级栏目,所有上级栏目的`arrchildid`值都要做更改,那么就必须取得我所有的上级栏目才行。于是PHPCMS又增加了一个字段 'arrparentid' 值为所有上级栏目id,不包含本身,格式为 0,1,2

当更改上级栏目时,我总结了以下几个必要操作
1、当前栏目的所有上级栏目都要更新下级栏目(去掉当前栏目及所有下级栏目)
2、新的所有上级栏目都要更新下级栏目(增加当前栏目及所有下级栏目)
3、当前栏目的所有下级栏目都要更新上级栏目

总结:这样做,在读取方面效率上要明显高的多。但是在添加、修改、删除分类时,所要操作的步骤也会变得更为复杂。不过一般用户操作都是读取,编辑操作极少,所以该方法还是值得借鉴的。
补充:由于所有下级栏目id的字段`arrchildid`包含本身,为了方便判断指定分类是否有子分类,所以PHPCMS又添加了一个字段 `child` 有子分类值为1,没有则为0

欢迎转载,但请保留原文地址 http://www.sjyhome.com/php/1326.html

标签: 数据表

回复(0)