在做像区域或权限控制等树状结构时,常要用到查询某一父区域下的所有子区域,以及查询某一子区域下的各级父区域的功能。如果数据结构是存在数据库中时,若用嵌套的方式来解决该问题无疑是很费时。
若在数据库中添加一个字段用来保存父子关系,对于解决该问题是大有益处的。
例如:区域的基本结构为[id,名称,父类id],可以增加关系列[id,名称,父类id,关系id]
福建
福州 厦门
鼓楼 台江 思明 湖里
福建[01,福建,null,(01|)]
福州[02,福州,01,(01|02|)]
厦门[03,厦门,01,(01|03|)]
鼓楼[04,鼓楼,04,(01|02|04|)]
台江[05,台江,05,(01|02|o5|)]
思明[06,思明,03,(01|03|06|)]
湖里[07,湖里,03,(01|03|07|)]
如上的结构可看出在保存里把父区域的关系列加上自身id即为本身的关系列,在查询父类时可直接通过查询关系列,查询子区域时即查询关系列是否包含本身关系列,这样只需通过简单的sql语句即可完成原本比较复杂的操作。