数据库设计

1.数据库设计要点分析

ü  字段类型,数据类型

ü  表间关系

 

(1).字段类型

在mysql中,有哪些数据类型?

ü  数值型:整型,tinyint、smallint、mediumint、int、bigint。小数,float、decimal

ü  字符串:varchar、char、text、(enum和set,很特殊)

ü  日期时间型:date,time,datetime,timestamp。开发中,使用int表示比较常见的。

 

没有布尔类型,布尔类型如何表示?用enum或者tinyint,用tinyint会方便些。

 

如果能用小的,就尽量用小的,可以提升效率,节省资源。

 

(2).表间关系

表间关系是什么?

表与表之间的关联,

A表中的一条记录对应到B表中有多少条?

B表中的一条记录对应到A表中有多少条?

 

有哪些?

A:B 1:1  B:A 1:1  -> 一对一

 

A:B 1:N  B:A 1:1  -> 一对多

A:B N:1  B:A 1:1  -> 多对一

 

A:B 1:N  B:A 1:N  ->多对多

 

一对一比较少见。

多对多是最难的

如何表示一对多的关系呢?

在多的一方,增加一个外键,关联到一的一方的主键。

 

如何表示多对多的关系呢?

将一个多对多的关系转换成两个一对多的关系。所以需要增加一张中间关联表。

 

如图所示:

 

2.商品模块数据库设计

 

从哪儿开始?

从核心开始,核心是商品。

分析商品,有一张表叫goods

 

 

 

注意,图片的保存分两个部分,图片本身,上传到服务器的某个目录之下,然后将他的路径保存的表中字段中。

 

[绝招]:如何从一张表变成两张表

判断所要表示的是否是同一种信息。

商品信息

分类信息

品牌信息

 

关键:看它们的生命周期,生死与共。

 

再来考虑,商品的属性。

商品的属性分类两类:

ü  通用属性,所有的商品都具备的,比如名称,价格,图片等。存放在goods表中。

ü  扩展属性,也叫规格参数,不同类型的商品其规格参数是不一样的,服装有尺码、颜色、材料等,手机有分辨率,内存,存储,摄像头像素,书籍有作者,出版社,ISBN号。

 

这里主要是考虑扩展属性,如何保存?

最差的方式,用一个字段保存,放到goods中。虽然可行,但处理起来非常麻烦。

一个扩展属性应该用一条记录保存,需要加表,如何加?

 

商品和扩展属性之间的关系是什么?

多对多

 

意味着有三张表,所有的规格参数需要单独管理,所以首先有一张表,attribute,属性表。

 

 

最终,表结构设计如下:

 

posted @ 2016-07-22 13:48  z2168465  阅读(128)  评论(0)    收藏  举报