夺命雷公狗ThinkPHP项目之----商城2数据库设计

重要难度:五星

难度:无形

数据库的设计,就是体现了你对业务逻辑的了解

数据库设计的好坏,有时候决定了项目的成败

要点:

表与表之间的关系(一对一,一对多,多对多)

每一个字段的数据类型(数值,字符串,日期时间)没有布尔类型,使用tinyint来代替,1是真,0是假

 

设计数据库,以商品为例

找到核心(中心),然后一步步的展开

核心->商品

 

先来初步设计一下商品表的字段:

名称、价格、图片、颜色、上架时间、各种规格参数、详细描述,库存,品牌、分类。

品牌和商品是两个不同的东西,设计表的一个理念:一张表表示一种信息。

如果全部东西都放在同一张表里面那么很容易出现数据冗余-->更新异常、删除异常。耦合性高。

软件开发的一个理念:低耦合、高内聚。

如:

品牌:apple->1984年就诞生了

商品:iphone6 plus->2014年才有的

商品和价格是在同一张表里面保存的,有了这个商品就不需要有一个价格,品牌应该独立一张表保存。

品牌和商品的关系可以从以下两个方面来进行判断

一个品牌有多个商品,

如:

apple下有->iPhone4->iPhone4s->iPad等等

一个商品对应一个品牌

如:

iPhone6 plus 和iPhone6s 他们对应的品牌都是apple

从以上分析就可以分析出他们之间的关系是:一对多.

 

可以通过以下方法来体现他们之间的关系:

1的一方,称之为父表,多的一方称之为子表。需要在子表中增加一个字段,和主表中的主键进行关联,子表中的这个字段就是外键。

 

 

商品分类信息,同样也单独的保存到一张表中。商品分类表。

商品分类主要目的就死为了让用户体验度提高.

 

不同类型的商品有不同的扩展属性,但常见的分类一般都离不开以下这两种:

如:

基础信息:所有商品都具备的属性,如商品名,压缩图,和价格等

扩展信息:不同的商品他的扩展信息是不同的,如服装,有材质,颜色,做工,手机则具备 屏幕尺寸,操作系统,内存大小,摄像头,书籍具备 出版社,作者等等。

 

不同类型的商品,他有不同的扩展属性。

首先需要把这些扩展保存起来此时就有了两种表,如:goods_type和attribute表,attribute存到属性本身,不是某个商品的属性。

 

商品和属性之间的关系就如我们常见的学生管理系统的表结构,如下图所示:

 

 

上面的选修情况表就是为了决解多对多的问题,需要引入第三张关联表。

 

本项目商品模块的表设计ER图如下所示:

 

posted @ 2015-11-06 08:51  夺命雷公狗  阅读(534)  评论(0编辑  收藏  举报