关于建库的问题,我实在是不会了,请大家帮忙!!!

river723 2001-10-25 10:12:54
一个关于工程项目,每个工程有很多大项,每个大项目下有许多小项目,而小项下可能还有小项,也可能没有,如果一个项目下有子项目,那么它的概算值是小项之和,若没有,则要录入,概算值分为土建、设备、安装等几类。概算录好后,每月参照概算录入每个项目的月计划数,完成数,并要求统计月累计、年累计。关于这种情况,不知谁遇到过,应如何建库。
...全文
174 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
river723 2001-10-31
  • 打赏
  • 举报
回复
给分。
net_quite 2001-10-30
  • 打赏
  • 举报
回复
推荐
ykliu1 2001-10-29
  • 打赏
  • 举报
回复
上述条件应加上
and length(工程编号)>length(current_id)
ykliu1 2001-10-29
  • 打赏
  • 举报
回复
你可以采用以下方案,引入父级工程编号字段,如下所示:
工程编号 父级工程编号 年度 月份 类型编号 计划数 完成数
工程编号用于唯一确定该项,而父级工程编号则用于寻找其父级项
另外,如果存在多层问题,可以通过使用特定的工程编号来解决,如:
工程编号 父级工程编号
1 0 第一层
11 1 第二层
12 1 第二层
121 12 第三层
2 0 第一层
21 2 第二层
那么项目1的所有子项查询条件为:
设当前工程编号为current_id,
where 工程编号=substr(工程编号,1,length(current_id))
根据以上条件即可汇总当前项的概算值
river723 2001-10-29
  • 打赏
  • 举报
回复
星期天休息没上网,谢谢icevi(按钮工厂)热心回答。
可是,我的库与icevi(按钮工厂)的基本差不多,但是这种有个麻烦,我在实现插入和删除时会有问题,我无法解决。
插入时:如果插入一条项目,就必须更改其后项目的序号,而若有的有子项的话,则会找不到其父项。
删除时:比如项目级长为2时(01-99),删除后若不更新后续项目序号的话,会导致可新添项目越来越少,若更新的话也会出现插入时的问题。
icevi 2001-10-29
  • 打赏
  • 举报
回复
应该不会,都是按字符排序嘛。
river723 2001-10-29
  • 打赏
  • 举报
回复
icevi(按钮工厂)真是高人, 我想我的问题可以解决了, 再多问一句,级次用“.”来区分时顺序会乱吗?
icevi 2001-10-29
  • 打赏
  • 举报
回复
1:"插入时:如果插入一条项目,就必须更改其后项目的序号,而若有的有子项的话,则会找不到其父项。"是什么意思?
你的工程项目编号应该是有规则的吧,比如A0001,A0002。。。。这之类的,不设及到新增加项目会需要修改以前项目的序号吧?若你的系统这样处理项目编号,是很不好的。一般一个工程项目立项时设定的工程编号,以后一般都不允许再改的,不可能新加一个项目,以前的序号全部重整一次,系统开销大,数据不好管理,真的不合理。

若你的系统中一定要这样,也不是不行,比如一个项目的序号被修改了,将其子项的“上级项目编号 ”也更新为新的编号就可以了。

我建议你可以加一个无意义的ID号(自动增加):
工程定义表:
工程ID号 工程编号 名称描述 是否有下级项目 上级项目ID号 。。。。

概算类型表:
类型编号 类型描述

工程概算数据表:
工程ID号 年度 月份 类型编号 计划数 完成数

这样工程编号的更改维护起来就简单了,子项目与上级项目是通过ID号来联系的,不会受影响。

2:“删除时:比如项目级长为2时(01-99),删除后若不更新后续项目序号的话,会导致可新添项目越来越少,若更新的话也会出现插入时的问题。 ”:
这倒是一个要注意的问题,不过我想告诉你,按上面的表结构,你不需要按级长来判断一个项目是第几级及是否有下级项目。因为表中已经有字段来区别的。若你一定要在工程编号上来区分的话,建议不要用编号长度来区分,你可以参考一下某软件中科目代码的定义,级次是用“.”来区分的。比如一级科目“1001”“1002”,二级科目“1001.01”“1001.02”“1002.101”“1002.02”,这样,级次与长度无关,更灵活些。

希望你能明白:)
river723 2001-10-25
  • 打赏
  • 举报
回复
能详细说一下如何建库吗?不胜感激!
nononono 2001-10-25
  • 打赏
  • 举报
回复
“如果一个项目下若没有子项目”--明细科目
如果一个项目下有子项目”--总帐科目

至于求合计还是输入,与表结构无关,那是你程序的事。
river723 2001-10-25
  • 打赏
  • 举报
回复
与财务科目不一样吧?如果一个项目下若没有子项目,则要录入。
nononono 2001-10-25
  • 打赏
  • 举报
回复
这不就是财务科目嘛, 不复杂。
icevi 2001-10-25
  • 打赏
  • 举报
回复
工程定义表:
工程编号 名称描述 是否有下级项目 上级项目编号 。。。。

概算类型表:
类型编号 类型描述

工程概算数据表:
工程编号 年度 月份 类型编号 计划数 完成数

至于“如果一个项目下有子项目,那么它的概算值是小项之和,若没有,则要录入”、“概算录好后,每月参照概算录入每个项目的月计划数,完成数”在程序中控制。

用第一个表中的“是否有下级项目”判断是否有子项目。子项目的“上级项目编号”指向上级项目的工程编号。

已经很明白了,若还有其他内容,动脑筋想想吧!

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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