第一章 数据库的设计
一.了解数据库的设计
1.为什么需要数据库的设计
为避免数据库的冗余等问题导致对性能的影响,因而要对数据库进行设计。
2.什么是数据库设计
数据库设计就是将数据库中的数据实体及这些数据实体之间的关系,进行规划和结构化的过程。
3.数据设计的优劣标准
a) 糟糕的数据库设计
- 效率地下
- 更新和检索数据库时会出现许多问题。
b) 良好的数据库设计
- 效率高
- 便于进一步扩展
- 可以使程序的开发变得更容易。
- 需求分析阶段;分析客户的业务和数据处理需求.
- 概要设计阶段;设计数据库的E-R图模型图,确认需求信息的正确和完整。
- 详细设计阶段;将E-R图转换为多张表,进行逻辑设计,确认各表的主外键,并应用数据库设计的三大范式进行审核。
- 代码编写阶段;物理实现数据库,编码实现应用。
- 收集信息;确定客户要做什么,收集一切相关的信息,尽量不遗漏任何信息。
- 标识实体
二.设计数据库的步骤
1.项目开发的四个阶段
2.设计数据库的四个步奏
实体一般是名词,一个实体只描述一件事情,不能重复出现含义相同的实体。
- 标识每个实体要存储的详细信息
- 标识实体之间的关系。
三.绘制E-R图
E-R(Entity-Ralationship)图即数据库设计的图形化表达方式,也称为实体关系图
1.实体关系模型
1.实体
实体一般是名词,对应表中的一行数据
2.属性
名词,属性是实体的特征
3.联系
动词,联系是两个或多个实体之间的关联关系
4.映射基数
表示与该实体关联的其他实体的个数
- 一对一;X中的一个实体最多与Y中的一个实体关联,并且Y中的一个实体做多与X中的一个实体关联。
- 一对多;X中的一个实体可以与Y中的N个实体关联,并且Y中的一个实体做多与X中的一个实体关联。
- 多对一;X中的一个实体最多与Y中的一个实体关联,并且Y中的一个实体可以与X中的N个实体关联。
- 多对多;X中的一个实体可以与Y中的N个实体关联,并且Y的一个实体可以与X中的N个实体关联。
- 矩形表示实体
- 椭圆表示属性
- 菱形表示联系
- 直线用来连接属性和实体集,也用来连接实体和联系
5.实体关系图
6.实体关系模型中的元素
包含:1.实体 2.属性 3.联系
2.关系数据库模式
关系数据库模式即用二维表的形式表示实体和实体间的联系的数据模型。
例:转换为数据库关系模式为:
学生和课程之间是多对多的关系,需要转化,引入联系实体:成绩表
课程(课程代号,课程名称),主键为课程代号(或者课程名称)-------还有其他属性不再一一列出
学生(学号,姓名,年龄),主键为学号
成绩表(学号,课程代号,成绩),复合主键(学号,课程代号)
另外这是简单的E-R图转化为数据库模式,如果复杂的E-R图转化为关系数据库模式
四.绘制数据库模型图
通过图形化的方式显示数据库存储的信息及表之间的关系,以确保数据库设计准确,完整有效。
1.新建数据库模型图(绘制E-R)
2.添加实体
3.添加数据及相应的属性
4.添加实体之间的映射关系
实例:http://jingyan.baidu.com/article/e4511cf3374a862b855eaf58.html
五.数据的规范化
1.数据库设计不规范的问题
- 信息重复
- 更新异常
- 插入异常(无法表示某些信息)
- 删除异常(丢失有用的信息)
2.数据库设计规范的三大范式
1.第一范式(确保每列原子性)
第一范式(Normal Format)确保每列的原子性,确保每列都是最小的不可再分的数据单元。
2.第二范式
确保表中的每列都和主键相关.
2.第三范式
确保每列都和主键列直接相关,而不是间接相关。除了主键列,其他的列和列之间不存在依赖关系。