日期:2014-05-17  浏览次数:20642 次

多级组织结构,为了编程方便及设计优化考虑,该如何设计数据库呢
如一个单位组织有很多级,假设有一、二、三、四、五级,
  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条数据,用那一种方式都可以。数据量少