任务、父子任务的关系在系统中的表示

任务、父子任务的关系在系统中的表示

 

ERP、项目管理系统、进度管理系统、物流系统、状态跟踪系统、批处理任务分解系统等软件系统中,大多数都会遇到一个类似描述任务的需求。

 

比如在批处理任务分解系统中,任务关系表需要记录父任务、子任务,也要记录父子任务这个关系。父任务和子任务都是任务,只在任务关系表中记录这些任务即可。而父子关系怎么描述呢?

 

数据结构中有树的概念,树可以表示父子关系。如下图所示一棵树:

一棵描述任务的树

 

 

 

可以至少有两种设计,来描述这棵树的节点间的父子关系。

1)  通过节点编码来表示父子关系。给每个节点编码加上父节点编码的前缀,而每一层节点的编码长度固定,节点如果没有父节点,则前缀为空。由以上规则可以定义以上九个节点的编码。

01

0101

0102

0103

010101

010102

010103

010304

010305

由上面的节点编码加上编码规则可以知道,的子节点为,而为节点的子节点,为节点的父节点。

2)  通过记录父节点的编码主键来表示父子关系。给每个节点附加一个“父节点”属性,指示它的父节点为哪一个节点。表格设计如下表1

1

节点号

编码主键

父节点编码主键

1

-

2

1

3

1

4

1

5

2

6

2

7

2

8

4

9

4

由以上的附加“父节点编码主键”属性值可以清楚地知道一个节点的父节点。但是要知道一个节点是否有子节点,则只能通过搜索全表,查询哪个节点的“父节点编码主键”值与当前节点的“编码主键”是否相同。可以冗余设计表格,增加“第一个子节点编码主键”属性。表格设计如下:

2

节点号

编码主键

父节点编码主键

第一个子节点编码主键

1

-

2

2

1

5

3

1

-

4

1

8

5

2

-

6

2

-

7

2

-

8

4

-

9

4

-

这样的设计,主要是方便查找一个节点是否有子节点,以及子节点的数据值。

3)  混合设计模式。即以上两种设计同时存在,这样能够提供更加完善的分解、查找模式,分解和合并节点。

 

任务表中不但需要描述父子关系,还要描述兄弟关系、堂兄弟关系、隔辈关系、堂父子关系。那么在以上两种设计中,稍加巧妙的拼接与转换,即可实现另外这些关系的描述。若你想继续钻研这些关系,请花点时间思考一下。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机场信息系统研究员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值