求一个数据库设计思路

jarodzhao 2008-12-01 11:30:42

一级节点 -> 二级节点
节点一 : 节点任务一 、 节点任务二 、 节点任务三
节点二 : 节点任务一 、 节点任务二 、 节点任务三 、 节点任务四 、 节点任务五 、 节点任务六
节点三 : 节点任务一 、 节点任务二
节点四 : 节点任务一
节点五 : 节点任务一 、 节点任务二 、 节点任务三 、 节点任务四

业务模式是这样的:节点分为两级,一级节点下设有多个并联的二级节点(二级节点数量不定)
每一个业务都要按照一级节点顺序来走,每个节点都必须走,每个节点中的任务也是必须走的,但是可以不按顺序,也就是说二级节点的所有任务可

以并发执行,该节点下的所有任务都执行完了就可以跳到下一个节点

以前的设计是只有一级节点,其中关于业务的许多报表不能统计
现在想升级一下换个模式,但不知如何设计数据库结构比较合理?
...全文
172 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
jarodzhao 2008-12-01
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yanrabbit163 的回复:]
分两个表,一个主表,存储节点信息(id(本节点编号),pid(上级节点编号)),一个从表,存储任务信息(id(任务编号),nid(节点编号)).
[/Quote]

那么业务表中如何存储节点信息呢?
难道也用节点和任务两个字段来保存节点信息吗?
zjybushiren88888 2008-12-01
  • 打赏
  • 举报
回复
2楼很强悍 学习了
gundamtw 2008-12-01
  • 打赏
  • 举报
回复
强 学习
fcxxfcxx 2008-12-01
  • 打赏
  • 举报
回复
学习中
yanrabbit163 2008-12-01
  • 打赏
  • 举报
回复
分两个表,一个主表,存储节点信息(id(本节点编号),pid(上级节点编号)),一个从表,存储任务信息(id(任务编号),nid(节点编号)).
jiang_jiajia10 2008-12-01
  • 打赏
  • 举报
回复
2,3,4L的似乎很强大哦
jarodzhao 2008-12-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ccs02287 的回复:]
...这个描述的和数据库有什么关系吗

做什么,用到什么
[/Quote]

实际业务就是这样的,只不过在每个节点再附带一些业务信息而已
保存业务的每个节点提交信息

以前的思路是这样的:

流程表(以前只有一级节点):
ID,顺序编号
yName,节点名称
yOrder,节点顺序

业务表
ID,自动编号
yName,所处节点
...,各种业务信息

每条业务记录都会按照流程表中的节点顺序把所有节点走完,不过节点只有一级
现在想再细化一下每个节点的任务,就是增加二级节点
不知道这个表怎么设计比较合适
BlueskyWide 2008-12-01
  • 打赏
  • 举报
回复

--楼主是不是这个意思?

SQL> select * from test_tree;

USERID USERNAME P_USERNAME NUM
--------- ------------------ ------------------ ------------
1 1000
2 1100 1000
3 1200 1000
4 1101 1100 100.00
5 1102 1100 200.00
6 1104 1100 250.00
7 1201 1200 150.00
8 1205 1200 200.00
9 1207 1200 150.00

9 rows selected

SQL>
SQL> select b.username,
2 b.p_username,
3 (select distinct sum(nvl(a.num, 0))
4 from test_tree a
5 start with a.username = b.username
6 connect by a.p_username = prior a.username) sum
7 from test_tree b
8 start with username = '1000'
9 connect by p_username = prior username;

USERNAME P_USERNAME SUM
------------------ ------------------ ----------
1000 1050
1100 1000 550
1101 1100 100
1102 1100 200
1104 1100 250
1200 1000 500
1201 1200 150
1205 1200 200
1207 1200 150

9 rows selected

SQL>
BlueskyWide 2008-12-01
  • 打赏
  • 举报
回复

--参考一下Oracle树型查找的例子:

drop table test_tree;
create table test_tree
(
userid number(8) not null primary key,
username varchar2(18) not null,
p_username varchar2(18),
num number(10,2)
);

insert into test_tree values(1,'1000',null,null);
insert into test_tree values(2,'1100','1000',null);
insert into test_tree values(3,'1200','1000',null);
insert into test_tree values(4,'1101','1100',100);
insert into test_tree values(5,'1102','1100',200);
insert into test_tree values(6,'1104','1100',250);
insert into test_tree values(7,'1201','1200',150);
insert into test_tree values(8,'1205','1200',200);
insert into test_tree values(9,'1207','1200',150);
commit;

select * from test_tree;

select b.username,
b.p_username,
(select distinct sum(nvl(a.num, 0))
from test_tree a
start with a.username = b.username
connect by a.p_username = prior a.username) sum
from test_tree b
start with username = '1000'
connect by p_username = prior username;
BlueskyWide 2008-12-01
  • 打赏
  • 举报
回复
使用数据库的树型结构。
空心兜兜 2008-12-01
  • 打赏
  • 举报
回复
...这个描述的和数据库有什么关系吗

做什么,用到什么
jarodzhao 2008-12-01
  • 打赏
  • 举报
回复
谢谢大家的帮助,暂时决定就采用父节点编号的方法
这个方法看起来挺简单的,也能解决问题。。。如果那位还有其他好的思路请PM告之,可另开贴相酬

谢谢大家
Jack_xiao 2008-12-01
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 monitorli 的回复:]
2级结构没你想的那么复杂啊
定义一个父ID就完了
[/Quote]

id(本节点) pid(父节点)
1 0
2 1
3 1
4 1
5 0
6 5
7 5
......

节点与任务节点的区别是
节点的父节点是NULL 或 0 ;
任务节点的父节点是具体值
jarodzhao 2008-12-01
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yanrabbit163 的回复:]
分两个表,一个主表,存储节点信息(id(本节点编号),pid(上级节点编号)),一个从表,存储任务信息(id(任务编号),nid(节点编号)).
[/Quote]


还是这个思路,刚刚拿EXCEL试试
应该说业务节点只有一级节点,所有的任务可以被称为二级节点
这样的话,是不是那个从表就不用了?!
greatverve 2008-12-01
  • 打赏
  • 举报
回复
多级的作法,我是这样来的:
一级:01,02,03
二级:0101,0102,0103//0201,0202,0203
业务逻辑,就是操作字符串了。
iwalk 2008-12-01
  • 打赏
  • 举报
回复
ding
yanrabbit163 2008-12-01
  • 打赏
  • 举报
回复
上面的,没你想的那么简单吧
阳新互联 2008-12-01
  • 打赏
  • 举报
回复
2级结构没你想的那么复杂啊
定义一个父ID就完了
yanrabbit163 2008-12-01
  • 打赏
  • 举报
回复
只要存任务信息就可以了呀,通过任务表可以查到是哪个节点(nid(节点编号))

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