MIS数据库设计时,一个物料有多种计量单位,如何实现?

winwhere 2009-09-15 01:39:01
这涉及到数据库设计问题,以及以后编程的难易程度;

物料是一个表,对于每个物料,可能有不止一个计量单位,每种计量单位之间都有一个换算率,这样的数据库表如何设计,以后编程时会否容易实现;

不知道SAP、用友、金碟这些软件是如何实现的?我没有用过这些软件,如果哪位知道告诉一下!

我自己想了一下,有几种方式:

一是,将物料设计一个表,多个计量单位直接用字段表示,多预留几个,以防备用;

二,将物料设计一个表,计量单位再设计成另一个表,这样可能增加编程的难度;

是否有人知道SAP、用友这些大的ERP厂商是如何解决此类问题的?
...全文
1264 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuwentaolove 2010-06-20
  • 打赏
  • 举报
回复
这个应该不用了吧直接把换算率放在中间表不就得了[Quote=引用 14 楼 david0927cs2006 的回复:]
引用 13 楼 aaajedll 的回复:
物料一個表、計量單位一個表、還有一個物料計量單位對應關系表
因為物料和計量之間的關系,已經是多對多關系,所以必須要用中間表來實現


还有物料单位之间的换算关系还要一个表
[/Quote]
zzxap 2009-09-22
  • 打赏
  • 举报
回复
第二种,编程没什么困难
winwhere 2009-09-22
  • 打赏
  • 举报
回复
phommy (顽石宫主) 与 srgcc (晨钟鸣) 的思路是有点不同,

在 srgcc (晨钟鸣) 的方案中,需要有一个基本计量单位,所有其他的计量单位在输入单据时都换算成基本计量单位存入数据库中,在出入库这样的单据中,要建立两个字段,一个是基本计量单位的数量,一个是默认的数量;

在phommy (顽石宫主)的方案中,不需要基本计量单位,在出入库单据中,只需要一个数量字段,只是在做报表时,再用程序换算成所需要的计量单位数量。

以上两种方案,还要牵涉到BOM的运算,比如配方型的BOM的商品的单位是1吨,所需要原料的计量单位是KG, 1吨的商品里,需要哪些多少原材料,这些原材料以KG来表示,这样可以完成一个BOM的关系。

还有其他的想法,关于BOM运算的,希望各位多发表一下意见!

具体需要设计成多少张表,才最科学,最符合实际的应用需求!
phommy 2009-09-22
  • 打赏
  • 举报
回复
物料表:(物料ID),物料名称,...
计量单位表:(计量单位ID),单位名称,...
物料-计量单位表:(物料ID,计量单位ID)
换算率表:(计量单位ID1,计量单位ID2),换算率
物料换算率表:(物料ID,计量单位ID1,计量单位I,2),换算率

其它不需要解决,只说一下4 5为何都需要有
有些换算率是固定的,比如米-厘米就是100,这种必须放在表4中(如果放在表5中,会产生非常多重复记录并且不满足2NF)
有些换算率是不固定的,比如箱-盒换算根据物料有所不同,就必须使用表5的结构
srgcc 2009-09-22
  • 打赏
  • 举报
回复
在实际环境中,对没有多种单位需要进行换算的物料我就会建立你所说的按种类划分的计量单位组,
这种是公用的,就那么几个就可以了。

对需要进行换算的,几乎每个物料都需要分别建立一个计量单位组,计量单位组名
就是物料名,这样容易区分管理。

相同计量单位组的物料只能有一个基本计量单位。
winwhere 2009-09-21
  • 打赏
  • 举报
回复
计量单位组表,是否就是如11楼sansa说的,好象SAP中的计量单位种类表,这个建立的数据是按照计量单位种类来划分的,比如表示重量的划为一类,表示长度的划为一类?还是有其他的依据?
计量单位组表包含以下字段:编号|组名|基本计量单位
数据如:1 |重量|公斤
2 | 长度|厘米
..................
计量单位表,此表主要为存储计量单位表中的各种计量单位和其与基本计量单位的换算关系,此表的字段有:编号|组号|单位|与基本单位换算率
其中组号,对应“计量单位组表”中的编号。

物料表,此表主要字段为:编号|物料代码|计量单位组|默认计量单位
此表中,“计量单位组”对应的是“计量单位组”表中的编号,“默认计量单位”对应的是“计量单位表”中的编号。这样设计,如果两个物料都属于同一个计量单位组,那么他们只能拥有相同的基本计量单位了?

入库单表,中存储了数量和基本计量单位数量,这个好理解!
==================
以上的问题是,假如按上面的设计,相同计量单位组的物料,就不能有两个基本计量单位了?这样理解是否正确?
tomcat 2009-09-21
  • 打赏
  • 举报
回复
建议使用:
二,将物料设计一个表,计量单位再设计成另一个表,这样可能增加编程的难度;
写程序不是很难,呵呵
winwhere 2009-09-21
  • 打赏
  • 举报
回复
牵涉到4张表,这样就非常明白了,我会好好研究一下,这是一个有价值的话题。

应用程序的很多问题,都是源于数据库的设计,而数据库的设计问题又源于对客观事务理解的不够深入和抽象,学习!

srgcc 2009-09-21
  • 打赏
  • 举报
回复
出入库单中再增加两个字段:基本计量单位数量|计量单位组数量
其中计量单位组数量与物料表中设定的计量单位组相对应


