Online Shopping网上商城数据库设计

本系统是我通过自学课程中了解网上商城的基本业务逻辑和经营过程而开发的一个网上商城的网站,按照我的惯例,对于比较大型的系统,我一般都是把数据库单独举出来,因为数据库设计的好坏,直接影响到后期后台代码和业务逻辑的编写。而数据库的设计又要有一定的生活经历和行当背景才能设计出完美的数据库,在不断的学习中,用一定数量的项目做基础,慢慢地,我们的经验也在不断提高,最终,我们也可以设计出相对完美的数据库。

    好,下面就是我设计的数据库,和网上的现有的数据库大同小异,因为基本的业务逻辑都是相同的。

    

 

 

注意:

这就是我设计的数据库,大家看这张表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点的可乐的单价,从而消除上述的问题。

 

 

 

    综上所述,数据库设计必须在长期的训练中慢慢形成,而且必须要与一定的生活经验和行业背景,否则,设计出来的数据库,会让人哭笑不得。

    谢谢。

你可能感兴趣的:(数据库设计)