第一章 数据库的设计
一、数据库设计简介
1.什么是数据库设计:
将数据库中实体及实体关系进行规划和结构化的过程。
2.为什么要数据库设计?
1.做一个茅草屋无需设计
2.盖一栋高楼大厦要花大价钱设计
3.数据库终究要由程序来读取和操作
4.如果设计的不好,会导致数据冗余、修改复杂、读取效率底下等问题
3.数据库设计的步骤:
a、需求分析阶段:了解客户需求
i、收集信息
ii、标识实体
iii、标识每个实体需要存储的信息(属性)
iiii、标识实体间的关系
b、概要设计阶段:绘制数据库E-R图
c、详细设计阶段:将E-R图转换为数据库中的表,进行逻辑设计,审核三大范式
二、绘制E-R图(概要设计阶段)
1.数据库设计需要图形化的东西
2.E-R图:entity-relationship (实体-关系)
3.图形规则:
a、实体:矩形 名词
b、属性:椭圆 名词
c、关系:菱形 动词
4.映射基数(关系)
a、一对一(人和身份证) 1:1
b、一对多(人和银行卡) 1:n
c、多对一 n:1
d、多对多(试卷和试题) n:m
5.绘制E-R图的工具
a、word
b、Retional Rose
c、Visio
d、PowerDesigner
三、逻辑设计——绘制数据库模型图
1.在详细设计阶段完成数据库模型图
2.根据E-R图来逐步完善和调整
3.使用的绘图工具:
a、Retional Rose
b、Visio
c、PowerDesigner
d、MySQL WorkBench
4.使用WorkBench绘制迷你商城数据库模型图
a、新建模型文件并保存
b、添加表、UserInfo、Product、Orduct、OrderInfo、OrderDetail
c、导出到数据库中
d、保存sql脚本文件
四、数据库设计三大范式
1.第一范式:列的原子性,即每列细分的不能在分了
a、姓名列和地址列,考虑是否可以再分
2.第二范式:表的原子性(一张表描述一件事),即每列和表的主键是相关的
a、用户表:用户名、密码、年龄、生日、头像,可以分为账户表和个人信息表
3.第三范式:表的每列和主键都是直接相关而不是间接关联
a、用户信息表里的工资,可以放在工资表里会更规范
4.规范化和性能的关系
a、三个范式都是层层递进的关系
b、实际开发中不一定每一个表的设计都是达到第三范式
c、有的时候为了提升查询性能和执行效率,会舍弃规范性
i、商品表:单价、数量、总金额
d、规范化和性能在实际生产中需要权衡
五、三大范式的作用:
为了是我们更好的设计数据库。
六、数据完整性是:
数据可靠性加数据准确性。