问一个业务如何设计表的问题

haonanernet 2007-03-08 01:45:15
现在有一个表

表名: 项目 project

字段
IDKey 主键
Name 项目名称
Amount 项目金额
Date 完成时间
CreateBy 创建者
CreateDate 创建时间

现在要针对每个项目签合同,原来一个合同对应一个项目.没有问题.
Contract表里面 加上外键为项目主健就行..

现在发生变更:项目可以按照金额拆分和合并

一个合同可能由几个项目合并而成,
而且一个项目也有可能被拆分成几个小项目分别签合同.
还有可能 一个合同对应着 一个项目加上另一个项目的拆分后的一个小项目

这就早成多对多的关系..

现在这个项目表该如何设计呢?

同事说: 在签合同的时候,通过选择的项目生成新的项目存放在项目表中,并且这个新生成的项目 有个字段叫 contactid . 它表明这个项目是从哪个项目派生出来的.
我觉得这样做有很多问题,请大家多给点建议.
...全文
570 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
haonanernet 2007-03-09
  • 打赏
  • 举报
回复
结贴,这个问题没有答案.失望....
一者仁心 2007-03-09
  • 打赏
  • 举报
回复
晕倒 没明白我得意思?
就是见一个上级项目 可重复的 保留以前的项目名 这样一样可以
一者仁心 2007-03-08
  • 打赏
  • 举报
回复
在项目表里加入一列主项目不就得了 反正一个项目只可能有一个上级项目
主项目没有上级
winterProgrammer 2007-03-08
  • 打赏
  • 举报
回复

对于单个项目,是树的结构,你也可以N个Project组成一个大树,里面包含N个Project
winterProgrammer 2007-03-08
  • 打赏
  • 举报
回复
对于单个项目,是树的结构,你也可以N个数组成一个大树,里面包含N个Project
haonanernet 2007-03-08
  • 打赏
  • 举报
回复
而且最难点在于 有可能一个合同对应着 一个原项目和一个原项目拆分后的项目.

这样的一个合并.
haonanernet 2007-03-08
  • 打赏
  • 举报
回复
to :楼上

其实这个设计表的难点在于

可能几个原项目(合并)对应一个虚假项目,有可能一个原项目(拆分)对应几个虚假项目

它不是一棵树.
winterProgrammer 2007-03-08
  • 打赏
  • 举报
回复
项目是树的结构,合同是和树的叶子做关联

project
ID ParentID Name Amount
1 0 A 10000
2 1 A1 5000
3 1 A2 5000 --
4 2 A11 2000 --
5 2 A12 3000 --
6 0 B 8000 --


Contract
ID Name
1 Contract_1
2 Contract_2

ContractProjectRelation
ID ContractID ProjectID
1 1 3
2 1 5
3 2 4
4 2 6
mengmou 2007-03-08
  • 打赏
  • 举报
回复
对其中的一个项目为10000的,用户只签了一个5000的
我觉得此时应该把这个10000的标记为虚假项目,因为它不能参与合同了
而剩下那5000还可以签啊。
haonanernet 2007-03-08
  • 打赏
  • 举报
回复
楼上,可能我没有说清楚

你新键一个项目的时候,你不知道它要被拆分还是被合并.

只有当签定的合同的时候 用户进行选择项目.如果用户选择了2个项目.

对其中的一个项目为10000的,用户修改为5000,那么我们现在说这个项目被拆分了.
还有一个没有改,那么我们说这个项目被合并了.

这些由用户选择之后派生出来项目的我叫它虚假项目.并且把它记录在原来的表中,加个字段进行区分
mengmou 2007-03-08
  • 打赏
  • 举报
回复
既然它都能参与合同了,区别为虚假项目还有什么意义?
haonanernet 2007-03-08
  • 打赏
  • 举报
回复
虚假项目 也就是子项目的意思.
mengmou 2007-03-08
  • 打赏
  • 举报
回复
怎么会有虚假项目呢?即便它有子项目,它也可以完整的参与一个合同啊。
playwarcraft 2007-03-08
  • 打赏
  • 举报
回复
想把这些虚假的项目放到一个新表里是不是好点呢 叫做 ProjectTemp
--------------------------------------------------------------------
感覺差不多,要是放同一個表裡,就加上一個字段flag,加以區別而已.
LBYYBL 2007-03-08
  • 打赏
  • 举报
回复
1
jacobsan 2007-03-08
  • 打赏
  • 举报
回复
其中项目表是树形结构
mengmou 2007-03-08
  • 打赏
  • 举报
回复
项目表用树形结构表示
合同表用主表明细表表示
jacobsan 2007-03-08
  • 打赏
  • 举报
回复
项目表 主键id
合同表 主键id
项目合同对应表 两个外键加一个值
--
就这样
haonanernet 2007-03-08
  • 打赏
  • 举报
回复
项目合同对应表 也满足不了需求的,因为项目需要拆分和合并的.
playwarcraft 2007-03-08
  • 打赏
  • 举报
回复
恩...類似bom,多加個字段判斷,如果是(虛假)的合同或項目,判斷=phatom
erp中也有所謂的虛假工單,差不多是這樣處理
加载更多回复(3)

34,590

社区成员

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

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