急需一棵动态树!(100分)

  • 主题发起人 主题发起人 chelon
  • 开始时间 开始时间
C

chelon

Unregistered / Unconfirmed
GUEST, unregistred user!
“部门”的数据结构
HR_Department(DeptCode int 部门编号,
DeptName varchar(50) 部门名称,
DeptParent int 上级部门编号,
DeptDetail bit 是否最明细部门,
DeptLevel tinyint 部门层次 )
采用了“树”结构,但有一个问题,就是这个结构只记录了当前的部门架构,但没有记录历史
架构的变化,帮忙想一个更加灵活的数据结构来满足记录历史变化的要求。
 
什么意思?部门改动吗??重新保存一份数据得了。
 
说得更详细一点,还有一个“员工”表,它们的关系是:“部门”<-“员工”,“员工”
或“部门”的数据变动之后,当统计某一个部门所属的员工资料时就不能得到所有曾经在这个
部门所属的员工的所有资料,我要的就是这个。
 
方法一、
HR_Department(
ChildID int 本级代码,
ParentID int 上级部门代码,

DeptCode int 部门编号,
DeptName varchar(50) 部门名称,

DeptDetail bit 是否最明细部门,
DeptLevel tinyint 部门层次 )
员工
HR (
ChildID int 本级代码,
HrCode int 部门编号,
HrName varchar(50) 部门名称,

方法二、
级联更新
 
个人建议,仅供参考。
部门父子关系表<——>部门——>部门员工关系表<——员工表
|
(有个字段表示树根部门)

当员工变换部门的时候就在部门员工关系表加一条记录,原先的记录做一个Delete标志
这样你统计的时候就能达到你的要求了。
而且可以设置一个人在两个不同的部门任职。

树的体现方式:
有树根标志的部门
|—子部门
| |—子部门
| | |—人员
| | |—人员
| |—人员
| |—人员
|—子部门

 
不明白[blue]郭玉梁[/blue]的;
请教[blue]绍[/blue],当我要查询一段期间内(如从2001年5月至今)的某一个部门的人员情况时,
又怎样解决好呢?
 
个人认为,在你的结构上再加上一层,如 时间。这样就可以保存历史记录了。

xxxx 时间
|
| HR_Department(DeptCode int 部门编号,
DeptName varchar(50) 部门名称,
DeptParent int 上级部门编号,
DeptDetail bit 是否最明细部门,
DeptLevel tinyint 部门层次 )


 
员工变动应该存放在变动集中,
或者你把部门的变更也存在变动集中。
不可能在部门表中存放那么多信息。
部门表就存放部门信息。
 
另建一新表,存放员工和部门的变动历史信息。
结构可以为:
原部门编号
现部门编号
人员编号
变动日期
变动原因
 
难道就不能在改善“部门”这棵树上做点文章吗?
最起码有可以变得灵活一点的余地嘛,大家都可以想想。
 
还有其它能够记录任意时间点的树的状态的实现方法吗?
 
to chelon;
我同意次时代的方法。
当改变员工的部门时(即进行部门调整),就添加一条新记录(部门,员工),
记录可以不包括原部门这个字段,若修改原部门表中的部门名称,
则同样修改新表的部门名称,若在某个部门删除一个员工,就让它删除,不必处理新表。
 
關鍵用代碼怎麼實現,用話說我還知道呢
 
后退
顶部