多级组织结构,为了编程方便及设计优化考虑,该如何设计数据库呢
如一个单位组织有很多级,假设有一、二、三、四、五级,
1
2 2 2 2.......
3 3 3 3 ......................
4 4 4 4 4 4.......
5 5 5 5 5 5 5.............
每级都有相应的人员
在编程时可能需要获取不同级别的人员,获取3级,要包含其下的各级人员。
我一开始用递归的方式,单位信息表中只有当前节点或父节点ID信息,人员表中只有父节点信息。
但是在实际编程中,在获取非末节点的人员信息比较麻烦,可能速度也会比较慢,大家在设计时用什么方式呢?
------解决方案--------------------父子关系表,从效率还是方便程度来讲都是很方便的
------解决方案--------------------就是这种bom的东东
id pid name
----------- ----------- --------------------
1 0 食品
2 1 水果
3 1 蔬菜
4 2 香蕉
5 2 苹果
6 3 青菜
------解决方案--------------------要么父表子表,要么就是一张表( id pid)
如果级数不多的话,父表子表可能方便一些
------解决方案--------------------如果最大级数固定,可以直接用编号标明层次关系——比较原始的做法,使用简单,维护略麻烦
现在正规的做法是递归:id,父id
其实还有一种做法:id,根id,层次,在根里的序号——优势是查询无须递归,极其高效,缺点是维护麻烦
------解决方案--------------------父表:
id name
子表
id name pid
------解决方案--------------------递归在性能上总是瓶颈,所以实际使用时,如果数据量大,递归就不应该考虑,而是用必要的冗余字段来简化查询
为编程方便考虑设计也是有的,但是如果仅仅是因为编程方便增加的冗余字段需要慎重,因为冗余意味着维护数据一致性的代价,得失必须权衡清楚
------解决方案--------------------5000条数据,用那一种方式都可以。数据量少