1.数据库设计要点分析
- Mysql数据类型
- 表间关系
1.1 数据类型
Mysql数据类型有哪些?
- 数值类型,整数(tinyint、smallint、mediumint、int、bigint)、小数(float、decimal)
- 字符串类型,char、varchar、text,enum,set
- 日期时间类型,date,time,datetime,timestamp
Msyql没有布尔类型。如何表示布尔类型呢?
有两种解决方案
- 数值,tinyint,应用比较广泛
- 字符串,enum
在php编程中,对于时间,实际上使用比较多的是int。
对于表中的每一个字段,要选用最合适的数据类型。
1.2 表间关系
表与表的 什么关系?
A表和B表
A表中的记录和b表中的记录有哪些关系?
有三种:
- 一对一
- 一对多(多对一)
- 多对多(重点)
如果a表中的一条记录,对应到b中只有一条,反之亦然,一对一。
如果a表中的一条记录,对应到b中有n条,反之,b表中的一条记录对应到a表中是一条,一对多。
如果a表中的一条记录,对应到b中有n条,反之,b表中的一条记录对应到a表中是n条,多对多。
一般来说,一对一出现比较少。一对多是最多的,多对多是最难的。
对于多对多的情况,我们是新增一张表,将一个多对多的关系转化成两个一对多的关系。
2.商品模块数据库设计
首先需要从商品出发。核心就是商品。
图片的保存分成两个部分
- 图片文件本身,它保存在服务器的某个目录下
- 将图片的地址保存到表中,就是字符串。
一对多的表设计
对多对表设计
关于商品的规格参数。
不同类型的商品,其规格参数不同。
如何保存这些信息?
直接使用一个字段保存是无法实现的。
只能用多个字段,每一个字段可以用一条记录保存。
商品的属性分成两大类:
- 通用属性:所有的商品都具备的属性,如名称,价格,图片等。
- 扩展属性,不同类型的商品,其扩展属性是不同的,如手机有分辨率、像素、摄像头等,而服装有尺码、季节、材质,而书有出版社,作者。
商品和扩展属性(规格参数)之间的关系—- 多对多
- 一个商品有多少个扩展属性
- 一个扩展属性 被多少商品拥有
隐含这个一个内容,就是扩展属性作为单独的信息来保存的。
首先,有一张表就是扩展属性表。
最后的设计如下: