0
点赞
收藏
分享

微信扫一扫

第5章_数据库相关(一)

张宏涛心理 2022-03-11 阅读 64
数据库

第5章_数据库相关

1.CAP定理

详见12,具体的各种架构设计等详见3

2.事务的ACID特性

详见4

3.并发异常

详见5

4.隔离级别

详细解释见67

5.OracleMySQLSQL Server的事务隔离级别

详见8

6.范式(Normal Form)

设计范式是为了解决实际遇到的一些问题:9

  • 第一范式

举例如下:

公司名称公司地址商品公司电话
名称数量

存在二级表头,商品有名称和数量两个属性,需要拆分开来,改造如下:

公司名称公司地址商品名称商品数量公司电话
  • 第二范式

举例如下:

课程名称学号学生姓名学生分数系名系主任
高等数学1001 李小明95经济系王强
大学英语1001 李小明87经济系王强
普通化学1001 李小明76经济系王强
高等数学1002张莉莉72经济系王强
大学英语1002张莉莉98经济系王强
计算机基础1002张莉莉88经济系王强
高等数学2003高芳芳82法律系刘玲
法学基础2003高芳芳82法律系刘玲

在这张表当中,我们可以看到,是学号、课程名称。因为可能存在重名的情况,所有学生姓名不是主属性。即通过,我们可以确定一条记录,即:其唯一标识一条记录。

但是我们可以看到,对于非主属性系名系主任,其仅依赖于当中的学号,而与课程名称无关,即其部分依赖于

这样的后果就是记录的不必要重复,我们可以根据依赖将其拆分为两个表:

学号课程名称分数
1001李小明95
1001李小明87
1001李小明76
1002张莉莉72
1002张莉莉98
1002张莉莉88
2003高芳芳82
2003高芳芳82

以及

学号姓名系名系主任
1001李小明经济系王强
1002张莉莉经济系王强
2003高芳芳法律系刘玲
  • 第三范式

用上面的图举例:

学号姓名系名系主任
1001李小明经济系王强
1002张莉莉经济系王强
2003高芳芳法律系刘玲

我们可以看到系名和系主任是一一对应的,也就是说,我们可以认为系名依赖于系主任,系主任依赖于学号;或者说系主任依赖于系名,系名依赖于学号。总之存在非主属性对于码的传递依赖,产生了不必要的重复。

所以我们可以拆分如下:

学号姓名系名
1001李小明经济系
1002张莉莉经济系
2003高芳芳法律系

以及

系名系主任
经济系王强
法律系刘玲
  • BC范式

举一个新例子:

仓库名管理员物品名数量
上海仓张三A30
上海仓张三B40
北京仓李四A50
北京仓李四B60

这张表的主属性有点长,包括:仓库名、管理员、物品名,其可以确定非主属性:数量

在主属性当中,我们可以看到仓库名和管理员是一一对应的,存在着主属性对于码的部分函数依赖与传递函数依赖,造成了重复。

所以我们可以拆分如下:

仓库名物品名数量
上海仓A30
上海仓B40
北京仓A50
北京仓B60

以及

仓库名管理员
上海仓张三
北京仓李四
  • 第四范式

举例如下:

学号姓名选课
001王小明数学
001王小明语文

我们可以看到,因为存在重名的情况,所以学号是主属性。而非主属性姓名和课程独立,但是课程存在多值。也就是说存在重复,我们可以分解为:

学号选课
001数学
001语文

以及

学号姓名
001王小明
  • 第五范式

举例如下:

课程教师参考书
英语Bill人教版英语
英语Bill美版英语
英语Jay人教版英语
英语Jay美版英语
英语Dave人教版英语
英语Dave美版英语
高数William人教版高数
高数William美版高数

这个表的大概意思是,假设学校中的某一门课程(英语),由多名教师讲授(Bill,Jay,Dave),并且使用同一套参考书(人教版英语,美版英语)

我们可以看到,这里面全是主键,全码,但存在多值依赖:

多值依赖的具体解释详见13

总之就是造成了重复,仅看课程和教师,我们发现Bill的名字出现了2次;而关注课程和参考书,我们发现人教版英语重复了3次。

拆分如下:

课程教师
英语Bill
英语Jay
英语Dave
高数William

以及

课程参考书
英语人教版英语
英语美版英语
高数人教版高数
高数美版高数

关于前三个范式,我们可以总结为:12

关于各范式具体解决了哪些异常详见109

函数依赖,码,关系模型等的术语解释详见141511

7.反范式

关于反范式的其他解释详见17

8.索引的使用原则
9. 存储过程
10. 存储过程和函数的区别
11.触发器
12.视图

  1. 分布式之CAP原则详解 ↩︎ ↩︎

  2. 数据库事务与特性 ↩︎

  3. 分布式系统的思考及CAP理论 ↩︎

  4. 数据库事务的概念及其实现原理 ↩︎ ↩︎

  5. 数据库并发与并发异常 ↩︎ ↩︎

  6. 理解事务的4种隔离级别(二) ↩︎ ↩︎

  7. 数据库事务4种隔离级别及7种传播行为(三) ↩︎

  8. Oracle|MySQL|SQL Server的事务隔离级别 ↩︎ ↩︎

  9. 【范式】五大范式所解决的问题及说明 ↩︎ ↩︎ ↩︎ ↩︎

  10. 如何理解关系型数据库的常见设计范式? ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  11. 关系、关系模式、关系模型blablabla… ↩︎ ↩︎

  12. 数据库设计范式2——BC范式和第四范式 ↩︎ ↩︎

  13. 规范化理论:多值依赖 ↩︎

  14. 数据库,部分函数依赖,完全函数依赖,传递函数依赖;1NF,2NF,3NF,BCNF ↩︎

  15. 超码、候选码、主码、全码、主属性和非主属性 ↩︎

  16. 4.8.2 反范式 ↩︎

  17. 数据库反范式设计简介 ↩︎

举报

相关推荐

0 条评论