数据库设计简介
优良的设计 | 糟糕的设计 |
---|---|
减少数据冗余 | 存在大量数据冗余 |
避免数据维护异常 | 存在数据插入,更新,删除异常 |
节约存储空间 | 浪费大量存储空间 |
高效的访问 | 访问数据低效 |
设计步骤
需求分析
数据库需求的作用点:
- 数据是什么
- 数据有哪些属性
- 数据和属性各自的特点有哪些
逻辑设计
使用ER图对数据库进行逻辑建模
物理设计
根据数据库自身的特点把逻辑设计转换为物理设计。
维护优化
- 新的需求进行建表
- 索引优化
- 大表拆分
需求分析
- 了解系统中所要存储的数据
- 了解数据的存储特点(例如:是否具有时效性,有时效性可采取过期清理的方案,大量非核心数据分布分表,归档,清理规则)
- 了解数据的生命周期
要搞清楚的一些问题
- 实体及实体之间的关系(1对1,1对多,多对多)
- 实体所包含的属性有什么?
- 哪些属性或属性的组合可以唯一标识一个实体。
实例演示
以一个小型的电子商务网站为例,在这个电子商务网站的系统中包括了几个核心模块:用户模块,商品模块,订单模块,购物车模块,供应商模块。
用户模块
用于记录注册用户信息
包括属性:用户名,密码,电话,邮箱,身份证号,地址,姓名,昵称…
可选唯一标识属性:用户名,身份证,电话
存储特点:随系统上线时间逐渐增加,需要永久存储。
商品模块
用于记录网站中所销售的商品信息
包括属性:商品编码,商品名称,商品描述,商品品种,供应商名称,重量,有效期,价格…
可选唯一标识属性:(商品名称,供应商名称),(商品编码)
存储特点:对于下线商品可以归档存储。
订单模块
用于用户订购商品的信息
包括属性:订单号,用户姓名,用户电话,收获地址,商品编号,商品名称,数量,价格,订单状态,支付状态,订单类型…
可选唯一标识属性:(订单号)
存储特点:永久存储(分表,分库存储)
购物车模块
用于保存用户购物时选对的商品
包括属性:用户名,商品编号,商品名称,商品价格,商品描述,商品分类,加入时间,商品数量…
可选唯一标识(用户名,商品编号,加入时间),(购物车编号)
存储特点:不用永久存储(设置归档,清理规则)
供应商模块
用于保存所销售商品的供应商信息
包括属性:供应商编号,供应商名称,联系人,营业执照号,地址,法人…
可选唯一标识:(供应商编号),(营业执照号)
存储特点:永久存储
逻辑设计
- 将需求转化为数据库逻辑模型
- 通过ER图的型式对逻辑模型进行展示
- 同所选用的具体的DBMS系统无关