网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
🍉 作者简介:半旧518,长跑型选手,立志坚持写10年博客,专注于java后端
☕专栏简介:相当硬核,黑皮书《数据库系统概念》读书笔记,讲解:
1.数据库系统的基本概念(数据库设计过程、关系型数据库理论、数据库应用的设计与开发…)
2.大数据分析(大数据存储系统,键值存储,Nosql系统,MapReduce,Apache Spark,流数据和图数据库等…)
3.数据库系统的实现技术(数据存储结构,缓冲区管理,索引结构,查询执行算法,查询优化算法,事务的原子性、一致性、隔离型、持久性等基本概念,并发控制与故障恢复技术…)
4.并行和分布式数据库(集中式、客户-服务器、并行和分布式,基于云系统的计算机体系结构…)
5.更多数据库高级主题(LSM树及其变种、位图索引、空间索引、动态散列等索引结构的拓展,高级应用开发中的性能调整,应用程序移植和标准化,数据库与区块链等…)
🌰 文章简介:关系模型依旧是现代商用数据处理应用的主要数据模型,它半个多世纪不断融合各种新特点和功能,一直沿用至今。学习关系模型有利于后续我们进行关系数据库设计模式的学习。
文章目录
1关系数据库的结构
关系数据库由表的集合构成。
表中的一行数据就代表了一组值之间存在某种联系,这和数学上关系概念有着密切的联系,这也正是关系数据模型名称的由来。在数学中,一组值被看做一个元组。n个值之间的一种联系在数学上用这些值得一个n元组表示。在数据库中元组被用来代指行,属性则被用来代指列。用关系实例这个术语来指代一个关系的特定实例。也就是说,关系实例包含一组特定的行。关系的每个属性都存在一个允许取值的集合,称为该属性的域。
空值是一个特殊的值,它表示值未知或者并不存在。以后我们将看到,空值会在我们访问和更新数据库时带来许多困难,因此尽量避免使用空值。
我们可以看到,关系型数据结构在存储和处理时固定了数据的格式,这种严格的结构适用于定义明确并且相对静态的应用,但是不太适用于数据本身甚至数据类型这些结构都随着时间而变化的应用,现代企业要平衡好二者。
2 数据库模式
数据库模式是数据库的逻辑设计,而数据库实例是给定时刻数据库中数据的一个快照。比如下面就是一个关系模式:
department(dept_Id,dept_name, building, budget)
3 码
我们必须要能够区分不同元组。超码可以允许我们在一个关系中唯一的标识一个元组。比如上面dept_Id
就是一个超码。
能够唯一确定元组且其任何真子集都不是超码的超码称为候选码,比如dept_Id和dept_name的组合是一个超码,但是dept_name是无关紧要的,不是候选码。只要能够唯一确定元组且其任何真子集都不是超码,它就可以被称之为候选码。比如如果dept_name
和building
组成的元组可满足上列条件,他也是候选码。
我们用主码(primary key)来表示数据库设计者中选择作为一个关系中区分不同元组的主要方式的候选码。主码也被称作主码约束。习惯将主码列于其他属性之前,并加下划线。
department(dept_Id,dept_name, building, budget)
外码约束(foreign-key constarint)表示,在任何数据库实例中,r1的每个元组对A的取值必须也是r2中某个元组对B的取值。也就是表A中的该属性的值一定可以在表B中找到。r1关系在这里称为引用关系,r2关系在这里被称为被引用关系。
注意在外码约束中,被引用属性必须书被引用关系的主码。
更广泛的约束被称为引用完整性约束(referential integrity constraint),它放宽了被引用属性构成被引用关系主码的要求。
4 模式图
一个带有主码和外码的数据库模式可以用模式图来表示。
主码用下划线表示,外码约束从引用关系指向被引用关系。双头箭头表示引用完整性约束。注意实体-联系(E-R)图与模式图不是同一个东西,不要混淆。
5 关系查询语言
查询语言是用户从数据库中请求获取信息的语言。分为三种。
- 命令式查询语言。用户指导系统在数据库上执行特定的运算序列以计算得出结果,这类语言通常有一个状态变量的概念,状态变量会在计算过程中被更新。
- 函数式查询语言。计算被表示为对函数的求职,函数将在数据库数据或者其它函数给出的结果上运行,但是没有附带作用,不会更新程序的状态。
- 声明式查询语言。用户只需要描述所需信息,并不需要给出获取该信息的具体步骤序列或者函数调用。获取信息的方式是数据库系统的工作。
关系代数式函数式查询语言,它构成了SQL查询语言的基础。元组关系演算和域关系演算是声明式的,后面文章我们将进一步介绍。
常用的查询语言比如SQL同时包含命令式、函数式和声明式的方法元素。
6 关系代数
关系代数由一组运算组成,这组运算接受一个或者两个关系作为输出,并且输出一个新的关系作为他们的结果。
其中一些运算只在一个关系上进行,比如选择、投影、改名,这被称为一元运算。
同理,并,笛卡尔积和集差等被称为二元运算。
6.1 选择运算
我们用sigma(σ)来代表选择。比如选择物理系老师,可以表示为:
还可以有=,≠,<,≤,>,≥等用于比较,使用and(∧),or(∨)和not(¬)。
选择谓词可以包含两个属性之间的比较,比如系名与其所在教学楼名字相同的所有系。
6.2 投影运算
如果我们希望列出所有教师的ID,name和salary,就可以使用投影运算。由于关系是一个集合,任何重复的行都会被删除。使用大写的pi(π)表示。
投影运算的基础版本在列表中只许出现属性,在其泛化版本中则允许出现属性的表达式。
另外,关系运算可以复合使用。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新