架构师学习笔记-数据库范式等

栏目: 后端 · 发布时间: 5年前

内容简介:二、关系代数并交

一、三级模式-两级映射

架构师学习笔记-数据库范式等

通俗地说,

内模式看到的是数据库文件,关心数据如何存放;

概念模式是表

外模式是视图

二、关系代数

笛卡尔积

投影 :select 列

选择:条件过滤

联接:相同列合并,默认等值联接,即只保留两者的相同行

架构师学习笔记-数据库范式等

架构师学习笔记-数据库范式等

架构师学习笔记-数据库范式等

架构师学习笔记-数据库范式等

架构师学习笔记-数据库范式等

三、函数依赖

比如,学号可以确定学生姓名,就说姓名依赖学号。

1、部分函数依赖

主键为(学号 + 课程号),则字段“姓名“部分依赖于学号。

2、传递函数依赖

学号 宿舍 费用

062201 A 900

062230 B 1200

062240 B 1200

学号确定宿舍、宿舍确定费用,且有学号不包含宿舍,宿舍不确定学号,符合传递函数依赖条件。费用传递依赖于学号。

四、规范化理论的价值与用途

架构师学习笔记-数据库范式等

五、求候选关键字

架构师学习笔记-数据库范式等

架构师学习笔记-数据库范式等

架构师学习笔记-数据库范式等

架构师学习笔记-数据库范式等

六、范式

架构师学习笔记-数据库范式等

提升范式能消除数据冗余、插入异常、更新异常、删除异常等弊端;但范式并非越高越好,范式越高,数据的粒度就越小,有可能会带来管理、性能的问题。通常,到达范式三就差不多了。

范式是递增的。要达到高范式,一定是已经满足了低范式。

范式的判别有条件可供判断,条件满足,或者条件不存在,范式都成立

1、第一范式

架构师学习笔记-数据库范式等

2、第二范式

架构师学习笔记-数据库范式等

学分部分依赖主键(只依赖课程号),所以不符合第二范式。解决方法是拆分,将课程从此表中拆分出去,仅保留课程号。事实上, 改造为更高范式,通常都是拆分。

3、第三范式

架构师学习笔记-数据库范式等

主键只有一个,肯定不存在部分依赖情况,所以肯定符合第二范式。但表中存在传递依赖:学号确定系号,系号确定系名和地址,所以不是第三范式。办法:拆分。

4、BC范式

架构师学习笔记-数据库范式等

图中没有非主属性,肯定符合第三范式。但因为罗列出来的依赖表达式中,有属性T不是候选键,所以不是BC范式。

七、模式分解

表拆分其实就是模式分解。

1、保持函数依赖分解

架构师学习笔记-数据库范式等

分解之前有哪些函数依赖,分解之后,它们依然存在。

如图所示,模式R(A,B,C)有A->B,B->C,A->C,分解为R1(A,B),R2(B,C),此为保持函数依赖分解(A->C可由A->B,B->C传递推导出来)。但如果拆分为 R1(A,B)和R3(A,C),则不是保持函数依赖分解,因为B->C没有了。

2、无损分解

架构师学习笔记-数据库范式等

1)表格法

架构师学习笔记-数据库范式等

列为关系模式的属性

行为分解模式

a代表分解模式中拥有原模式中的属性

当有两行中某列为同为a,则可根据函数依赖,将不为a的列改为b。如果最后能得到一行

全为a,则是无损分解。

架构师学习笔记-数据库范式等

2)运算法

架构师学习笔记-数据库范式等

适合分解为两个模式的情况。

将这两个模式分别求交集、互相求差,如果有交集确定任一差,则为无损分解。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Effective Python

Effective Python

布雷特·斯拉特金(Brett Slatkin) / 爱飞翔 / 机械工业出版社 / 2016-1 / 59

用Python编写程序,是相当容易的,所以这门语言非常流行。但若想掌握Python所特有的优势、魅力和表达能力,则相当困难,而且语言中还有很多隐藏的陷阱,容易令开发者犯错。 本书可以帮你掌握真正的Pythonic编程方式,令你能够完全发挥出Python语言的强大功能,并写出健壮而高效的代码。Scott Meyers在畅销书《Effective C++》中开创了一种以使用场景为主导的精练教学方......一起来看看 《Effective Python》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具