1 概述
在應用系統中經常會有這樣的一個業務需求:對於一個動態的基礎信息表,需要標識其中一個或多個記錄。比如:
- 賬務系統中的成本科目,成本科目是動態添加,但我們在計算某些成本時要去掉固定資產成本類型。
- 對於單位基本信息的維護,單位也是可以動態添加的,但我們的貨物要有一個基礎單位(公噸),並有默認有一個轉換為立方米的設置。
即我們需要知道固定資產在成本表中是哪一條記錄,公噸在單位表中是哪一條記錄,立方米在單位表中是一條記錄。誠然對於這些需求,我們可以在原表上加一些標識字段就可以解決。但這樣為了一些特殊的需求打亂了原有的設計,要修改原有的代碼。
2 解決方案
為了解決這種基礎信息特殊設置的情況,我們創建了一張匹配表,結構如下:
說明:
- ObjType 和ObjName是主鍵;
- ObjType存儲的是匹配類型,如指代是成本類型的匹配,還是單位信息的匹配;
- ObjName存儲的是對應實體的名稱,如在基礎單位匹配時,ObjName即為MetricTonne;
實例數據:
此時想要獲得基礎單位公噸時,即
SELECT * FROM Match AS M INNER JOIN UOM AS U ON M.ObjID=U.UomID WHERE M.ObjType=’UOM’ AND M.ObjName=’MetricTonne’