博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

层次结构计量单位数据库设计以及组内组间转换率

Posted on 2010-11-24 22:32  刚说  阅读(602)  评论(0编辑  收藏  举报

先来第一章,就从脚本角度来说明吧:

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)