From 8ee1f42525442f26e131ed984a5d9b14baecffe6 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Sun, 18 Mar 2018 16:27:56 +0800 Subject: [PATCH] auto commit --- notes/数据库系统原理.md | 104 ++++++++++++------ pics/c2d343f7-604c-4856-9a3c-c71d6f67fecc.png | Bin 0 -> 32768 bytes 2 files changed, 73 insertions(+), 31 deletions(-) create mode 100644 pics/c2d343f7-604c-4856-9a3c-c71d6f67fecc.png diff --git a/notes/数据库系统原理.md b/notes/数据库系统原理.md index 7f42cdf0..f1f02f28 100644 --- a/notes/数据库系统原理.md +++ b/notes/数据库系统原理.md @@ -294,26 +294,30 @@ Entity-Relationship,有三个组成部分:实体、属性、联系。 ## 异常 -以下关系中,Sno 表示学号,Sname 表示学生姓名,Sdept 表示学院,Cname 表示课程名,Mname 表示院长姓名。函数依赖为 {Sno, Cname} -> {Sname, Sdept, Mname}。 +以下的学生课程关系的函数依赖为 Sno, Cname -> Sname, Sdept, Mname, Grade,键码为 {Sno, Cname}。也就是说,确定学生和课程之后,就能确定其它信息。 -

+| Sno | Sname | Sdept | Mname | Cname | Grade | +| :---: | :---: | :---: | :---: | :---: |:---:| +| 1 | 学生-1 | 学院-1 | 院长-1 | 课程-1 | 90 | +| 2 | 学生-2 | 学院-2 | 院长-2 | 课程-2 | 80 | +| 2 | 学生-2 | 学院-2 | 院长-2 | 课程-1 | 100 | -不符合范式的关系,会产生很多异常。主要有以下四种异常: +不符合范式的关系,会产生很多异常,主要有以下四种异常: -1. 冗余数据 -2. 修改异常 -3. 删除异常 -4. 插入异常,比如如果新插入一个学生的信息,而这个学生还没选课,那么就无法插入该学生。 +1. 冗余数据。 +2. 修改异常,修改了一个记录中的信息,但是另一个记录中相同的信息却没有被修改。 +3. 删除异常,删除一个信息,那么也会丢失其它信息。例如如果删除了课程-1,因为学生和课程共同组成了键码,那么学生-1 数据也就不能存在,因此也需要删除。 +4. 插入异常,比如新插入一个学生的信息,而这个学生还没选课,那么就无法插入该学生。 ## 范式 -范式理论是为了解决以上提到四种异常。 +范式理论是为了解决以上提到四种异常。高级别范式的依赖于低级别的范式。 -高级别范式的依赖基于低级别的范式。 +

### 1. 第一范式 (1NF) -属性不可分。 +属性不可分; ### 2. 第二范式 (2NF) @@ -323,57 +327,95 @@ Entity-Relationship,有三个组成部分:实体、属性、联系。 **分解前**
-

+| Sno | Sname | Sdept | Mname | Cname | Grade | +| :---: | :---: | :---: | :---: | :---: |:---:| +| 1 | 学生-1 | 学院-1 | 院长-1 | 课程-1 | 90 | +| 2 | 学生-2 | 学院-2 | 院长-2 | 课程-2 | 80 | +| 2 | 学生-2 | 学院-2 | 院长-2 | 课程-1 | 100 | -

+以上学生课程关系中,{Sno, Cname} 为键码,有如下函数依赖: + +- Sno, Cname -> Sname, Sdept, Mname +- Son -> Sname, Sdept +- Sdept -> Mname +- Sno -> Manme +- Sno, Cname-> Grade + +Grade 完全函数依赖于键码,它没有任何冗余数据,每个学生的每门课都有特定的成绩。 + +Sname, Sdept 和 Manme 都函数依赖于 Sno,而部分依赖于键码。当一个学生选修了多门课时,这些数据就会出现多次,造成大量冗余数据。 **分解后**
-

+关系-1 -

+| Sno | Sname | Sdept | Mname | +| :---: | :---: | :---: | :---: | +| 1 | 学生-1 | 学院-1 | 院长-1 | +| 2 | 学生-2 | 学院-2 | 院长-2 | +| 2 | 学生-2 | 学院-2 | 院长-2 | -

+有以下函数依赖: -

+- Sno -> Sname, Sdept, Mname +- Sdept -> Mname -

+关系-2 -

+| Sno | Cname | Grade | +| :---: | :---: |:---:| +| 1 | 课程-1 | 90 | +| 2 | 课程-2 | 80 | +| 2 | 课程-1 | 100 | -

+有以下函数依赖: + +- Sno, Cname -> Grade ### 3. 第三范式 (3NF) 非主属性不传递依赖于键码。 -上述 S1 存在传递依赖,Mname 依赖于 Sdept,而 Sdept 又依赖于 Sno,可以继续分解。 +上面的关系-1 中存在以下传递依赖:Sno -> Sdept -> Mname,可以进行以下分解: -

+关系-11 + +| Sno | Sname | Sdept | +| :---: | :---: | :---: | +| 1 | 学生-1 | 学院-1 | +| 2 | 学生-2 | 学院-2 | +| 2 | 学生-2 | 学院-2 | + +关系-12 + +| Sdept | Mname | +| :---: | :---: | +| 学院-1 | 院长-1 | +| 学院-2 | 院长-2 | +| 学院-2 | 院长-2 | ### 4. BC 范式(BCNF) 所有属性不传递依赖于键码。 -关系模式 STC(Sname, Tname, Cname, Grade),其中四个属性分别为学生姓名、教师姓名、课程名和成绩。有以下函数依赖: +关系 STC(Sname, Tname, Cname, Grade) 的四个属性分别为学生姓名、教师姓名、课程名和成绩,它的键码为 (Sname, Cname, Tname),有以下函数依赖: -

+- Sname, Cname -> Tname +- Sname, Cname -> Grade +- Sname, Tname -> Cname +- Sname, Tname -> Grade +- Tname -> Cname -

+存在着以下函数传递依赖: -

+- Sname -> Tname -> Cname -

- -

- -分解成 SC(Sname, Cname, Grade) 和 ST(Sname, Tname),对于 ST,属性之间是多对多关系,无函数依赖。 +可以分解成 SC(Sname, Cname, Grade) 和 ST(Sname, Tname),对于 ST,属性之间是多对多关系,无函数依赖。 # 参考资料 - 史嘉权. 数据库系统概论[M]. 清华大学出版社有限公司, 2006. - 施瓦茨. 高性能MYSQL(第3版)[M]. 电子工业出版社, 2013. -- [MySQL 乐观锁与悲观锁 ](https://www.jianshu.com/p/f5ff017db62a) - [Transaction isolation levels](https://www.slideshare.net/ErnestoHernandezRodriguez/transaction-isolation-levels) - [Concurrency Control](http://scanftree.com/dbms/2-phase-locking-protocol) - [The Nightmare of Locking, Blocking and Isolation Levels!](https://www.slideshare.net/brshristov/the-nightmare-of-locking-blocking-and-isolation-levels-46391666) diff --git a/pics/c2d343f7-604c-4856-9a3c-c71d6f67fecc.png b/pics/c2d343f7-604c-4856-9a3c-c71d6f67fecc.png new file mode 100644 index 0000000000000000000000000000000000000000..84b2898b3989e345cf1c01b38068c475ba9f8e8b GIT binary patch literal 32768 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