《数据库》复试问答题总结

2024-03-15 15:04

本文主要是介绍《数据库》复试问答题总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

并发一致性问题有那些?:
在并发环境下,事务间的隔离性很难保证,因此会出现并发一致性问题。

并发一致性问题主要有四类,即:丢失修改问题,读脏数据问题,不可重复读问题,幻影读问题。

丢失修改问题:T1和T2两个事务都对同一数据进行修改,T1先修改,T2随后修改,T2的修改覆盖了T1的修改。
读脏数据问题:T1修改了一个数据,T2随后读取了这个数据,但是T1又撤销了修改,此时T2读取到的数据就是脏数据。
不可重复读问题:T1读取了一个数据,T2随后修改了这个数据,T1再次读取这个数据时与之前读取的值不同。
幻影读问题:T1读取一个范围内的数据,T2随后插入了该范围内的一个数据,T1再次读取这个范围内的数据时,和第一次读的结果不同。

白盒测试主要有哪些覆盖?:
(1)语句覆盖 使程序中的每个可执行语句都能执行一次的测试用例

(2)判定覆盖(分支覆盖) 对于判断语句,在设计用例的时候,要设计判断语句结果为True和False的两种情况

(3)条件覆盖 设计用例时针对判断语句里面每个条件表达式true 和 false各取值一次,不考判断语句的计算结果

(4)判定条件覆盖(分支条件覆盖) 设计测试用例时,使得判断语句中每个条件表达式的所有可能结果至少出现一次,每个判断语句本身所有可能结果也至少出现一次。

(5)条件组合覆盖 设计测试用例时,使得每个判断语句中条件结果的所有可能组合至少出现一次

(6)路径覆盖 设计测试用例时,覆盖程序中所有可能的执行路径

覆盖方法的优点:这种覆盖方法可以对程序进行彻底的测试用例覆盖,比前面讲的五种方法覆盖度都要高。

覆盖方法的缺点:于路径覆盖需要对所有可能的路径进行测试(包括循环、条件组合、分支选择等),那么需要设计大量、复杂的测试用例,使得工作量呈指数级增长。路径覆盖虽然是一种比较强的覆盖,但未必考虑判断语句中条件表达式结果的组合,并不能代替条件覆盖和条件组合覆盖。

不符合范式的关系,会产生很多异常,主要有那些异常?:
不符合范式的关系,会产生很多异常,主要有以下四种异常:

冗余数据:例如 某个数据出现了两次。
修改异常:修改了一个记录中的信息,但是另一个记录中相同的信息却没有被修改。
删除异常:删除一个信息,那么也会丢失其它信息。例如删除了 数据A 需要删除第一行和第三行,那么 数据B的信息就会丢失。
插入异常:例如想要插入一个学生的信息,如果这个学生还没选课,那么就无法插入。

范式有那些,具体讲讲?:
**第一范式定义:**数据库表中的所有字段都是单一属性,不可再分的;这个单一属性是由基本的数据类型所构成的;如整数、浮点数、字符串等;换句话说:第一范式要求数据库中的表都是二维表;数据库中的表都是符合第一范式要求的。

**第二范式定义:**数据库的表中不存在非关键字段对任一候选关键字段的部分函数依赖。部分函数依赖是指存在着组合关键字中的某一关键字决定非关键字的情况。换句话说: 所有单关键字段的表都符合第二范式。

**第三范式:**第三范式是在第二范式的基础之上定义的。如果数据表中不存在非关键字段对任意候选关键字的传递函数依赖则符合第三范式

BC范式(Boyce.Codd)定义:在第三范式的基础之上,数据库表中如果不存在任何字段对任一候选关键字段的传递函数依赖则符合BC范式。也就是说如果是复合关键字,则复合关键字之间也不能存在函数依赖关系。
 

什么是计算机系统完整性?完整性约束条件作业的对象?
数据的完整性是指数据的正确性和相容性,防止不合语义的数据进入数据库。
**列:**对属性的取值类型、范围、精度等的约束条件
**元组:**对元组中各个属性列间的联系的约束
**关系:**对若干元组间、关系集合上以及关系之间的联系的约束

E-R 图的三种冲突?:

存在的冲突

(1).命名冲突:项名、项目名异名同义,统一命名为项目名;

(2).结构冲突:项目在两个局部 ER 图中,一个做多值属性,一个作实体。

(3).属性冲突。统一 为实体;运动队在两个局部图里的结构不一致也需统一。

视图的作用?:

作用:

①简化了操作,把经常使用的数据定义为视图。

②安全性,用户只能查询和修改能看到的数据。

③逻辑上的独立性,屏蔽了真实表的结构带来的影响。

数据库安全性控制的一般方法有那些?:
(1)环境级:对计算机系统的机房和设备加以保护,防止物理破坏。
(2)职员级:对数据库系统工作人员,加强劳动纪律和职业道德教育,并正确的授予其访问数据库的权限。
(3)操作系统级:防止未经授权的用户从操作系统层着手访问数据库。
(4)网络级:由于数据库系统允许用户通过网络访问,因此,网络软件内部的安全性对数据库的安全是很重要的。
(5)数据库系统级:检验用户的身份是否合法,检验用户数据库操作权限是否正确。
本节主要讨论数据库系统级的安全性问题。
数据库系统中一般采用用户标识和鉴别、存取控制、视图以及密码存储等技术进行安全控制。
 

