数据库复试/面试
一、数据库基本概念
超键:一个包含键的属性集
键:可以决定关系的所有其他属性的最小集合
BCNF范式:每一个非平凡的FD的左边都必须是超键。任意一个二元关系都是BCNF范式。
四范式:每一个非平凡的MVD(多值依赖)的左边都必须是超键。
二、数据库故障
①事务故障
事务在运行过程中由于种种原因,如输入数据的错误、运算溢出、违反了某些完整性限制、某些应用程序的错误以及并行事务发生死锁等,使事务未运行至正常终止点就夭折了,这种情况称为事务故障。
发生事务故障时,夭折的事务可能已把对数据库的部分修改写磁盘。恢复程序要在不影响其他事务运行的情况下,强行回滚(ROLLBACK)该事务,即清除该事务对数据库的所有修改,使得这个事务像根本没有启动过一样。这类恢复操作称为事务撤销(UNDO)。
②系统故障
系统故障是指系统在运行过程中,由于某种原因,如操作系统或DBMS代码错误、操作员操作失误、特定类型的硬件错误(如CPU故障)、突然停电等造成系统停止运行,致使所有正在运行的事务都以非正常方式终止。这时内存中数据库缓冲区的信息全部丢失,但存储在外部存储设备上的数据未受影响。这种情况称为系统故障。
发生系统故障时,一些尚未完成的事务的结果可能已送入物理数据库,为保证数据一致性,需要清除这些事务对数据库的所有修改。但由于无法确定究竟哪些事务已更新过数据库,因此系统重新启动后,恢复程序要强行撤销(UNDO)所有未完成事务,使这些事务像没有运行过一样。
另一方面,发生系统故障时,有些已完成事务提交的结果可能还有一部分甚至全部留在缓冲区,尚未写回到磁盘上的物理数据库中,系统故障使得这些事务对数据库的修改部分或全部丢失,这也会使数据库处于不一致状态,因此应将这些事务已提交的结果重新写入数据库。同样,由于无法确定哪些事务的提交结果尚未写入物理数据库,所以系统重新启动后,恢复程序除需要撤销所有未完成事务外,还需要重做(Redo)所有已提交的事务,以将数据库真正恢复到一致状态。
③介质故障
系统在运行过程中,由于某种硬件故障,如磁盘损坏、磁头碰撞,或操作系统的某种潜在错误,瞬时强磁场干扰等,使存储在外存中的数据部分丢失或全部丢失。这种情况称为介质故障。这类故障比前两类故障的可能性小得多,但破坏性最大。
发生介质故障后,存储在磁盘上的数据被破坏,这时需要装入数据库发生介质故障前某个时刻的数据副本,并重做自此时始的所有成功事务,将这些事务已提交的结果重新记入数据库。
④计算机病毒故障
计算机病毒故障是一种恶意的计算机程序,它可以像病毒一样繁衍和传播,在对计算机系统造成破坏的同时也可能对数据库系统造成破坏。
三、数据库故障修复办法
主要方法有两种:数据库备份(转存)、日志文件。
事务故障反向扫描日志,对事务更新执行逆操作。
系统故障正向扫描日志文件,已经提交的进重做队列,尚未完成的进撤销队列。扫描完成该撤销的撤销,该重做的重做。
介质故障要重装数据库,然后重做已经完成的事务。
四、数据库三范式和BCNF范式
1NF:原子性,字段不可再分,否则就不是关系数据库;
2NF:有主键,非主键字段完全依赖主键,不存在部分依赖。唯一性 一个表只说明一个事物。
3NF:每一列都与主键有直接关系不存在传递依赖;
BCNF:在3NF的基础上消除了主属性对键的部分函数依赖和传递函数依赖。
反三范式
没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,提高读性能,就必须降低范式标准,适当保留冗余数据。具体做法是: 在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,减少了查询时的关联,提高查询效率,因为在数据库的操作中查询的比例要远远大于DML的比例。但是反范式化一定要适度,并且在原本已满足三范式的基础上再做调整的。
五、关系模型的三要素
关系数据结构
关系模型中只包含单一的数据结构----关系,在用户看来关系模型中数据的逻辑结构是一张扁平的二维表
关系操作
查询:选择、投影、连接、并、差、交、笛卡尔积
更新:插入、删除、修改
关系的完整性约束:
- 实体完整性:主属性不能为空,主码不相等
- 参照完整性:例如,学生(学号、姓名、专业号),专业(专业号,专业名),学生关系中的专业号需要参照专业关系中的专业号,称学生关系中的专业号是学生关系的外码,专业关系是被参照关系,学生关系为参照关系,外码与主码不一定要同名,学生关系中的外码取值要么为空值,要么为专业关系中对应专业号的值
- 用户定义完整性:例如,学生的成绩取值范围在0~100之间
六、数据库异常
- 冗余。信息没有必要的在多个元组中重复。
- 插入异常。
- 修改异常。可能只修改了某个元组的信息,但是没有改变其他元组中的相同信息。
- 删除异常。一个值的丢失会使其所在元组消失,这个元组的其他信息就会丢失。
七、事务和事务的四个特性
事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组。将一组语句当做事务考虑,要首先通过ACID测试。
- 原子性。事务是数据库的逻辑工作单位,事务中的操作要么全做,要么不做。
- 一致性。一个事务在执行之前和执行之后都必须处于一致性状态。
- 隔离性。多个事务执行时,彼此互不干扰。
- 持久性。一个事务一旦提交,他对数据库中的数据的改变应该是永久的。
八、E-R模型
E-R模型全名实体-联系图(Entity-RelationDiagram),是属于概念设计阶段,独立于DBMS的模型。
E-R模型三要素:实体、属性、联系。
E-R三种冲突:属性冲突、命名冲突、结构冲突
九、无损连接的判断方法
分成两个的时候:R1⋂R2→R1−R2或R1⋂R2→R2−R1R_1\bigcap R_2\rightarrow R_1 -R_2 或 R_1\bigcap R_2\rightarrow R_2 -R_1R1⋂R2→R1−R2或R1⋂R2→R2−R1
分成n个的时候,看有没有某个R可以推导出全部属性
十、数据库的三种表
基本表、查询表、视图表
十一、数据模型的三要素
数据结构、数据操作、数据约束。
十二、数据库的三种表
基本表、查询表、视图表
十三、数据库的完整性
数据库的完整性是指数据库里数据的正确性和相容性。
数据的正确性是指数据符合现实世界的语义,反应当前实际情况。
数据的相容性是指同一对象在不同表中的数据时符合逻辑的。
数据库完整性主要包括:实体完整性、参照完整性、用户自定义完整性。
十四、数据库安全性
数据库安全性是指防止由于不合法操作造成的数据库数据丢失、修改和破坏。通常使用grant给不同用户授权,用revoke收回授权。
十五、事务并发带来的问题和解决办法
事务并发会造成:读脏数据、不可重复读、数据丢失。
幻影:不可重复读中两次读数据,数据消失或数据变多。
一般采用并发控制解决并发带来的问题,并发控制由封锁实现。也可设置不同的隔离级别。
| 事务隔离级别 | 读脏数据 | 不可重复读 | 幻影 |
|---|---|---|---|
| 读未提交 | √ | √ | √ |
| 读提交 | × | √ | √ |
| 可重复读 | × | × | √ |
| 可串行化 | × | × | × |
十六、数据库设计的步骤
需求分析->概念结构设计->逻辑结构设计->物理结构设计->数据库运行和维护
十七、数据库中的数据模型
层次模型、网状模型、关系模型、面向对象模型。
十八、视图和游标
视图是定义在一个或多个表上的特殊的表。对视图可以进行查询操作,一部分视图可以进行修改,视图的修改会被“替换”触发器变为对基本表的修改。
游标是对查询结果集作一个单元有效处理。游标可以定在该单元中的特定行。逐条处理。
十九、数据独立性
物理独立性
物理独立性是指用户的应用程序与存储在磁盘上的数据库中数据时相互独立的。即,数据在磁盘上怎样存储由DBMS管理,用户程序不需要了解。但需要修改模式-内模式映像
逻辑独立性
逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,即,当数据的逻辑结构改变时,用户程序也可以不变。但需要修改外模式-模式之间的映像。
二十、数据库的模式和模式的好处
三级模式两级映像:外模式、模式、内模式。外模式-模式映像,模式-内模式映像。
好处:见十九
二十一、索引的优缺点
索引是“物化视图”的一种,是被存储在数据库中的数据结构。数据库的搜索引擎可以利用它加速对数据的检索。它很类似与现实生活中书的目录,不需要查询整本书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列或者是多个列。缺点是它减慢了数据录入的速度,同时也增加了数据库的尺寸大小。
二十二、存储过程
类似c语言中的函数,是一种预编译的sql语句。优点是允许模块化设计,只需要编译一次可以被调用多次。可以用一个命令对象来调用存储过程。
二十三、触发器
触发器是一种特殊的存储过程,它由事件进行驱动。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。
二十四、数据字典
数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明,使用数据字典为简单的建模项目。
二十五、SQL语句
SQL语句是集数据查询、数据定义、数据操纵、数据控制功能于一体。
二十六、数据库
数据库系统一般包括数据库、数据库管理系统 、应用系统 、数据库管理员。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)