一、概述
数据库设计是指更具用户需求研制数据库结构的过程化
Ø 数据库设计步骤
1.系统需求分析阶段
2.概念结构设计阶段
3.逻辑结构设计阶段
4.物理设计阶段
5.数据库实施阶段
6.数据库运行与维护阶段
二、三大范式
Ø 第一范式:要求表的每个字段必须是不可分割的独立单元
用户表
用户名 | 地址 | ||
市 | 区 | 详细地址 | |
小花 | 杭州 | 江干区 | XXXXXX |
小明 | 杭州 | 西湖区 | XXXXXX |
这种设计就是不符合第一范式的,地址字段必须拆分开来。如下
用户名 | 市 | 区 | 详细地址 |
小花 | 杭州 | 江干区 | XXXXXX |
小明 | 杭州 | 西湖区 | XXXXXX |
Ø 第二范式:在第一范式基础上,要求每张表只表达一种意思。及表的每个字段都和表的主键有依赖。
用户表
用户名 | 市 | 区 | 详细地址 | 订单编号 |
小花 | 杭州 | 江干区 | XXXXXX | 20160605008CF7 |
小明 | 杭州 | 西湖区 | XXXXXX | 20160605008CF8 |
一个表中的非主键都要和主键有关系,但是订单编号明显和主键用户名没有依赖关系,正确的设计应该拆分成两张表。
用户表
用户名 | 市 | 区 | 详细地址 |
小花 | 杭州 | 江干区 | XXXXXX |
小明 | 杭州 | 西湖区 | XXXXXX |
订单表
订单编号 | 订单名称 |
20160605008CF7 | ACB |
20160605008CF8 | DDE |
Ø 第三范式:在第二范式基础上,要求每张表的主键之外的其他字段都只能和主键有直接的决定依赖关系。
员工表
员工编号[主键] | 员工名称 | 部门编号 | 部门名称 |
0341200255 | 小花 | SC0023 | 销售部 |
这个表中员工编号是主键,它能决定部门编号,也能确定部门名称,但是部门名称又依赖于部门编号,所以违反了第三范式。应该拆分表!因为违反第三范式就会有数据冗余。
员工表
员工编号[主键] | 员工名称 | 部门编号 |
0341200255 | 小花 | SC0023 |
部门表
部门编号 | 部门名称 |
SC0023 | 销售部 |
Ø BC范式:bc范式是在第三范式的基础上的一种特殊情况,既每个表中只有一个候选键。是属于第三范式的增强型。
候选键:惟一标识一行数据,其真子集不能是侯选关键字,一个表可以存在多个侯选关键字
员工表
员工编号 | 员工名称 | |
0341200255 | 小花 | xiaohua@126.com |
因为员工编号和Email都是可以唯一标识这张表的,所以都是候选键,但是BC范式规定一个表只能有一个候选键。所以可以拆分成员工表和Email表
三、数据库系统设计工具PowerDesigner
Power Designer 是Sybase公司的CASE工具集,使用它可以方便地对管理信息系统进行分析设计,他几乎包括了数据库模型设计的全过程。利用PowerDesigner可以制作数据流程图、概念数据模型、物理数据模型,还可以为数据仓库制作结构模型,也能对团队设计模型进行控制。他可以与许多流行的软件开发工具,例如PowerBuilder、Delphi、VB等相配合使开发时间缩短和使系统设计更优化。