好,下面就是我设计的数据库,和网上的现有的数据库大同小异,因为基本的业务逻辑都是相同的。
注意:
这就是我设计的数据库,大家看这张表salesitem,有一个字段叫unitprice(单价),很多人会说这是个冗余字段,是不需要的字段,是的,一开始我也是这么认为的,因为salesitem (订单单项表)这张表是连接product(产品表),而且商品的单价在product表中已经存在,可以通过多表查询来得到产品的单价,所以没必要在salesitem表中,添加unitprice字段。
这也是我一开始设计的数据库,然而,这也是一个漏洞非常严重的数据库,在培训中,通过和讲师交流,我才恍然大悟,在salesitem表中添加unitprice字段,并且非常清楚这个字段具有非常重要的作用。
下面我讲讲这个字段的作用。
举个例子吧:
如果没有在salesitem表中添加unitprice字段,假设永辉超市一瓶可乐是3块,一天早上从8点到9点之间卖出了10瓶,根据product上的记录知道,可乐一瓶3块,所以总计30块。然而,如果这时候老板心血来潮,对所有员工说,从9点到10点,可乐一瓶涨一元,也就是4元一瓶,所以,后台工作人员,必须修改数据库中product表中的可乐的price,另它的值从原来的3改成4。假设在9点到10点之间,又一单价4元卖出了10瓶可乐。假设一天就卖出这20瓶可乐。
好了,精彩开始。
晚上打烊的时候,点帐的时候,根据20瓶可乐 x 每瓶的代价即可 = 可乐的总计价格。但是,如今每瓶的单价是4元,而早上8点到9点卖出的时候是每瓶3元,无形当中会发现,帐额不对,少了10块钱,请问,这时候是不是要售货员自己掏腰包?
而,如果在salesitem表中加入字段unitprice,即可以很清楚的分清早上8点到9点和9点到10点的可乐的单价,从而消除上述的问题。
综上所述,数据库设计必须在长期的训练中慢慢形成,而且必须要与一定的生活经验和行业背景,否则,设计出来的数据库,会让人哭笑不得。
谢谢。