为什么要设计数据库
当数据库比较复杂的时候,我们就需要进行设计了
糟糕的数据库设计:
- 数据冗余,浪费空间
- 数据库的删除和插入都会比较麻烦,异常【屏蔽使用物理外键】
- 程序的性能差
良好的数据库设计:
-
节省了内存空间
-
保证数据库的完整性
-
方便我们开发系统
软件开发中,关于数据库的设计:
- 分析需求:分析业务和需要处理的数据库的需求
- 概要设计:设计关系图,E-R图
设计数据库的步骤:
- 手机信息,分析需求
- 实体标识(把需求落地到字段)
- 标识实体之间的关系
三大范式
为什么要数据规范化?
- 信息重复
- 更新异常
- 插入异常
- 无法正常显示信息
- 删除异常
- 丢失有效信息
三大范式
第一范式(1NF)
原子性:保证每一列不可再分
第二范式(2NF)
第二范式的前提:满足第一范式
每张表只描述一件事情
第三范式 (3NF)
前提:满足第一范式和第二范式
第三范式需要确保数据库表中的每一列数据都和主键直接相关,而不能间接相关
规范性和性能的问题:
关联查询的表不能超过三张表
- 考虑商业化的需求和目标,数据库的性能更加重要
- 规范性能的问题的时候,需要适当的考虑一下规范性
- 故意给某些表增加一些冗余的字段(从多表查询变为单表查询)
- 故意增加一些计算列(从大数据量降低为小数据量的查询)