夺命雷公狗ThinkPHP项目之----商城2数据库设计
重要难度:五星
难度:无形
数据库的设计,就是体现了你对业务逻辑的了解
数据库设计的好坏,有时候决定了项目的成败
要点:
表与表之间的关系(一对一,一对多,多对多)
每一个字段的数据类型(数值,字符串,日期时间)没有布尔类型,使用tinyint来代替,1是真,0是假
设计数据库,以商品为例
找到核心(中心),然后一步步的展开
核心->商品
先来初步设计一下商品表的字段:
名称、价格、图片、颜色、上架时间、各种规格参数、详细描述,库存,品牌、分类。
品牌和商品是两个不同的东西,设计表的一个理念:一张表表示一种信息。
如果全部东西都放在同一张表里面那么很容易出现数据冗余-->更新异常、删除异常。耦合性高。
软件开发的一个理念:低耦合、高内聚。
如:
品牌:apple->1984年就诞生了
商品:iphone6 plus->2014年才有的
商品和价格是在同一张表里面保存的,有了这个商品就不需要有一个价格,品牌应该独立一张表保存。
品牌和商品的关系可以从以下两个方面来进行判断
一个品牌有多个商品,
如:
apple下有->iPhone4->iPhone4s->iPad等等
一个商品对应一个品牌
如:
iPhone6 plus 和iPhone6s 他们对应的品牌都是apple
从以上分析就可以分析出他们之间的关系是:一对多.
可以通过以下方法来体现他们之间的关系:
1的一方,称之为父表,多的一方称之为子表。需要在子表中增加一个字段,和主表中的主键进行关联,子表中的这个字段就是外键。
商品分类信息,同样也单独的保存到一张表中。商品分类表。
商品分类主要目的就死为了让用户体验度提高.
不同类型的商品有不同的扩展属性,但常见的分类一般都离不开以下这两种:
如:
基础信息:所有商品都具备的属性,如商品名,压缩图,和价格等
扩展信息:不同的商品他的扩展信息是不同的,如服装,有材质,颜色,做工,手机则具备 屏幕尺寸,操作系统,内存大小,摄像头,书籍具备 出版社,作者等等。
不同类型的商品,他有不同的扩展属性。
首先需要把这些扩展保存起来此时就有了两种表,如:goods_type和attribute表,attribute存到属性本身,不是某个商品的属性。
商品和属性之间的关系就如我们常见的学生管理系统的表结构,如下图所示:
上面的选修情况表就是为了决解多对多的问题,需要引入第三张关联表。
本项目商品模块的表设计ER图如下所示: