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