欢迎大家挑战一个复杂的数据库难题,望高手指教~~
数据库表
tblTaskBaseInfo(任务基本信息表)
iID int not null identity 任务编号
root_ID int 对应父任务编号,如果没有父任务为0
task_Name varchar 任务名称
task_StartTime datetime 任务起始日期
task_EndTime datetime 任务结束日期
tblTaskBaseInfo是一个树型结构的任务表
父任务的起始与结束日期是取决于它的所有子任务中的最小起始日期与最大结束日期的
====任务受限条件表===
(一个任务可以任意个前置条件。但只有0个或1个受限类型和受限时间,如果有几个前置任务,受限条件为一个的话,则对应字几条记录中受限条件字段的值相同)
tblTaskLimit
iID int not null identity 编号
lc_TaskNo int 对应任务编号
lc_FrontTask varchar 前置任务编号(目的是,开始这个任务的前提是要完成它的前置任务)
lc_FrontCondition varchar 前置类型
lc_DeadLine datetime 截止时间
lc_LimitedType varchar 20 受限类型
lc_LimitedDate datetime 受限时间
受限类型有以下几种情况:
1.不得早于……完成 (1701)
2.不得晚于……完成 (1702)
3.不得早于……开始 (1703)
4.不得早于……完成 (1704)
5.必须完成于…… (1705)
5.必须开始于…… (1706)
以上"……"号代表受限日期,1701-1706代表受限类型编号
前置类型:
开始-开始 (1603) (两个任务一起开始)
开始-完成 (1604) (当前任务完成才能开始)
完成-开始 (1601) (完成前置任务才能开始当前任务)
完成-完成 (1602) (两个任务同时完成)
--1601-1604是代表对应前置类型编号
0.先查看任务的前置条件有哪些
1.(任务起始日期)如果限制条件存在,则要判断限制条件
2.(任务结束日期)没有限制条件存在,可以直接向前或向后移动日期(但不得在起始日期之前)
3.设置任务开始日期时,则限制条件自动设置为不得早于开始日期结束)
要求:
insert/update/delete一个任务基本信息
(因为任务有限制条件/前置任务,这样会造成联锁反应,所以相关的任务的起止时间要作修改)