4 MILY: 宋体">主从关系表的创建
说明:
主从表是ERP系统中最常见的一种表关系结构,这里先简单介绍一下主丛表的结构
比如说有一张单据,TPxxxx001,单据里有3个商品,分别是商品1,商品2,商品3.
TPxxxxx001 |
数量 |
单价(RMB) |
金额(RMB) |
商品1 |
10 |
1.58 |
15.8 |
商品3 |
20 |
2.1 |
42 |
商品3 |
30 |
3.1 |
9.3 |
主表里的数据结构:
CO_ID(主表ID) |
AllQTY(总数量) |
AllAMT(总金额) |
其他单据属性 |
TPxxxx01 |
86 |
5367.21 |
XXX |
TPxxxx02 |
150 |
4786.45 |
XXX |
TPxxxx03 |
340 |
4586.78 |
XXX |
丛表里的数据结构:
COD_ID |
Co_detailcode(明细编号) |
商品名称 |
QTY(数量) |
AMT(金额) |
TPxxx01 |
1 |
商品1 |
16 |
1349.31 |
TPxxx01 |
2 |
商品2 |
20 |
560.1 |
TPxxx01 |
3 |
商品3 |
25 |
790.1 |
TPxxx01 |
4 |
商品4 |
25 |
1200.7 |
TPxxx02 |
1 |
商品x |
xxx |
xxx |
…….. |
…… |
….. |
xxx |
xxx |
TPxxx0N |
N |
商品x |
xxx |
xxx |
说明: 主表中是以单据编号为主健的,丛表中是以单据编号+明细编号的组合为主健.
我们来分析一下这二个表中三个字段之间的关系,首先要确定的是,主从表之间应该是先有主表记录,再有从表对应的内容,这点是非常重要的,比如上面的单据表结构,首先我们要确定的是主表中的单据编号,然后把该单据编号复制到从表的COD_ID中,当然这个时候从表的该单句编号对应的明细可能是1-99999的任意数值,对应的实际业务也就是说,一张单据里面可以包括99999条明细记录,并且从表里的明细ID编号不能重复对于一个COD_ID来说.(这是数据库设计方面的知识,读者自己理解)
下面我们来看在Datafactory中怎样实现这个逻辑:
图 2.6 图 2.7
如图2.6中,CUSTOMERORDER表是主表,CODETAIL是对应的明细表,读者可以通过图2.7和图2.8的方法来产生主从表关系,
如图 2.8中,Records 1 to 5的意思是指,主表中的一条主健ID允许对应丛表里的最多5条明细ID,(读者注意,对应明细ID的数量是1-5,也就是说产生的单据明细可以是5以内的任何值). Parent Table中选择主表中的主健字段,child Table中选择丛表中对应的关联字段,比如图中的CO_ID和COD_ID.它们是这二个主丛表之间的父子关联字段.当然,图2.8中也可能是对多个主丛字段之间的关联,这个留给读者自由发挥.
由上面的分析我们知道,COD_DETAILCODE这个是明细表里的明细编号,对于一个单据编号来说,这个明细编号应该是唯一的,所以我们可以把COD_DETALCODE这个字段设置成自动增加的类型,根据上面的设置,我们可以得到下面的二张单据表
主表
TCxxxx001
TCxxxx002
……
TCxxxx00N
丛表
TCxxxx001 1
TCxxxx001 2
……
TCxxxx001 N
TCxxxx002 N+1
TCxxxx002 N+2
图 2.8
关于主丛表关系的思考:
1 明细编号COD_ID的循环问题
细心的读者可能会注意到,上面明细id产生的方式跟实际数据有所不同,实际的数据应该是每张不同的单据明细是各自增加的,当换一个单据编号后,明细id应该重置成1开始自增,但问题是我们如何知道从表中的当前COD_ID是新的那,对于datafactory来说,如何知道那.是不是可以用写SQL加判断的方式那,这个留给大家讨论,(因为我SQL不熟悉J)
2 主丛表数量一致的问题
数据主丛表结构的人都知道,一般对于一张单据来说,主表里会有一个总数量,明细表里又存储了各个商品的数量,实际的业务数据总数量肯定会=对应明细数量之和,但是我们在datafactory里就很难实现这个数据产生逻辑,(个人觉得不可能+_+),这个也留给读者考虑,欢迎大家把自己对该软件的使用经验拿出来一起交流......
最后感谢QUST公司给我们做了这么好的软件.
文章来源于领测软件测试网 https://www.ltesting.net/