对于第二个问题,如果不作处理,并不是想象中的那么简单,因为销售的人并不是进货的人,而且对于一个联网的数据库来说,销售的人并不是一个,而且是多个,他们对货物的价格可能一无所知,货物是按照数据库中的“销售价”来售出的,发票也是按照这项数据来计算并打印的,打印发票的销售人员不可能知道所有货物价格的变动,从而也不知道货物的销售价和发票是否正确。如进货的人在录入数据的时候真的出错了,数据库又没有作相应的处理,那么后果将是难能想象的。还是以那个“医院管理系统”为例来详细讨论这个问题吧(为简化,只列相关的重要字段):
1、药品表
ID 品名 购进价 销售价
1 咳必清 5 8
2 病毒灵 0.5 0.7
……
2、药品购进明细(其中“药品ID”与“药品表”中的ID是一对多的关系,实施参照完整性)
ID 药品ID 进货价 进货日期
1 2 0.5 2002-8-1
2 3 7 2002-8-1
3 1 9 2002-8-1
……
3、药品售出明细(其中“药品ID”与“药品表”中的ID是一对多的关系,实施参照完整性;“销售价”通过查询“药品表”得到)
ID 药品ID 销售价 销售量 售出日期
1 2 0.7 5 2002-8-2
2 3 9 2 2002-8-2
3 1 8 3 2002-8-2
很显然,在2002-8-1日购进“1”(咳必清)的时候,药品提价了,这时应该修改“药品表”中的“购进价”,也要修改“销售价”,“购进价”可以写一段代码来自动修改,但销售价则不能,因为其是不确定性的(当然也可以设置一个利润比例来自动修改,但这样太疆化了),必须人工修改,但如果录入人员由于工作上的失误,忘了更新“销售价”,就会出现“上面药品售出明细”中显示的那样,“咳必清”已提价到9元,但销售人员仍按8元的价格售出“咳必清”,这将是医院重大的经济损失。
对于上面这个问题,我现在所能做到的是,(1)在“购进价”改变的时候提示操作员修改“销售价”;(2)在销售时如果发现有某种药品的的“销售价”比“购进价”还小或达不到某一个利润比例,则系统禁止这种药品的售出,但却不能完全禁止这样的无效数据的存在,如何才能做到完全禁止这样的无效的数据的保存呢?请高手指点迷津。
对于第三个问题,还请版主指点一下,详细说说如何用ACCESS禁止这样的问题的出现。谢谢。
[此贴子已经被作者于2002-10-12 21:49:13编辑过]
[此贴子已经被作者于2002-10-12 21:58:19编辑过]
|