数据库设计那些事儿

序言:做工程过程中,总感觉数据库设计太草率了,每个表想的仅仅是如何将数据存起来,但有时候我觉得也应该想一下“有效存储”和“高效读取”。


数据库为什么要设计?
对数据进行有效地存储,高效地访问。
学点数据库设计
步骤:
需求分析——逻辑设计——物理设计——维护优化

一、需求分析

寻找实体
实体包含属性、唯一标识属性、存储特点
分析实体之间的关系

二、逻辑设计

ER图:实体——正方形、属性——圆形、菱形——关系
例如:
学点数据库设计

可能出现问题:操作操作异常(插入异常、更新异常、删除异常)和数据冗余

所以有了设计范式NF:第一范式、第二范式、第三范式和BC范式
- 第一范式:属性不可再分,也就是数据库的表都是二维表。
不能出现这样的:学点数据库设计
- 第二范式
对于单关键字的表都是符合第二范式的。
对于好几个属性组成关键字的表中,不能存在非关键字段对任意候选关键字段的部分函数依赖
解决办法:拆分关系表,每一个关键字带出相应属性组成新表
- 第三范式:不能存在非关键字段对任意候选关键字段的传递函数依赖
解决办法:拆分关系表
- BC范式:如果表是复合关键字,则复合关键字之间也不能存在函数依赖关系
解决办法:拆分关系表

三、物理设计

需要考虑的问题:
1.选择合适的数据库
2.定义数据库、表及字段的命名规则
3.根据所选的DBMS系统选择合适的字段类型
优先选择数字类型,其次是日期或二进制类型,最后是字符类型。相同级别优先选择占用空间小的数据类型。
4.反范式化设计:减少表的关联数量、提高读取效率

四、维护优化

1.维护数据字典

2.维护索引

3.维护表结构

4.在适当的时候对表进行水平拆分或垂直拆分


数据库设计绝没有那么简单,这里就先记录一下大概的东西。


参考慕课网:http://www.imooc.com/learn/117

相关文章:

  • 2021-07-21
  • 2021-11-13
  • 2021-11-14
  • 2021-11-20
  • 2022-12-23
  • 2021-04-24
  • 2022-02-07
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-05
  • 2022-01-14
  • 2021-11-08
  • 2021-12-14
相关资源
相似解决方案