数据库系统概论

BichonCode 等级 505 0 0

一、范式与规范

1.1 一个二元组一定属于BCNF

eg: R = {A, B, C},{B -> C, B->A } 等价于{B -> AC}

1.2 求候选码

  1. 列出左右出现的元素:L, R, LR,N。(当右边出现组合元素时,拆分开来)
  2. 从(L + N) 中的元素开始求闭包,能推出所有元素则一定是唯一的候选码。
  3. 如果L中的闭包推不出全部元素,则一个个添加LR都出现的元素,此时LR中的所有元素都要试一遍,一个个字母加上去试(最终候选码可能不止一个),一个加上去不行,就加两个。
  4. 当加上所有R的元素还是无法退出所有则一个一个地加上R都出现的元素。

1.3 求最小函数依赖集(结果不唯一)

  1. 右切(即右边只能出现一个元素,如果右边有符合元素则分解)

  2. 除去本求包,除去本身这条规则求闭包,如果不能推出这条规则的右边,则需要保留,反之去掉。

    eg: A - > C ,除去本身,看看A能否推出C。

  3. 左部最小化(例如依赖关系{AB -> C, BD - > A, B - > A}, 此题明显B就能推出C,则无

    BD->A)

  4. 整合剩下的即为最小函数依赖集。

  5. 分解第三范式,如果候选码不在最小依赖集中,则加上任意一个候选码就行。

1.4 求第三范式分解结果

  1. 求出候选码
  2. 求出最小依赖集
  3. 如果候选码出现在最小依赖集中,则直接用最小依赖集分解就行
  4. 如果候选码不出现在最小依赖集中,则需要加上最小候选码作为第三范式的分解结果。

二、优化树

2.1 典型的启发式规则

  1. 选择运算应尽可能先做

在优化策略中这是最重要、最基本的一条。

  1. 把投影运算和选择运算同时进行

如有若干投影和选择运算,并且它们都对同一个关系操作,则可以在扫描此关系的同时完成所有的这些运算以避 免重复扫描关系。

  1. 把投影同其前或其后的双目运算结合起来,没有必要为了去掉某些字段而扫描一遍关系。
  2. 把某些选择同在它前面要执行的笛卡尔积结合起来成为一个连接运算,连接特别是等值连接运算要比同样关系上的笛卡尔积省很多时间。

**

三、sql语句注意事项

  1. 聚合函数和字段组合到一起,要想能够运行通过,那么这个字段只能是分组的那个字段!!

四、数据库恢复技术

4.1 事务

  1. 事务的定义:所谓事务是用户定义的的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。

  2. 事务的ACID特性

    原子性(Atomicity):事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。 一致性(Consistency):事务执行的结果必须是从一个一致性状态变到另一个一致性状态。 隔离性(Isolation):一个事务的执行不能被其他事务干扰。 持续性(Durability):持续性也称永久性,指一个事务一但提交,它对数据库中的数据的改变就应该是永久性的。

4.2 数据库恢复

  1. 为什么要有恢复子系统,其功能是什么?

答:因为计算机系统中硬件的故障,软件的错误,操作员的失误以及恶意的破坏是不可避免的,因此数据库必须有自己的恢复子系统。其是数据库操作管理系统的一个重要组成部分,不仅对系统的可靠程度起着决定性作用,而且对系统的运行效率也有很大影响,是衡量系统性能优劣的重要指标

  1. 什么是日志文件

    答:用来记录事务对数据库所作的更新操作的文件。日志文件有两种格式:以记录为单位的日志文件和以数据块为单位的日志文件。日志文件用来进行事务故障恢复和系统故障恢复,并协助后援副本进行介质故障恢复。

  1. 日志文件作用?

答:日记文件在数据库恢复中起着非常重要的作用,其主要有以下三个作用: 一,事务故障恢复和系统恢复必须用日志文件, 二,在动态转储方式中必须建立日志文件,后备副本和日志文件结合起来才能有效地恢复数据库 三,在静态存储方式中也可以建立日志文件

  1. 故障的种类?

    (1)内部事务的故障 (2)系统故障 (3)介质故障 (4) 计算机病毒

  2. 什么是检查点技术?检查点技术包括那些内容?

    答:增加一个重新开始文件,并让恢复子系统在登陆日志文件期间动态地维护日志。 包括:建立检查点时刻所有正在执行的事务清单。

          这些事务最近一个日志记录的地址。

五、绪论

  1. 数据库系统的特点:

     (1)数据结构化:数据库系统与文件系统的本质区别。
     (2)数据的共享性高、冗余度低且易于扩充。
     (3)数据独立性高
       (4)  数据有数据库管理系统统一管理和控制
  2. 数据模型是数据库系统的核心和基础。

  3. 两类数据模型:

(1)概念模型:也称信息模型,它是按用户的观点来对数据和信息建模,主要用于数据库设计。 (2)逻辑模型和物理模型:逻辑模型主要包括层次模型、网状模型、关系模型、面向对象数据模型、对相关系数据模型、半结构化数据模型等。主要用于数据库管理系统的实现。物理模型是对数据最底层的抽象,它描述数据在系统内部的表示方式和存取方法,或在磁盘或磁带上的存储方式和存取方法。

六、数据库的安全性

6.1 存取控制

  1. 存取控制机制主要包括定义用户权限和合法权限检查两部分。SQL标准主要通过SQL的GRANT语句和REVOKE语句来实现。

6.2 数据库角色

  1. 数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。
收藏
评论区

