数据库复试/面试

一、数据库基本概念

超键:一个包含键的属性集
键:可以决定关系的所有其他属性的最小集合
BCNF范式:每一个非平凡的FD的左边都必须是超键。任意一个二元关系都是BCNF范式。

二、数据库故障

①事务故障

事务在运行过程中由于种种原因,如输入数据的错误、运算溢出、违反了某些完整性限制、某些应用程序的错误以及并行事务发生死锁等,使事务未运行至正常终止点就夭折了,这种情况称为事务故障。
  发生事务故障时,夭折的事务可能已把对数据库的部分修改写磁盘。恢复程序要在不影响其他事务运行的情况下,强行回滚(ROLLBACK)该事务,即清除该事务对数据库的所有修改,使得这个事务像根本没有启动过一样。这类恢复操作称为事务撤销(UNDO)。

②系统故障

系统故障是指系统在运行过程中,由于某种原因,如操作系统或DBMS代码错误、操作员操作失误、特定类型的硬件错误(如CPU故障)、突然停电等造成系统停止运行,致使所有正在运行的事务都以非正常方式终止。这时内存中数据库缓冲区的信息全部丢失,但存储在外部存储设备上的数据未受影响。这种情况称为系统故障。
  发生系统故障时,一些尚未完成的事务的结果可能已送入物理数据库,为保证数据一致性,需要清除这些事务对数据库的所有修改。但由于无法确定究竟哪些事务已更新过数据库,因此系统重新启动后,恢复程序要强行撤销(UNDO)所有未完成事务,使这些事务像没有运行过一样。
  另一方面,发生系统故障时,有些已完成事务提交的结果可能还有一部分甚至全部留在缓冲区,尚未写回到磁盘上的物理数据库中,系统故障使得这些事务对数据库的修改部分或全部丢失,这也会使数据库处于不一致状态,因此应将这些事务已提交的结果重新写入数据库。同样,由于无法确定哪些事务的提交结果尚未写入物理数据库,所以系统重新启动后,恢复程序除需要撤销所有未完成事务外,还需要重做(Redo)所有已提交的事务,以将数据库真正恢复到一致状态。

③介质故障

系统在运行过程中,由于某种硬件故障,如磁盘损坏、磁头碰撞,或操作系统的某种潜在错误,瞬时强磁场干扰等,使存储在外存中的数据部分丢失或全部丢失。这种情况称为介质故障。这类故障比前两类故障的可能性小得多,但破坏性最大。
  发生介质故障后,存储在磁盘上的数据被破坏,这时需要装入数据库发生介质故障前某个时刻的数据副本,并重做自此时始的所有成功事务,将这些事务已提交的结果重新记入数据库。

④计算机病毒故障

计算机病毒故障是一种恶意的计算机程序,它可以像病毒一样繁衍和传播,在对计算机系统造成破坏的同时也可能对数据库系统造成破坏。

三、数据库三范式和BCNF范式

1NF:原子性,字段不可再分,否则就不是关系数据库;
2NF:有主键,非主键字段完全依赖主键,不存在部分依赖。唯一性 一个表只说明一个事物。
3NF:每一列都与主键有直接关系不存在传递依赖;
BCNF:在3NF的基础上消除了主属性对键的部分函数依赖和传递函数依赖。

反三范式

没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,提高读性能,就必须降低范式标准,适当保留冗余数据。具体做法是: 在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,减少了查询时的关联,提高查询效率,因为在数据库的操作中查询的比例要远远大于DML的比例。但是反范式化一定要适度,并且在原本已满足三范式的基础上再做调整的。

四、关系模型的三要素

关系数据结构
关系模型中只包含单一的数据结构----关系,在用户看来关系模型中数据的逻辑结构是一张扁平的二维表
关系操作
查询:选择、投影、连接、并、差、交、笛卡尔积
更新:插入、删除、修改
关系的完整性约束

  1. 实体完整性:主属性不能为空,主码不相等
  2. 参照完整性:例如,学生(学号、姓名、专业号),专业(专业号,专业名),学生关系中的专业号需要参照专业关系中的专业号,称学生关系中的专业号是学生关系的外码,专业关系是被参照关系,学生关系为参照关系,外码与主码不一定要同名,学生关系中的外码取值要么为空值,要么为专业关系中对应专业号的值
  3. 用户定义完整性:例如,学生的成绩取值范围在0~100之间

五、数据库异常

  1. 冗余。信息没有必要的在多个元组中重复。
  2. 更新异常。可能只修改了某个元组的信息,但是没有改变其他元组中的相同信息。
  3. 删除异常。一个值的丢失会使其所在元组消失,这个元组的其他信息就会丢失。

六、事务的四个特性

  1. 原子性。事务是数据库的逻辑工作单位,事务中的操作要么全做,要么不做。
  2. 一致性。一个事务在执行之前和执行之后都必须处于一致性状态。
  3. 隔离性。
  4. 持久性。一个事务一旦提交,他对数据库中的数据的改变应该是永久的。

七、E-R模型的三个要素

实体、属性、联系。

八、无损连接的判断方法

分成两个的时候: R 1 ⋂ R 2 → R 1 − R 2 或 R 1 ⋂ R 2 → R 2 − R 1 R_1\bigcap R_2\rightarrow R_1 -R_2 或 R_1\bigcap R_2\rightarrow R_2 -R_1 R1R2R1R2R1R2R2R1
分成n个的时候,看有没有某个R可以推导出全部属性

九、数据库的三种表

基本表、查询表、视图表

猜你喜欢

转载自blog.csdn.net/weixin_39529891/article/details/113540815