>  기사  >  데이터 베이스  >  网上商城不同类别产品数据库的设计思路

网上商城不同类别产品数据库的设计思路

WBOY
WBOY원래의
2016-06-07 15:48:131623검색

问题的提出: 网上商城对产品进行了很多分类,不同的分类产品又有不同的属性,比如,电脑的属性有:CUP,内存, 主板,硬盘等等,服装的属性有:布料,尺寸,颜色等等,那么产品表以及产品分类表应该如何设计才能满足 不同类型产品的区别呢? 解决方案: 产

问题的提出:网上商城对产品进行了很多分类,不同的分类产品又有不同的属性,比如,电脑的属性有:CUP,内存,
                  主板,硬盘等等,服装的属性有:布料,尺寸,颜色等等,那么产品表以及产品分类表应该如何设计才能满足

                  不同类型产品的区别呢?

解决方案:
     产品分类表的设计
     第一种设计思路:使用树形结构,递归的形式,可以对产品进行N种     分类,只要你喜欢,树形结构在数据库的设计中
                             经常用到,比如功能菜单表等以下是一个简单的产品分类表。


            
网上商城不同类别产品数据库的设计思路

 

                          说明:上级类别ID为该表的外键,并关联到本级类别ID,这样就可以对产进行N中分类了,这种设计
                                   思想十分灵活,是无限分类中最常用到的。

第二种设计思路:定义N个类别表,并对他们进行关联,如图:

 

          网上商城不同类别产品数据库的设计思路
 

 

                       说明:这种设计在项目中没有人会使用它,因为产品的分类是不固定的,很难在数据库设计的时候确定
                                类别 表的个数,很不灵活。

2、产品表的设计
      第一种设计思路:直接在产品表预留N个字段,用到的时候直接插入数据,如图

                  
网上商城不同类别产品数据库的设计思路
                  可行性:会产生很多字段的冗余,并且不知道到底需要多少个字段,数据类型也不能确定,可行性比较低,但
                              是这种设计也有它的优点,就是表的数量少,其他的优点我实在找不出来了,所以,在项目中这种设
                              计思想也不会用到。

第二种设计思路: 在提及这种设计思路前,首先得了解数据表可以分为两种结构,一种是横表,也就是我们经常用到
                               的表结构,另外一种是纵表,这种结构平时我们用到的表少,所以我也是今天通过请教别人才知
                               有这种表结构的。
     什么是纵表,它有哪些优点和缺点呢?通过两张图片对比来了解或许会更清楚

横表的结构:

     
     网上商城不同类别产品数据库的设计思路
     纵表的结构:

     
     网上商城不同类别产品数据库的设计思路

 

                可以看出横表的优点是很直观,它是根据现行业务逻辑定制,设计简单,易操作,缺点是当业务逻辑发生拓展
          时,大多情况下要更改表的结构。纵表的数据让人看着感觉很乱,而且字段的数据出现很大的冗余,但是纵表的还
         是有很多好处的,它比较灵活,当业务系统发生拓展时可以很好的适应, 知道了这些,那么我们可以进行产品表的
         设计了,在这种设计思想中,需要三个表,一个为产品表,用来存产品的公共属性,另外一个是产品分类表,最后一
         个表很关键,用来存不同类别产品的不同属性,采用的是纵表的结构,如图:   


        
网上商城不同类别产品数据库的设计思路
 
                 说明:通过产品拓展属性表,用户在页面就可以动态的某一类产品添加属性,添加好以后,就采用动态SQL提
           取该类商品的属性生成相应的产品类别属性横表,用来保存产品的属性值
,比如:用户在界面为电脑类ID为
           COMP这一类产品中添加了CUP、内存EMS这两个属性,那么将会动态的提取这两个属性,生成横表T_COMP,
           如图:
 

         
网上商城不同类别产品数据库的设计思路
 
        具体怎么实现,有了设计思路,剩下的就是很死的东西了,或许这种设计不是最好的,但是也是我找了好久资料,也
 向别人请教以后才弄明白这个流程的…… 

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.