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公司給我們做了這么好的軟件.
文章來源于領測軟件測試網 http://www.kjueaiud.com/