数据库故障可分为?:
一、常见的四种故障
  (1)事务内部的故障:事务内部故障可分为预期的和非预期的,其中大部分的故障都是非预期的。
  (2)系统故障:系统故障也称为软故障,是指数据库在运行过程中,由于硬件故障、数据库软件及操作系统的漏洞、突然停电灯情况,导致系统停止运转,所有正在运行的事务以非正常方式终止,需要系统重新启动的一类故障。
  (3)介质故障:介质故障也称为硬故障,主要指数据库在运行过程中,由于磁头碰撞、磁盘损坏、强磁干扰等情况,使得数据库中的数据部分或全部丢失的一类故障。
  (4)计算机病毒故障:计算机病毒故障是一种恶意的计算机程序,它可以像病毒一样繁殖和传播,在对计算机系统造成破坏的同时也可能对数据库系统造成破坏(破坏方式以数据库文件为主)。
二、四种故障的解决方法
  (1)预期的事务内部故障:将事务回滚,撤销对数据库的修改。
  (2)非预期的事务内部故障:强制回滚事务,在保证该事务对其他事务没有影响的条件下,利用日志文件撤销其对数据库的修改。
  (3)系统故障:待计算机重新启动之后,对于未完成的事务可能写入数据库的内容,回滚所有未完成的事务写的结果;(即撤销所有未提交的事务,重做所有已提交的事务)。
  (4)介质故障的软件容错:使用数据库备份及事务日志文件,通过恢复技术,恢复数据库到备份结束时的状态。
  (5)介质故障的硬件容错:采用双物理存储设备,使两个硬盘存储内容相同,当其中一个硬盘出现故障时,及时使用另一个备份硬盘。
  (6)计算机病毒故障:使用防火墙软件防止病毒侵入,对于已感染病毒的数据库文件,使用杀毒软件进行查杀,如果杀毒软件杀毒失败,此时只能用数据库备份文件,以软件容错的方式恢复数据库文件。
  这四类故障虽然有所不同,但是对数据库的影响无外乎是对数据库本身的破坏或对数据库中数据的破坏,其恢复的基本原理概况起来也就是利用存储在别处的冗余数据来重建数据库中的数据。

 

这篇关于《数据库》复试问答题总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/812369

相关文章

IDEA如何切换数据库版本mysql5或mysql8

《IDEA如何切换数据库版本mysql5或mysql8》本文介绍了如何将IntelliJIDEA从MySQL5切换到MySQL8的详细步骤,包括下载MySQL8、安装、配置、停止旧服务、启动新服务以及... 目录问题描述解决方案第一步第二步第三步第四步第五步总结问题描述最近想开发一个新应用,想使用mysq

Oracle数据库使用 listagg去重删除重复数据的方法汇总

《Oracle数据库使用listagg去重删除重复数据的方法汇总》文章介绍了在Oracle数据库中使用LISTAGG和XMLAGG函数进行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLO... 目录案例表第一种:使用wm_concat() + distinct去重聚合第二种:使用listagg,

Python中实现进度条的多种方法总结

《Python中实现进度条的多种方法总结》在Python编程中,进度条是一个非常有用的功能,它能让用户直观地了解任务的进度,提升用户体验,本文将介绍几种在Python中实现进度条的常用方法,并通过代码... 目录一、简单的打印方式二、使用tqdm库三、使用alive-progress库四、使用progres

Java读取InfluxDB数据库的方法详解

《Java读取InfluxDB数据库的方法详解》本文介绍基于Java语言,读取InfluxDB数据库的方法,包括读取InfluxDB的所有数据库,以及指定数据库中的measurement、field、... 首先,创建一个Java项目,用于撰写代码。接下来,配置所需要的依赖;这里我们就选择可用于与Infl

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二

oracle数据库索引失效的问题及解决

《oracle数据库索引失效的问题及解决》本文总结了在Oracle数据库中索引失效的一些常见场景,包括使用isnull、isnotnull、!=、、、函数处理、like前置%查询以及范围索引和等值索引... 目录oracle数据库索引失效问题场景环境索引失效情况及验证结论一结论二结论三结论四结论五总结ora

C#实现文件读写到SQLite数据库

《C#实现文件读写到SQLite数据库》这篇文章主要为大家详细介绍了使用C#将文件读写到SQLite数据库的几种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录1. 使用 BLOB 存储文件2. 存储文件路径3. 分块存储文件《文件读写到SQLite数据库China编程的方法》博客中,介绍了文

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

SQL Server数据库磁盘满了的解决办法

《SQLServer数据库磁盘满了的解决办法》系统再正常运行,我还在操作中,突然发现接口报错,后续所有接口都报错了,一查日志发现说是数据库磁盘满了,所以本文记录了SQLServer数据库磁盘满了的解... 目录问题解决方法删除数据库日志设置数据库日志大小问题今http://www.chinasem.cn天发

Java向kettle8.0传递参数的方式总结

《Java向kettle8.0传递参数的方式总结》介绍了如何在Kettle中传递参数到转换和作业中,包括设置全局properties、使用TransMeta和JobMeta的parameterValu... 目录1.传递参数到转换中2.传递参数到作业中总结1.传递参数到转换中1.1. 通过设置Trans的