
数据库系统-学习记录
文章平均质量分 89
此专栏包含武汉大学2020-2021学年第一学期???老师《数据库系统》的上课笔记,内容涵盖数据库的理论及其实现,跨度较大,因此很多地方都是草草了事
十万行出头天
那一日,咱可以出头天
展开
-
兴趣与功利,仅一步之遥——《数据库系统》课程结课感言
兴趣与功利,仅一步之遥——《数据库系统》课程结课感言什么是数据库? 在大二大二学期时,选公选课的时候,我在列表中看到了《Access数据库程序设计》这个名字,这也是我第一次在课程名称中看到“数据库”三个字。 此前,虽然在各个地方或多或少地都看到过“数据库”一词,但却从未认真去了解,这到底是怎样的一个东西。 (如果没记错的话)在高中的时候,一提到“数据库”,脑海中就会浮现出一个保险柜。 而到了大学后,随着与Excel的越来越多的接触,便渐渐地开始认为,数据库就是Excel表格。 因原创 2021-01-23 21:41:56 · 340 阅读 · 4 评论 -
数据库系统-学习记录17-python读取xml文件(一)
python读取xml文件(一) python自带了读取xml文件的模块,其名称正是以xml开头,官网链接在此:https://docs.python.org/zh-cn/3/library/xml.html 如果想要读取xml文件,以获得这个文件中半结构化数据的树结构,则可以先使用xml.dom.minidom.parse()方法来获取:使用parse()获取xml文件对象 现在,以下述xml文件(文件名:barracudamedium.xml)为例:<fish name="Barr原创 2021-01-18 21:13:49 · 361 阅读 · 0 评论 -
数据库系统-学习记录16-半结构化数据模型与XML基础
半结构化数据模型与XML基础 在之前的课程学习中,由于课时缩减及任务的繁重,所以并没有机会接触到XML相关部分的内容。而XML这部分在修改《吞食鱼》的时候又会常常被涉及到,因此对其进行了解也是非常重要的。现在大学的最后一个考试周也结束了,是时候静下心来补充一些自己想去了解,而此前又没有机会去了解的内容了半结构化数据 半结构化数据模型是不同于之前所提到的结构化数据模型的。相比于结构化数据而言,半结构化数据具有更大的灵活性。 半结构化数据是自我描述型的,其本身的模式可以发生变化(而不是像之前的原创 2021-01-18 15:18:47 · 766 阅读 · 0 评论 -
数据库系统-学习记录15【课程完结】
ch7.并发控制(续)使用时间戳的并发控制 事务T的时间戳:TS(T)。事务T将自己开始的消息发给调度器的时刻 使用系统clock或维护一个计数器,都可以对时间戳的生成进行实现 对于每一个数据库元素X,都有两条相关的时间戳以及一个额外的位: 1、RT(X):最近一次有事务对X进行读取的时间戳 2、WT(X):最近一次有事务对X进行写入的时间戳 3、C(X):X的提交位。当且仅当最近对X进行写入的事务进行了commit之后,此位为真 调度器假定,事务时间戳的顺序和它们执行的顺序是原创 2020-12-27 14:25:16 · 171 阅读 · 0 评论 -
数据库系统-学习记录14
ch7.并发控制 在不加干预的情况下,并发执行的事务可能会导致数据库状态的不一致。DBMS的调度器部件,则是对不同事务的各步骤执行顺序进行了一个规范,从而避免不一致性的发生 并发控制便是指保证事务能保持一致性的整个过程串行调度和可串行化调度调度(Schedules) 调度是一个或多个事务的重要动作的一个序列,在缓冲区中的数据库元素可以被多个事务读写。例如,下图描述的动作序列就是一个调度(其中,T1T_1T1和T2T_2T2为事务):串行调度 如果多个事务的动作之间不发生混合,则这原创 2020-12-07 19:50:31 · 289 阅读 · 0 评论 -
数据库系统-学习记录13
ch6.系统故障对策 数据库在使用的过程中,难免会出现各种各样的故障。这些故障往往会给数据带来损失,这个时候就需要进行数据库的恢复可恢复操作的问题和模型故障模式 在数据库的使用中,最重要的故障包括错误数据输入、介质故障、灾难性故障和系统故障等。解决由系统错误引起的故障的基本方法,在于使用日志,通过记录每一条更新操作,以在必要时进行恢复日志管理器与事务管理器 一项事务只能是“全做”或“全不做”,事务管理器便是用于满足这一规定。实际上,事务管理器的主要作用就是保证事务的正确执行,它的主要功能有原创 2020-11-30 20:55:46 · 325 阅读 · 0 评论 -
数据库系统-学习记录12
ch5.查询编译器语法分析和预处理 SQL语句的语法分析阶段,会根据文法,对输入的词语产生一个语法树 例如,下述语言:SELECT movieTitleFROM StarslnWHERE starName IN ( SELECT name FROM MovieStar WHERE birtbdate LIKE '%1960'); 在进行语法分析后,会转换为下述语法树:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RLLX3VU原创 2020-11-24 13:32:27 · 485 阅读 · 1 评论 -
数据库系统-学习记录11
ch4.查询执行物理查询计划操作符 物理査询计划由操作符构成,每一个操作符实现计划中的一步(不理解物理操作符到底都有些啥)物理操作符计算模型 在物理操作符计算模型中,也是用磁盘I/O数目去衡量每个操作的代价的标准,理由同前:从磁盘中得到数据的时间明显长于在内存中的任何操作衡量代价的参数 使用B(RRR)来描述一个关系R的所有元组所需的块的数目 使用T(RRR)来描述一个关系R的元组总数 使用V(R, a)来描述关系R上属性a取不同值的数目实现物理操作符的迭代器 将关系视作一个原创 2020-11-16 22:17:49 · 482 阅读 · 0 评论 -
数据库系统-学习记录10
ch3.索引结构简介稠密索引 在记录排好序时,可以在记录上建立稠密索引 键的顺序与文件中的排序顺序一致,图1为稠密索引的举例:图1 稠密索引 当索引文件中指向记录本身的指针长度远小于记录本身长度,以至于可以存入到内存时,优势就会非常明显:每次查询只需要使用一次I/O操作 使用稠密索引时,无需将索引放入内存即可知道文件是否存在。可以进行范围查询稀疏索引 只为文件的每个存储块设一个键-指针对,节省了更多的存储空间,但查找给定值的记录需要更多时间 稀疏索引的举例如图2所示:图原创 2020-11-10 22:27:38 · 767 阅读 · 0 评论 -
数据库系统-学习记录9
《数据库系统实现》ch2.辅助存储管理存储器层次层次 存储器的层次图如图1所示:图1 存储器层次 在图中,越往下的存储器效率越高,成本也越大 高速缓存:当处理器需要数据和指令时,数据和指令就会从内存移到髙速缓存中,处理器访问髙速缓存的数据只需几纳秒 主存储器:发生在计算机中的每一件事情,不论是指令的执行还是数据的操纵,都是作用于驻留在内存的信息上。将数据从内存转移到处理器或高速缓存的速度在10~100ns的范围内 辅助存储器:典型的辅助存储器是磁盘,因为一次可以传送大量字节,磁原创 2020-11-03 21:11:57 · 426 阅读 · 0 评论 -
数据库系统-学习记录8
ch9.服务器环境下的SQL三层环境 大型数据库的安装具有通用的体系结构,这样的结构区分三种不同而又相互关联的功能:Web服务器、应用服务器和数据库服务器 打开网址时,连接网页服务器,下载网页,生成为可显示的内容显示在ie浏览器上(ie浏览器仅用于显示) 应用逻辑:业务,例如人民币转换为美元 业务逻辑生成为SQL语句,递交给数据库服务器,数据库服务器将数据接收出来,再交给业务逻辑生成SQL环境 模式:是表、视图、断言、触发器和其他类型的集合 目录:模式的集合,是支持唯一的可访问术原创 2020-10-26 21:05:05 · 280 阅读 · 1 评论 -
数据库系统-学习记录7
ch7.约束与触发器键和外键外键约束:出现在一个关系中的值,必然出现在另一个关系中的主键属性中外键约束声明在属性声明的时候,往后添加references <table>(<attribute>),例如:presC int references MovieExec(cert)表示属性presC参照关系MovieExec中的cert属性,presC的值必须来自于cert的值被引用的属性必须是primary key或unique的如果外键包含多个属性,则可以在属性声明完成原创 2020-10-21 15:27:58 · 512 阅读 · 0 评论 -
数据库系统-学习记录6
ch6.数据库语言SQL(续)多表查询SQL的积和自然连接 可以在where子句中设定两表之间的用于连接的属性,例如: 现有两关系: Movies(title, year, length, genre, studioName, producerC#) MovieExec(name, address, cert#, netWorth)select namefrom Movies, MovieExecwhere title = 'Star Wars' and producerC# =原创 2020-10-13 18:56:23 · 618 阅读 · 0 评论 -
数据库系统-学习记录5
ch5.代数与逻辑查询语句包(Bag)的关系运算包与集合的区别:包允许重复,比较高效(省掉了去重的过程)并集、交集与差集与集合的运算基本一致。值得注意的是,进行差集计算的时候,对于重复元组,包R和S有相同的有n个时,R-S运算时,就从R中减去n个,剩余的保留下来投影与集合的投影的不同点在于:包的投影不消去重复元组选择与集合的操作一致,最后同样保留重复元组笛卡尔积、自然连接与集合的操作一致扩展的关系代数运算去除重复元组符号表示:δ(R)\delta(R)δ(R)使得包R内不存在两个原创 2020-10-05 16:25:07 · 692 阅读 · 0 评论 -
数据库系统-学习记录4
判断关系所属范式时,需要先找到候选关键字:没有在FD右边出现的属性必定是候选关键字的一部分,如果找不到,则进行枚举,寻找闭包没有非主属性,一定是第三范式ch4.高级数据库模型用于表达数据库的设计的方式包括:E-R图、UML、ODL实体联系模型(E-R)实体集相似抽象对象的集合为实体集属性实体集与属性相关联,属于实体的特性联系两个或多个实体集之间存在联系E-R图E-R图用于表示实体集、属性和联系。在图中,使用矩形来表示实体,椭圆表示属性,菱形表示联系。使用边来连接实体与属性/实体和联系原创 2020-09-29 10:05:27 · 643 阅读 · 0 评论 -
数据库系统-学习记录3
关系数据库不能消除数据冗余,只能控制关系模式的规范化第一范式:表格中不能套表格定义:若R的每个分量都是不可分的数据项,则R ∈\in∈ 1NF从型上看:不存在嵌套结构从值上看:不存在重复组第二范式:不存在非主属性对码(关键字)的部分依赖定义:若R ∈\in∈ 1NF,且R中的每一个非主属性都完全函数依赖于R的任一候选码,则R ∈\in∈ 2NF从1NF分解为2NF的方法:破坏部分依赖的条件考察关系表中的函数依赖关系,找出完全依赖和部分依赖,若是部分依赖,则标记出其中的主属性,再按主属性进行原创 2020-09-22 20:33:55 · 601 阅读 · 0 评论 -
数据库系统-学习记录2
单个运算符的组合关系代数允许在算符运算后的结果上继续使用算符运算例如,从表1中选出studioName为Fox,length至少为100的titles和years:表1 Movies可以表示为:πtitle, year(σlength≥100 AND studioName=′Fox′(Movies))\pi_{title,\ year}\left(\sigma_{length\ge 100\ AND\ studioName='Fox'}(Movies)\right)原创 2020-09-15 11:41:46 · 356 阅读 · 0 评论 -
数据库系统-学习记录1
ch1.数据库系统简介数据库管理系统(DBMS)被期望做到:1、允许用户用特定语言创建数据库并指定模式2、允许用户进行查询3、进行大量数据的存储4、能够在各种故障中恢复数据5、能够同时被多名用户使用早期数据库管理系统由文件系统演变而来,只能完成部分期望DBMS能够完成的操作关系数据库系统背后为复杂的数据结构,使得能够作出较快的响应用高级语言进行查询DBMS大小的发展趋势体积上越来越小从大型机器上运行,到逐步能够在个人电脑上运行常使用XML标记文档,大量文档的集合组成数据库(?)原创 2020-09-08 21:33:28 · 186 阅读 · 0 评论