这个理解的不对,出入库单中的数量有:基本计量单位数量和目前你选用的计量单位的数量(不是计量单位组的数量)。

举个例子吧:

计量单位组表:编号 组名 基本计量单位
1 001 KG
计量单位表:编号 组号 单位 与基本单位换算率
1 1 KG 1
2 1 PCS 12
3 1 Ton 1000
物料表: 编号 物料代码 计量单位组 默认计量单位
1 XXX 1 1

入库单表: 单据编号 物料编号 基本计量单位数量 计量单位 数量
IN001 1 1000 3 1

这样明白了吧? 入库单中的单位是Ton,数量是1,所以基本计量单位的数量就是1000了。
chen_ya_ping 2009-09-20
  • 打赏
  • 举报
回复
能不能这样,两个字段,一个存放数字,一个存放单位,我觉得还是你的第二种比较好。
winwhere 2009-09-20
  • 打赏
  • 举报
回复
TO:# srgcc(晨钟鸣),是否可以这样理解:

物料表(wlb):物料编号|计量单位组|基本计量单位
其中计量单位组存储计量单位组表里的组名编号,基本计量单位也是如此;

计量单位组表(jldwz):编号|组名|单位
如 01 重量 公斤

计量单位表(jldw): 物料编号|计量单位组编号|计量单位|与基本计量单位换算率|

出入库单中再增加两个字段:基本计量单位数量|计量单位组数量
其中计量单位组数量与物料表中设定的计量单位组相对应

谢谢!
srgcc 2009-09-18
  • 打赏
  • 举报
回复
是这样的:

一张物料表,两个计量单位字段--计量单位组,基本计量单位(设定好后一般不允许更改)。
一张计量单位组表--组名,单位。
一张计量单位表,字段有计量单位组,计量单位,与基本计量单位换算率。

在出入库单据等等表中都有两个数量字段--基本单位数量,数量。

这样就OK啦。同一个计量单位组里面的单位就可以随便换算了,所有的计量单位数量都折算成基本计量单位数量,库存数量也就没问题了。

唯一的问题是所有换算关系不同的物料都需要分别建计量单位组。





aoyihuashao 2009-09-18
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 winwhere 的回复:]
按3楼的说法,同一种物料,按不同的计量单位计算,你们遇到过吗?
即,同一种物料,有按重量的,如公斤、吨,有按包装的,如包、盒,有按长度的,如米、厘米
哇,这样,太复杂了

表设计的时候,应该没有问题,但会牵涉到编程的难度,你们考虑过如何实现这样的编程吗?

比如在统计各种报表,做BOM运算时,等等问题。
[/Quote]

我自己就弄过的。没问题的。
david0927cs2006 2009-09-18
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 aaajedll 的回复:]
物料一個表、計量單位一個表、還有一個物料計量單位對應關系表
因為物料和計量之間的關系,已經是多對多關系,所以必須要用中間表來實現
[/Quote]

还有物料单位之间的换算关系还要一个表
aaajedll 2009-09-18
  • 打赏
  • 举报
回复
物料一個表、計量單位一個表、還有一個物料計量單位對應關系表
因為物料和計量之間的關系,已經是多對多關系,所以必須要用中間表來實現
bancxc 2009-09-17
  • 打赏
  • 举报
回复
计量单位一个表
计量单位之间的换算率一个表
winwhere 2009-09-17
  • 打赏
  • 举报
回复
按3楼的说法,同一种物料,按不同的计量单位计算,你们遇到过吗?
即,同一种物料,有按重量的,如公斤、吨,有按包装的,如包、盒,有按长度的,如米、厘米
哇,这样,太复杂了

表设计的时候,应该没有问题,但会牵涉到编程的难度,你们考虑过如何实现这样的编程吗?

比如在统计各种报表,做BOM运算时,等等问题。
xuejie09242 2009-09-17
  • 打赏
  • 举报
回复
第二种吧。主要的好处是规范。
计量单位表,不单存名称,还存之间的换算关系。
这样可以完成单位之间的换算,而且是任意单位。比如,币种之间的换算就是如此。。这是第一种方案无法达到的。至于编程,也不会复杂到哪去。
sansa 2009-09-17
  • 打赏
  • 举报
回复
sap 有个计量单位种类 有个计量单位 对于物料还有个物料的替代计量单位
计量单位种类中有一堆指数 如:长度指数、质量指数、时间指数、电流指数、温度指数、物质的量指数 、亮度指数 如长度 长度指数为1 其他指数为0 以此来表示所有的计量单位种类 还有一种叫离散的种类 他所有的指数都是0 如 把 包 堆 罐 这些彼此之间没有转换关系的计量单位种类 计量单位种类中还有个基准计量单位 ,如长度种类 可能基准计量单位是m
计量单位表 包括(转换到 基准计量 单位的)分子 、(为转换到 基准计量 单位)分母 转换基准计量单位指数 以及附加常量 用这些来表示当前计量单位和基准计量单位的转化关系
物料的替代计量单位 包括物料号 替代计量单位 转换的分子和转换的分母 可以在物料基本数据中定义基本计量单位 替代计量单位中定义替代计量单位和基本计量单位的转换关系 使用分子和分母来表达这种转换的关系 在使用的时候 可以使用替代计量单位中存在的计量单位 用分子和分母来计算它和基本计量单位的换算关系

zzz1975 2009-09-15
  • 打赏
  • 举报
回复
搂住问题好像很多,很具体啊,在这里总会有答案的,呵呵
加载更多回复(7)

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