先来第一章,就从脚本角度来说明吧:
1.计量单位数据库设计
2.批量进行计量单位转换
3.统一单位模型
代码
/*
1.计量单位数据库设计
2.批量进行计量单位转换
3.统一单位模型
*/
/*
计量单位表
用于存储计量单位基本信息
*/
If OBJECT_ID('Base_UOM') IS NOT NULL
Drop Table Base_UOM
Go
Create Table Base_UOM
(
ID BigInt,
Name Nvarchar(50), --计量单位名称
BUOM BigInt, --基础单位
Class Int, --计量单位组,如长度,时间,重量
Ratio Decimal(24,9) --转换率
)
/*
计量单位组之间的转换率表
用于存储计量单位组之间的基准单位转换率
*/
If OBJECT_ID('Base_UOMRatio') IS NOT NULL
Drop Table Base_UOMRatio
Go
Create Table Base_UOMRatio
(
ID BigInt,
FromUOM BigInt, --从单位
ToUOM BigInt, --到单位
Ratio Decimal(24,9) --转换率
)
/*
业务数据表
存储有基本业务数据
*/
If OBJECT_ID('Base_BizData') IS NOT NULL
Drop Table Base_BizData
Go
Create Table Base_BizData
(
ID BigInt,
Item Nvarchar(50),
UOM BigInt,
Qty Decimal(24,9)
)
/*
初始化测试数据:数量仅作为演示,不代表业务意思
1.基准单位的基准单位为空
2.假设 秒到毫米 单位之间的转换率为 2
*/
--计量单位数据
Truncate Table Base_UOM
Insert Into Base_UOM(ID,Name,BUOM,Class,Ratio) Values (1,'秒 ',1,1,1)
Insert Into Base_UOM(ID,Name,BUOM,Class,Ratio) Values (2,'分 ',1,1,60)
Insert Into Base_UOM(ID,Name,BUOM,Class,Ratio) Values (3,'小时',2,1,60)
Insert Into Base_UOM(ID,Name,BUOM,Class,Ratio) Values (4,'天 ',3,1,24)
Insert Into Base_UOM(ID,Name,BUOM,Class,Ratio) Values (10,'毫米',10,2,1)
Insert Into Base_UOM(ID,Name,BUOM,Class,Ratio) Values (11,'厘米',10,2,10)
Insert Into Base_UOM(ID,Name,BUOM,Class,Ratio) Values (12,'分米',11,2,10)
Insert Into Base_UOM(ID,Name,BUOM,Class,Ratio) Values (13,'米 ',10,2,1000)
Insert Into Base_UOM(ID,Name,BUOM,Class,Ratio) Values (14,'千米',13,2,1000)
--计量单位之间转换率
Truncate Table Base_UOMRatio
Insert Into Base_UOMRatio(ID,FromUOM,ToUOM,Ratio) Values (1,1,10,2)
--业务数据
Insert Into Base_BizData(ID,Item,UOM,Qty) Values (1,'a',3,120)
Insert Into Base_BizData(ID,Item,UOM,Qty) Values (2,'a',4,20)
Insert Into Base_BizData(ID,Item,UOM,Qty) Values (3,'a',4,90)
Insert Into Base_BizData(ID,Item,UOM,Qty) Values (4,'a',4,40)
Insert Into Base_BizData(ID,Item,UOM,Qty) Values (5,'a',3,50)
Insert Into Base_BizData(ID,Item,UOM,Qty) Values (6,'b',1,30)
Insert Into Base_BizData(ID,Item,UOM,Qty) Values (7,'b',13,20)