相关推荐

mysql面试题:如何实现 MySQL 的读写分离?MySQL 主从复制原理是啥?如何解决 MySQL 主从同步的延时问题?
你有没有做 MySQL 读写分离?如何实现 MySQL 的读写分离?MySQL 主从复制原理的是啥?如何解决 MySQL 主从同步的延时问题? 考点分析 高并发这个阶段,肯定是需要做读写分离的,啥意思?因为实际上大部分的互联网公司,一些网站,或者是 app,其实都是读多写少。所以针对这个情况,就是写一个主库,但是主库挂多个从库,然后从多个从库来
30分钟带你了解Web工程师必知的Docker知识
前言 笔者之前和朋友一直在讨论web技术方向的话题,也一直想了解web运维方面的知识,所以特意请教了一下我的朋友老胡,他对web运维和后端技术有非常多的实战经验,所以在本
shell脚本语言实现简单的图书管理系统
/bin/bash author:zhanghongjun version:1.0 date:2011年 12月 14日 星期三 21:18:18 CST function information { echo "" echo "国家图书馆管理系统(5.4版本)" ech
头条研发-SRE运维研发实习生视频面试(一, 二面)
(about:blank%E4%B8%80%E9%9D%A230min "一面 (30min)")一面 (30min) 江湖规矩自我介绍, 很罕见的没有用算法题起手, 直接就问很具体的问题, 点个赞 <3 (htt
使用yum提示Error: rpmdb open failed
在centos系统上,在使用yum命令安装软件包时候报错: rpmdb: Thread/process 6539/140448388269824 failed: Thread died in Berkeley DB library error: db3 error(30974) from dbenvfailchk: DB_RUNRECOVERY: F
运维监控系统——Zabbix简介
前言对于运维人员来说,监控是非常重要的,因为如果想要保证线上业务整体能够稳定运行,那么我们则需要实时关注与其相关的各项指标是否正常,而一个业务系统的背后,往往存在着很多的服务器、网络设备等硬件资源,如果我们想要能够更加方便的、集中的监
运维安全-信息安全
本文转自 ,如有侵权,请联系删除。
运维,关于监控的那些事,你有必要了解一下
作者 | 乔克 来源 | 运维开发故事监控是整个运维以及产品整个生命周期最重要的一环,它旨在事前能够及时预警发现故障,事中能够结合监控数据定位问题,事后能够提供数据用于分析问题。一、监控的目的监控贯穿应用的整个生命周期。即从程序设计、开发、部署、下线。其主要的服务对象有: 技术 业务 技术通过监控系统可以了解技术的环
数据库运维做些什么?
一. 数据库生命周期 结合软件生命周期、项目的开展,数据库的生命周期大致可分为这么几个阶段。 (https://imghelloworld.osscnbeijing.aliyuncs.com/8552b8c2942bb8ce23
DevOps简介
DevOps 是一个完整的面向IT运维的工作流,以 IT 自动化以及持续集成(CI)、持续部署(CD)为基础,来优化程式开发、测试、系统运维等所有环节。DevOps的概念DevOps一词的来自于Development和Operations的组合,突出重视软件开发人员和运维人员的沟通合作,通过自动化流程来使得软件构建、测试、发布更加快捷、频繁和可靠。
DevOps概述
DevOps概述DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营(运维)、质量保障(测试)(QA)部门之间的沟通、协作与整合。随着业务复杂化和人员的增加,开发人员和运维人员逐渐演化成两个独立的部门,他们工作地点分离,工具链不同,业务目标也有差异,这使
DevOps与CICD的区别 及 docker、k8s的CICD思路
1\. DevOps简介DevOps 就是开发(Development)、测试(QA)、运维(Operations)这三个领域的合并。image.png为什么要合并这三个领域?主要是开发和运维的脱节。DevOps是一种思想、一组最佳实践、以及一种文化。DevOps落地实施,从组织架构、设计人员、流程、人员分工、人员技能到工具,变化
一份DevOps工程师职责清单,待你查阅
如果一个组织的开发人员和运维人员是独立工作的模式,实施DevOps就需要对组织进行大的调整。因为,只有具备合适的组织人员,文化和工具来才能成功实施DevOps。根据显示,实施DevOps的最常见的障碍之一是员工缺乏技能。什么是DevOps工程师?DevOps工程师是一位IT专家,应该对开发和运维工作都有广泛的了解,包括编码,基础
Artifactory Terrafrom plugin来了!
前言随着多云环境和DevOps普及,越来多的DevOps工程师要面临云上与云下资源的自动化管理问题。 作为全球领先的Artifact Managenment软件供应商,JFrog的Artifactory也被众多知名企业采用,成为当前最流行的devops工具之一。那么通过什么方法能够在我们的云环境中快速部署一套Artifac
运维大佬嘲笑我,这个你都不知道?
大家好,我是阿沐,一个喜欢分享技术而且爱好写散文的程序员。今天来给大家介绍一下info命令查看redis具体的详细信息讲解!起因是:前几年我在老家郑州实习面试(那个时候还没有毕业)的时候遇到面试官提问;面试官来于百度总部的工程师6年java开发经验+3年多的PHP开发经验,我在他的面前基本就是弟弟中的弟弟,虽然勉强通过入职了,但是却被运维无情地嘲笑,就因为组

热门文章

ConcurrentHashMap计算机网络操作系统Java的其他MapList集合

最新文章

List集合ConcurrentHashMap计算机网络Java的其他Map双指针问题