数据库原理简答题总结

 第一章 数据库概论

1.人工管理阶段数据管理的特点: (1) 数据不保存在机器中 (2) 无专用的软件对数据进行管理 (3) 只有程序的概念,没有文件的概念 (4) 数据面向程序

2.文件系统阶段数据管理的特点: (1) 数据可长期保存在外存的磁盘上 (2) 数据的逻辑结构和物理结构有了区别 (3) 文件组织已呈多样化。有索引、链接和散列文件 (4) 数据不再属于某个特定的程序,可重复使用。

3.文件系统显露出三个缺陷: (1) 数据冗余性 (2) 数据不一致性 (3) 数据联系弱

4.数据库阶段的管理方式具有以下特点: (1) 采用复杂的数据模型表示数据结构 (2) 有较高的数据独立性 (3) 数据库系统为用户提供方便的用户接口 (4) 系统提供四方面的数据控制功能 (5) 对数据的操作既可以以记录为单位,又可以以数据项为单位

5.数据描述三个领域之间的关系: 从事物的特性到计算机中的数据表示,经历了三个领域:现实世界、信息世界、机器世界。 (1) 现实世界:存在于人们头脑之外的客观世界,称为现实世界。 (2) 信息世界:是现实世界在人们头脑中的反映。 (3) 机器世界:信息世界的信息在机器世界中以数据形式存储。 信息世界中数据描述的术语有:实体、实体集、属性、实体标识符 机器世界中数据描述的术语有:字段、记录、文件、关键码 它们的对应关系是:

在数据库中每个概念都有类型和值之区分,类型是概念的内涵,值是概念的外延

6.数据描述的两种形式: 数据描述有物理描述和逻辑描述两种形式。 物理数据描述指数据在存储设备上的存储方式,物理数据是实际存放在存储设备上的数据。 逻辑数据描述指程序员或用户用以操作的数据形式,是抽象的概念化数据。 数据管理软件的功能之一,就是要把逻辑数据转换成物理数据,以及把物理数据转换成逻辑数据。

7.物理存储介质层次:

8.数据模型的种类: 目前广泛使用的数据模型可分为两种类型:概念数据模型、结构数据模型 概念数据模型:是独立于计算机系统的模型,完全不涉及信息在系统中的表示,只是用来描述某个特定组织所关心的信息结构; 它是现实世界的第一层抽象,是用户和数据库设计人员之间进行交流的工具; 这一类中著名的模型是“实体联系模型”,简称“ER”模型。 结构数据模型:是直接面向数据库的逻辑结构; 它是现实世界的第二层抽象,涉及到计算机系统和数据库管理系统; 这一类中的例子有层次、网状、关系、面向对象等模型。

9.结构数据模型的三个组成部分: 数据结构、数据操作、数据完整性约束是结构数据模型的三个组成部分。 数据结构:是指对实体类型和实体间联系的表达和实现 数据操作:是指对数据库的检索和更新(插、删、改)两类操作的实现 数据完整性约束:给出数据及其联系应具有的制约和依赖规则。

10.层次模型的特点: 用树型结构表示实体类型及实体间联系的数据模型称为层次模型。 层次模型的特点是:记录之间的联系通过指针实现,查询效率较高。 缺点是:(1)只能表示1:N联系 (2)由于树型结构层次顺序的严格复杂,引起数据的查询和更新操作也很复杂,因此编写应用程序也很复杂。

11.网状模型的特点: 用有向图结构表示实体类型及实体间联系的数据模型称为网状模型。 网状模型的特点是:记录之间联系通过指针实现,M:N联系也容易实现,查询效率较高。 缺点是:编写应用程序比较复杂,程序员必须熟悉数据库的逻辑结构。

12.关系模型的特点: 关系模型的主要特征是用二维表格结构表达实体集,用外键表示实体间联系。 特点是:关系模型与层次、网状的最大差别是用关键码而不是用指针导航数据,表格简单,用户易懂,编程时不涉及存储结构、访问技术等细节。

13.数据库体系结构中的三级结构、两级映象: 数据库的体系结构分为三级:内部级、概念级、外部级。 外部级:最接近用户,是单个用户所能看到的数据特性。单个用户使用的数据视图的描述称为“外模式”。 概念级:涉及到所有用户的数据定义,是全局的数据视图。全局数据视图的描述称为“概念模式”。 内部级:最接于物理存储设备,涉及到实际数据存储的结构。物理存储数据视图的描述称为“内模式”。 为实现这三个抽象级别的联系和转换,DBMS在级级结构之间提供两个层次的映象:外模式/模式映象,模式/内模式映象。

14.二级数据独立性: 数据独立性是指:应用程序和数据之间相互独立,不受影响。分为物理独立性和逻辑独立性。 (1) 物理数据独立性:如果数据库的内模式要进行修改,即数据库的存储设备和存储方法有所变化,那么模式/内模式映象也要进行相应的修改,使概念模式尽可能保持不变。也就是对内模式的修改尽量不影响概念模式。 (2) 逻辑数据独立性:如果数据库的概念模式要进行修改,如增加记录类型或增加数据项,那么外模式/模式映象也要进行相应的修改,使外模式尽可能保持不变。也就是概念模式的修改尽量不影响外模式和应用程序。

15.DBMS的主要功能: (1) 数据库的定义功能:DBMS提供数据定义语言(DDL)定义数据库的三级结构及其相互之间的映象、完整性、安全控制等约束。 (2) 数据库的操纵功能:DBMS提供数据操纵语言(DML)实现对数据库中数据的操作。 (3) 数据库的保护功能:DBMS对数据库的保护主要通过数据库的恢复、数据库的并发控制、数据库的完整性控制、数据库的安全性控制等四个方面实现。 (4) 数据库的存储管理:DBMS的存储管理子系统提供了数据库中数据和应用程序的一个界面,其职责是把各种DML语句转换成低层的文件系统命令,起到数据的存储、检索和更新的作用。 (5) 数据库的维护功能:DBMS中实现数据库维护功能的实用程序主要有数据装载程序、备份程序、文件重组织程序、性能监控程序。 (6) 数据字典(DD):数据库系统中存放三级结构定义的数据库称为数据字典,对数据库的操作都要通过访问DD才能实现。

16.DBMS的组成: DBMS是由两大部分组成:查询处理器和存储管理器。 (1) 查询处理器有四个主要成分:DDL编译器、DML编译器、嵌入型DML的预编译器、查询运行核心程序。 (2) 存储管理器有四个主要成分:授权和完整性管理器、事务管理器、文件管理器、缓冲区管理器。

17.DBS的组成: DBS是一个实际可运行的,按照数据库方法存储、维护和向应用系统提供数据支持的系统,它是数据库、硬件、软件、数据库管理员(DBA)的集合体。 (1) 数据库(DB):是与一个特定组织各项应用有关的全部数据的集合,由应用数据的集合(物理数据库)、关于各级数据结构的描述(描述数据库)两部分组成。 (2) 硬件:包括中央处理机、内存、输入输出设备、数据通道等硬件设备。 (3) 软件:包括DBMS、OS、各种宿主语言和应用开发支持软件等程序。 (4) DBA:DBA是控制数据整体结构的人,负责DBS的正常运行。

18.DBS的全局结构: (1) 数据库用户。可分为四类:DBA、专业用户、应用程序员、终端用户 (2) DBMS的查询处理器。包括四部分:DML编译器、嵌入型DML的预编译器、DLL编译器、查询运行核心程序。 (3) DBMS的存储管理器。包括四部分:授权和完整性管理器、事务管理器、文件管理器、缓冲区管理器。 (4) 磁盘存储器中的数据结构。包括四种形式:数据文件、数据字典、索引文件、统计数据组织。

 第二章 关系模型

19. 超键、主键、候选键的定义: 超键(super key):在关系中能唯一标识元组的属性集称为关系模式的超键。 候选键(candidate key):不含有多余属性的超键称为候选键。(候选键可以有多个) 主键(primary key):用户选作元组标识的一个候选键称为主键。(主键是候选键中一个)

20. 关系模式、关系子模式和存储模式: 关系模型基本上遵循数据库的三级体系结构。概念模式是关系模式的集合,外模式是关系子模式的集合,内模式是存储模式的集合。 (1) 关系模式:关系模式实际上是记录类型。它的定义包括:模式名,属性名,值域名以及模式的主键。 (2) 关系子模式:是用户所用到的那部分数据的描述。除了指出用户的数据外,还应指出模式与子模式之间的对应性。 (3) 存储模式:关系存储时的基本组织方式是文件,元组是文件中的记录。存储一个关系可以用散列方法或索引方法实现。如果关系中元组数目较少,也可以用堆文件方式实现。

21. 关系模型的三类完整性规则: (1) 实体完整性规则:这条规则要求关系中元组在组成主键的属性上不能有空值。 (2) 参照完整性规则:这条规则要求“不引用不存在的实体”。 (3) 用户定义的完整性规则:它反映某一具体应用涉及的数据必须满足的语义要求。

22. 参照完整性规则的形式定义: 如果属性集K是关系模式R1的主键,K也是关系模式R2的外键,那么在R2的关系中,K的取值只允许两种可能,或者为空,或者等于R1关系中某个主键值。 此规则使用时还要注意三点: (1) 外键和相应的主键可以不同名,只要定义在相同值域上即可。 (2) R1和R2也可以是同一个关系模式,表示了属性之间的联系。 (3) 外键值是否允许空,应视具体问题而定。 上述形式定义中,关系模式R1称为“参照关系”模式,R2称为“依赖关系”模式。

23. 关系模型的形式定义:

24. 关系查询语言根据其理论基础的不同分为哪两类: 关系代数语言:查询操作是以集合操作为基础运算的DML语言。(非过程性弱) 关系演算语言:查询操作是以谓词演算为基础运算的DML语言。(非过程性强)

25. 关系代数中的操作有哪些? 关系代数中的操作可分为两类: 传统的集合操作:并、差、交、笛卡尔积 扩充的集合操作:对关系进行垂直分割(投影)、水平分割(选择),关系的结合(联接、自然联接),笛卡尔积的逆运算(除法)等。 其中五个基本操作为:并、差、笛卡尔积、投影、选择。 四个常用组合操作为:交、连接、自然连接、除法 两种扩充的关系代数操作为:外连接和外部并

26. 关系演算有哪两种: 关系演算可分为元组关系演算和域关系演算。前者以元组为变量,后者以属性(域)为变量。

27. 什么是约束变量、自由变量:

28. 什么是安全运算: 在数据库技术中,不产生无限关系和无穷验证的运算称为安全运算,相应的表达式称为安全表达式,所采取的措施称为安全约束。 在关系演算中约定,运算只对表达式中公式在涉及到的关系的值范围内操作。这样就不会产生无限关系和无穷验证问题,关系演算是安全的。

29. 为什么要对关系代数表达式进行优化: 查询优化是由DBMS对关系代数表达式进行优化组合,以提高DBMS的系统效率。要对关系代数进行优化的原因是:由于关系代数表达式是由关系代数操作组合而成。在关系代数操作中,执行笛卡尔积和联接运算最费时间,并且在执行过程中将产生大量的中间结果,以使系统执行效率较低。在执行前,由DBMS查询处理子系统先对关系代数表达式进行优化,尽可能早地执行选择和投影操作,以得到较小的中间关系,减少运算量和读外存块的次数,节省系统的执行时间,提高执行效率。

30. 简述查询优化的优化策略: (1) 在关系代数表达式中尽可能早地执行选择操作。 (2) 把笛卡尔积和随后的选择操作合并成F联接运算。 (3) 同时计算一连串的选择和投影操作,以免分开运算造成多次扫描文件,从而能节省操作时间。 (4) 如果在一个表达式中多次出现某个子表达式,应该将该子表达式预先计算出结果保存起来。以免重复计算。 (5) 适当的对关系文件进行预处理。 (6) 在计算表达式之前应先估计一下怎么计算合算。

31. 笛卡尔积、等值连接、自然连接三者之间有什么区别: 等值连接中有笛卡尔积运算; 自然连接是一种等值连接,它是两个关系中所有公共属性进行等值连接的结果。

第三章 关系数据库SQL语言

32. SQL数据库的体系结构及术语: SQL数据库的体系结构也是三级,但术语与传统的关系模型不同。 关系模式称为“基本表”,存储模式称为“存储文件”,子模式称为“视图”,元组称为“行”,属性称为“列”。

33. SQL数据库的体系结构要点是什么: (1) 一个SQL数据库是表(table)的汇集,它用一个或多个SQL模式定义。一个SQL模式是表和授权的表态定义。 (2) 一个SQL表由行集构成,一行是列的序列,每列对应一个数据项。 (3) 一个表或者是一个基本表,或者是一个视图。(视图只保存定义,不保存数据) (4) 一个基本表可跨一个或多个存储文件,一个存储文件也可存放一个或多个基本表。每个存储文件与外部存储器上一个物理文件对应。 (5) 用户可用SQL语句对视图和基本表进行查询等操作。 (6) SQL用户可以是应用程序,也可以是终端用户。

34. SQL的组成分成几部分: SQL主要分成四部分: (1) 数据定义。(SQL DDL)用于定义SQL模式、基本表、视图和索引的创建和撤消操作。 (2) 数据操纵。(SQL DML)数据操纵分成数据查询和数据更新两类。数据更新又分成插入、删除、和修改三种操作。 (3) 数据控制。包括对基本表和视图的授权,完整性规则的描述,事务控制等内容。 (4) 嵌入式SQL的使用规定。涉及到SQL语句嵌入在宿主语言程序中使用的规则。

35. SQL模式的撤消有哪两种方式: CASCADE(连锁式)方式:执行DROP语句时,把SQL模式及其下属的基本表、视图、索引等所有元素全部撤消。 RESTRICT(约束式)方式:执行DROP语句时,只有当SQL模式中没有任何下属元素时,才能撤消SQL模式,否则拒绝执行DROP语句。

36. SQL提供的基本数据类型有哪些?每种举两个例子: (1) 数值型:INTEGER长整数、SMALLINT短整数 (2) 字符串型:CHAR(N)长度为N的定长字符串、VARCHAR(N)具有最大长度为N的变长字符串。 (3) 位串型:BIT(N)长度为N的二进制位串、BIT VARYING(N)最大长度为N的变长二进制位串 (4) 时间型:DATE日期、TIME时间 SQL2允许用户使用“CREATE DOMAIN”语句定义新的域。

37. 完整性约束主要有哪三种子句: 完整性约束主要有三种子句:主键子句(PRIMARY KEY),检查子句(CHECK)和外键子句(FOREIGN KEY)

38. 什么是视图,它与表的区别是什么: 在SQL中,外模式一级数据结构的基本单位是视图,视图是从若干基本表和(或)其他视图构造出来的表。我们创建一个视图时,只是把其视图的定义存放在数据字典中,而不存储视图对应的数据,因此,视图被称为“虚表”,这是它与表的主要区别。

39. 对于视图元组的更新操作(INSERT、DELETE、UPDATE)有哪三条规则: (1) 如果一个视图是从多个基本表使用联接操作导出的,那么不允许对这个视图执行更新操作。 (2) 如果在导出视图的过程中,使用了分组和聚合操作,也不允许对这个视图执行更新操作。 (3) 如果视图是从单个基本表使用选择、投影操作导出的,并且包含了基本表的主键或某个候选键,那么这样的视图称为“行列子集视图”,并且可以被执行更新操作。 SQL2中,允许更新的视图在定义时,必须加上“WITH CHECK OPTION”短语。

40. SQL语言有哪两种使用方式: 一种是在终端交互方式下使用,称为交互式SQL; 另一种是嵌入在高级语言的程序中使用,称为嵌入式SQL,而这些高级语言可以是C、PASCAL、COBOL等,称为宿主语言。

41. 嵌入式SQL的实现有哪两种处理方式: 一种是扩充宿主语言的编译程序,使之能处理SQL语句; 另一种是采用预处理方式。目前多数系统采用后一种。

42. 在宿主语言的程序中使用SQL语句有哪些规定: (1) 在程序中要区分SQL语言与宿主语句。所有SQL语句前必须加上前缀标识“EXEC SQL”,并以“END_EXEC”作为语句的结束标志。(结束标志在不同的宿主语言中不同) (2) 允许嵌入的SQL语句引用宿主语言的程序变量(共享变量),但有两条规定: 1) 引用时,这些变量前必须加冒号“:”作为前缀,以示与数据库中变量有区别。 2) 这些变量由宿主语言的程序定义,并用SQL的DECLARE语句说明。

43. 用游标机制协调SQL的集合处理方式所用的SQL语句有哪些: 与游标有关的SQL语句有下列四个: (1) 游标定义语句(DECLARE) (2) 游标打开语句(OPEN) (3) 游标推进语句(FETCH) (4) 游标关闭语句(CLOSE)

44. SQL DML的嵌入使用技术: (1) 若是INSERT、DELETE、UPDATE语句,则不必涉及游标,只要加上前缀标识和结束标志就能嵌入宿主语言程序中使用。 (2) 若是已知查询结果肯定是单元组的SELECT语句,则不必涉及游标,也可加上前缀标识和结束标志后嵌入宿主语言程序中使用,但此时应该在SELECT语句中增加一个INTO子句,指出找到的值应送到相应的共享变量中去。 (3) 若是已知查询结果为多个元组的SELECT语句,则必须涉及到游标,用游标机制把多个元组一次一个地传送给宿主程序处理。

第四章 关系数据库的模式设计

45. 什么是关系数据库: 关系数据库是以关系模型为基础的数据库,它利用关系来描述现实世界。一个关系既可以用来描述一个实体及其属性,也可以用来描述实体间的联系。关系实质上是一张二维表。

46. 一个关系模型有哪两个方面内容: 一个关系模型包括外延和内涵两个方面的内容。 外延就是通常所说的关系,或实例,或当前值。它与时间有关,随着时间的推移在不断变化。(由于元组的插入、删除、修改引起的) 内涵是与时间独立的,包括关系、属性、及域的一些定义和说明,还有各种数据完整性约束。

47. 数据完整性约束分为哪两类: 数据完整性约束分为静态约束和动态约束。 静态约束:包括各种数据之间的联系(数据依赖),主键的设计和关系值的各种限制等等。这一类约束是如何定义关系的有效数据问题。 动态约束:主要定义如插入、删除、和修改等各种操作的影响。

48. 关系数据库设计理论主要包括哪些内容: 关系数据库设计理论主要包括三个方面的内容:数据依赖、范式、模式设计方法。其中数据依赖起着核心的作用。

49. 数据库使用过程中存在的问题是什么: 数据冗余、更新异常、插入异常、删除异常。

50. 函数依赖(FD)的定义: 设有关系模式R(A1,A2,……,An)(即R(U)),X,Y是U的子集,r是R的任一具体关系,如果对r的任意两个元组t1,t2,由t1[X]=t2[X]导致t1[Y]=t2[Y],则称X函数决定Y,或Y函数依赖于X,记为X→Y,X→Y为模式R的一个函数依赖。 或者说,对于X的每一个具体值,都有Y惟一的具体值与之对应,即Y值由X值决定,因而 这种数据依赖称为函数依赖。

51. 函数依赖的逻辑蕴涵、FD的闭包F+:

52. 候选键、主属性、非主属性: 设有关系模式R(A1,A2,……,An),F是R的一个函数依赖集,X是{A1,A2,……,An}的一个子集。如果 ① X→A1A2……An∈F+,且 ② 不存在X真子集Y,使得Y→A1A2……An成立,则称X是R的候选键。 包含在任何一个候选键中的属性称为主属性,不包含在任何一个候选键中的属性称为非主属性。

53. 函数依赖的推理规则: 设有关系模式R(A1,A2,……,An)和属性集U= A1,A2,……,An,X,Y,Z,W是U的一个子集,F是R的一个函数依赖集,推理规则如下:

54. 什么是平凡的FD?平凡的FD可根据哪一条推理规则推出?

55. 关系模式的分解有几个不同的衡量标准: 分解具有无损联接; 分解要保持函数依赖; 分解既要保持依赖,又要具有无损联接。

56. 什么是无损连接:

57. 试叙保持函数依赖的定义:

58. 第一范式(1NF): 如果关系模式R的所有属性的值域中每一个值都是不可再分解的值,则称R是属于第一范式模式。

59. 第二范式(2NF): 如果关系模式R为第一范式,并且R中每一个非主属性完全函数依赖于R的候选键,则称R是第二范式模式。

60. 第三范式(3NF): 如果关系模式R是第一范式,且每个非主属性都不传递依赖于R的候选键,则称R是第三范式的模式。

61. BCNF: 如果关系模式R是第一范式,且每个属性都不传递依赖于R的候选键,那么称R是BCNF的模式。从BCNF的定义可明显地得出如下结论: (1) 所有非主属性对键是完全函数依赖。 (2) 所有主属性对不包含它的键是完全函数依赖。 (3) 没有属性完全函数依赖于非键的任何属性组。 如果模式R是BCNF,则它必定是第三范式,反之,则不一定。

62. 模式设计方法的原则: 关系模式R相对于函数依赖集F分解成数据库模式ρ={R1,R2,……Rk},一般应具有下面三个特性: (1) ρ中每个关系模式Ri是3NF或BCNF (2) 保持无损联结 (3) 保持函数依赖集 (4) ρ中模式个数最少和属性总数最少。

63. 一个好的模式设计方法应符合哪三条原则: 表达性,分离性,最小冗余性。 表达性涉及到两个数据库模式的等价性问题,即数据等价和依赖等价,分别用无损联接和保持函数依赖性来衡量。 分离性是指属性间的“独立联系”应该用不同的关系模式表达。 最小冗余性要求在分解后的数据库能表达原来数据库的所有信息这个前提下实现。 关系模式设计方法基本上可以分为分解与合成两大类。

64. 多值依赖MVD: 设R(U)是属性集U上的一个关系模式,X,Y是U的子集,若对R(U)的任一关系r,对于X的一个给定的值存在着Y的一组值与其对应,同时Y的这组值又不以任何方式与U-X-Y中的属性相关,那么称Y多值依赖于X,记为X→→Y。

65. 平凡多值依赖:

66. 第四范式(4NF): 设关系模式R,D是一个多值依赖集,如果D中存在一个非平凡多值依赖X→→Y,并且X必是R的超键,那么称R是4NF模式。

第五章 数据库设计

67. 什么是软件生存期: 软件生存期是软件工程的一个重要概念。是指从软件的规划、研制、实现、投入运行后的维护,直到它被新的软件所取代而停止使用的整个期间。通常分为六个阶段: (1) 规划阶段 (2) 需求分析阶段 (3) 设计阶段 (4) 程序编制阶段 (5) 调试阶段 (6) 运行维护阶段

68. 数据库系统的生存期: 一般分为七个阶段,即: (1) 规划阶段 (2) 需求分析阶段 1)信息要求 2)处理要求 3)安全性和完整性要求 (3) 概念设计阶段 (4) 逻辑设计阶段 两部分:数据库逻辑设计和应用程序设计 (5) 物理设计阶段 两部分:物理数据库结构的选择和逻辑设计中程序模块说明的精确化 (6) 实现阶段 (7) 运行维护阶段

69. 数据库设计过程的输入有哪些内容: (1) 总体信息需求 (2) 处理需求 (3) DBMS的特征 (4) 硬件和OS特征

70. 数据库设计过程的输出有哪两部分: 一部分是完整的数据库结构,其中包括逻辑结构与物理结构。 另一部分是基于数据库结构和处理要求的应用程序的设计原则。

71. 常见的数据库设计方法有哪几种: (1) 视图模式化及视图汇总设计方法 (2) 关系模式的设计方法 (3) 新奥尔良设计方法 (4) 基于E-R模型的数据库设计方法 (5) 基于3NF的设计方法 (6) 基于抽象语法规范的设计方法 (7) 计算机辅助数据库设计方法

72. 实用的数据库设计方法至少应包括哪些内容: (1) 设计过程 (2) 设计技术 (3) 评价准则 (4) 信息需求 (5) 描述机制

73. 一种设计方法学需要有三种基本类型的描述机制: (1) 实现设计过程的最终结果将用DBMS的DDL表示。 (2) 信息输入的描述。 (3) 在信息输入和DDL描述之间的其它中间步骤的结果的描述。

74. 数据库设计中的规划阶段的主要任务: 是进行建立数据库的必要性及可行性分析,确定数据库系统在组织中和信息系统中的地位,以及各个数据库之间的联系。

75. 需求分析阶段的任务: 需求分析阶段应该对系统的整个应用情况作全面的、详细的调查,确定企业组织的目标,收集支持系统总的设计目标的基础数据和对这些数据的要求,确定用户的需求,并把这些要求写成用户和数据库设计者都能接受的文档。

76. 需求分析的步骤: 大致可分为三步来完成,即需求信息的收集、分析整理和评审。

77. 数据字典由哪几部分组成: (1) 数据项 (2) 数据结构 (3) 数据流 (4) 数据存储 (5) 加工过程

78. 数据抽象: 抽象是对实际的人、物、事或概念的人为处理,它抽取人们关心的共同特性,忽略非本质的细节,并把这些特性用各种概念精确地加以描述,这些概念组成了某种模型。 抽象有两种形式,系统状态抽象(抽象对象)和系统转换抽象(抽象运算)。

79. 对象的两种形式: (1) 聚集:的数学意义就是笛卡尔积的概念。通过聚集,形成对象之间的一个联系对象。 (2) 概括:是从一类其它对象形成一个对象。对于一类对象{O1,O2,……,On}可以概括成对象O,那么Oi称为O的其中一个。

80. 依赖联系: 在现实世界中,常常有某些实体对于另一些实体具有很强的依赖关系,即一个实体的存在必须以另一个实体的存在为前提。我们通常把前者称为弱实体。在ER图中,用双线框表示弱实体,用指向弱实体的箭头表明依赖联系。

81. 子类、超类: 某个实体类型中所有实体同时也是另一实体类型中的实体。此时,我们称前一实体类型是后一实体类型的子类,后一实体类型称为超类。在ER图中,带有子类的实体类型(超类)以两端双线的矩形框表示,并用加圈的弧线与其子类相连,子类本身仍用普通矩形框表示。 子类具有一个很重要的性质:继承性。它可继承超类上定义的全部属性,其本身还可包含其它另外的属性。

82. ER模型的操作: (1) 实体类型的分裂:垂直分割、水平分割 (2) 实体类型合并:分裂的逆过程。 (3) 联系类型的分裂 (4) 联系类型的合并

83. 采用ER方法的数据库概念设计分成哪三步: (1) 设计局部ER模式:1)确定局部结构范围 2)实体定义 3)联系定义 4)属性分配 (2) 设计全局ER模式:1)确定公共实体类型 2)局部ER模式的合并 3)消除冲突。 (3) 全局ER模式的优化:1)实体类型的合并 2)冗余属性的消除 3)冗余联系的消除

84. 冲突分为哪三种: 属性冲突,包括属性域的冲突、属性取值单位冲突。 结构冲突,包括: (1) 同一对象在不同应用中的不同抽象。 (2) 同一实体在不同局部ER图中属性组成不同。 (3) 实体之间的联系在不同的局部ER图中呈现不同的类型。 命名冲突,包括属性名,实体名,联系名之间的冲突:同名异义、异名同义

85. ER模型向关系模型的转换: ER模型中的主要成分是实体类型和联系类型。 对实体类型,将每个实体类型转换成一个关系模式,实体的属性即为关系模式的属性,实体标识符即为关系模式的键。 对联系类型,就视1:1、1:N、M:N三种不同的情况做不同处理。 (1) 对1:1可在两个实体类型转换成的两个关系模式中任意一个关系模式的属性中加入另一个关系模式的键和联系类型的属性。 (2) 对1:N,则在N端实体类型转换成的关系模式中加入1端实体类型转换成的关系模式的键和联系类型的属性。 (3) 对M:N,则将联系类型也转换成关系模式,其属性为两端实体类型的键盘加上联系类型的属性,而键为两端实体键的组合。

86. 什么是物理设计: 对一个给定的逻辑数据模型选取一个最适合应用环境的物理结构的过程,称为数据库的物理设计。物理结构,主要指数据库在物理设备上的存储结构和存取方法。

87. 物理设计的步骤: 物理设计可分五步完成,前三步涉及到物理数据库结构的设计,后两步涉及约束和具体的程序设计。 (1) 存储记录结构设计 (2) 确定数据存储安排 (3) 访问方法的设计 (4) 完整性和安全性 (5) 程序设计

88. 在数据库系统生存期中,生存期的总开销可分为几项: 规划开销、设计开销、实现与测试开销、操作开销、维护开销。

89. 用户使用和计算机资源的操作开销是: (1) 查询响应时间 (2) 更新事务的开销 (3) 报告生成的开销 (4) 改组频率和开销 (5) 主存储空间 (6) 辅助存储空间

90. 数据库实现阶段的主要工作: (1) 建立实际数据库结构 (2) 试运行 (3) 装入数据

91. 数据库的重新组织设计: 对数据库的概念模式、逻辑结构或物理结构的改变称为重新组织,其中改变概念模式或逻辑结构又称为重新构造,改变物理结构则称为重新格式化。

92. 运行维护阶段的主要工作: (1) 维护数据库的安全性和完整性控制及系统的转储和恢复。 (2) 性能的监督、分析与改进。 (3) 增加新功能。 (4) 发现错误,修改错误。

为什么你精通CRUD,却搞不懂数据库的基本原理?

作者:黄小斜

来源:https://juejin.im/post/5e5528b7e51d4526ce61451d

作为一个程序员,不了解数据库怎么能行,那么数据库到底是个啥呢,作为一个Java工程师,平时和数据库打交道着实不少,所谓的CRUD其实就是对数据库进行增删改查的操作。

根据百度百科的介绍,数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。

数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合,可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。

是不是没听懂,好吧,简单来说,像MySQL这样的数据库,就是用于存储结构化数据的,比如一个学生的信息数据,一个商品的数据,或者是一个学生购买商品的消费数据。

联想到平时我们经常使用的Excel,其实和数据库挺像的,数据库其实就是一个表格,里面有很多的数据类型,比如字符串,比如数字,再比如长文本等等。

而这类数据库也叫关系型数据库,典型代表就是MySQL。

再看看百度百科的介绍,关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。用户通过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码。关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。

除了关系型数据库之外,近些年来还有很多nosql(not only sql)数据库在兴起,比如MongoDB,以及图数据库、列式数据库等等,这些数据库对于新手程序员来说用的并不多,所以本文我们只讨论关于关系型数据库的内容。

关系型数据库是我们程序员平时用的最多,也最简单易上手的数据库类型,所以,学习数据库一般也从MySQL这类关系型数据库入手,一来它简单好学,二来它是免费的。

我第一次听说“数据库”这个词还是在大学的时候,那时候正值大家找工作,有一个同学和我们分享自己的求职经验,据他所说,每个公司都会考察你的数据库知识,学好了数据库,面试什么公司都不怕。

当时我还觉得挺玄乎的,不过我们学校确实没来什么大公司,我对此半信半疑,至于到底是不是这样,后来也就没再追究了。

第二次接触数据库,是在学习Java的时候,记得当初自己跟着一个小教程,下载安装了MySQL,然后从网上下载了demo代码,用当时先进的开发工具eclipse跑通了别人家的代码,其实就是增删改查。

只不过当时对这些东西也没啥概念,后来又下载了一个db的可视化工具,可以更方便地了解自己的数据库里到底都有啥。

再到后来,我开始慢慢接触项目实战,使用数据库的时间也越来越长,自以为对于数据库的理解还算可以,直到我真正地接触了数据库相关的面试题,才让我发现自己对于数据库的理解是多么的肤浅。

那个时候,我只懂写一些简单的crud,甚至连内外连接、group by和count等一些简单的sql用法都不了解,除此之外,我对于数据库的一些原理性内容几乎也是一窍不通的,比如数据库的索引、事务、锁机制,我统统不知道,更别谈如何回答相关的面试题了。

于是,我开始意识到学习数据库原理是多么重要的一件事情,我开始看数据库方面的书籍,从最基础的数据库教材,再到MySQL的原理性内容,再到mybatis这类orm框架的实现,我都逐渐地开始学习和了解,直到我能够对大部分的数据库面试题都较好地掌握。

而现在,我在一个每天要处理海量数据的公司里工作,对于数据方面的学习已经不仅仅停留在数据库了,我还要接触数据仓库、分布式数据库以及各种大数据的应用场景,学习数据知识的道路看来短时间内是走不完了。

说到MySQL,就不得不谈谈SQL了,sql,按照百科的说法是这样的

结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

对于不同的数据库,sql的写法可能有一些差异,但是大致都是相同的,就拿MySQL来说,平时我们用到最多的就是select、update、delete和insert了,这类操作统称为数据操纵语言DML(Data Manipulation Language),用户通过它可以实现对数据库的基本操作。

当然还有操作数据库和表的一些ddl,数据库模式定义语言DDL(Data Definition Language),是用于描述数据库中要存储的现实世界实体的语言。 简单来说,ddl其实就是用来执行建表,删表,更改表结构等操作的

以前我的sql写的并不多,毕竟简单的增删改查并不需要多复杂的sql技巧,最多就是做一下表连接。

再到后来,我开始做一些项目,接触了ORM的一些框架,比如hibernate和mybatis,这些框架甚至可以让你完全不写sql,只要调用一些增删改查的API即可,这让我很长一段时间都忽略了SQL的重要性。

其实学习sql最复杂的地方并不是一些高级用法,而是在于实际场景中的应用和优化。两条sql,可能因为简单的差异就会有很大的性能差距,差异点可能是,比如有没有走到索引,是否是全表扫描,又或者走到了哪个索引,而这样的性能分析只有在实际的场景里才有意义。

当然了,对于新手来说,学习sql的语法是放在第一位的,然后才能逐渐过渡到会使用,会优化,会分析。

想要真正学好数据库,搞定面试题中的相关问题,那你就必须要搞懂数据库的基本原理。

如果你不相信,那我随便举几个面试题常见的题型,比如”数据库事务的ACID是什么意思”、“数据库中有哪些锁”、“数据库的索引用的是什么数据结构”

上面几道题算是简易版的,在平常的面试中也经常能够看到,就算你只是背一背答案,可能也多少能答对一些,那么如果再进一步,考察一下数据库的原理性知识,恐怕就没这么简单了。

举个栗子“数据库事务的ACID是如何实现的”,“数据库中有哪些锁,分别是如何实现的,如何使用”、“数据库中的索引是如何实现的,何时命中索引,何时不能,为什么“

是不是感觉难度一下子就上来了。毕竟深入到原理性的东西,懂的人就越来越少了。除此之外,还有很多进阶的面试题,更多时候会结合实际场景来考察。

比如考察你对MySQL存储引擎innodb的理解,对于sql优化的理解 ,以及对于分布式场景下数据库能力的应用,比如分布式锁,分布式事务,以及分库分表的一些问题。

知道了面试题大概都考啥之后,接下来我们要做的就是找到症结所在,然后一一击破

学习数据库,你需要先打好基础,数据库原理是计算机科班的一门必修课,非科班的我选择的是自学,我当时也是拿着那本大学教材《数据库系统概论》来自学的。

教材这种东西,肯定还是偏理论的一点,我们要了解的内容主要包含几个方面

1、数据库模型有哪些:包括层次模型、网状模型和关系模型,我们所用的关系型数据库就是基于关系模型实现的。

2、关系数据库的基础和sql:了解关系数据库的基本概念,了解sql的基本使用方法,至少CRUD和一些常见用法要搞懂

3、数据库的安全性和完整性,这两部分内容其实理论的东西比较枯燥,实际上对应到实际场景中,安全性就是要保护数据的安全,包括权限控制和数据备份,而完整性则是通过一些约定和规范来限制数据库的存储内容,比如我们可以用主键、唯一键、非空等要求来限制字段的取值。

4、关系数据理论 这部分内容很有意思,也比较复杂,讲到了数据库的范式理论,从一范式到四范式,各有各的用法和要求,某互联网公司“第四范式”就是用这个概念来命名的。

5、事务和锁 最后一部分内容,就是数据库的两个重要组成部分,事务和锁,事务可以保证一组数据库操作的ACID特性,非常适用于需要数据一致性的场景,而数据库的锁不但是实现事务的基础,还可以灵活地适用于不同的数据库应用场景,我们还可以通过sql语句来完成加锁和释放,对于并发场景尤其管用。

学习完了数据库基础之后,接下来就该学习MySQL了,毕竟很多时候我们的数据库应用就是MySQL。

其实MySQL里的很多知识点和我们上面提到的数据库基础大同小异,而回到MySQL的实现层,我们就得来看看MySQL的存储引擎了。

MySQL的存储引擎分为innodb和myisam,相信大家对于这两个引擎区别的面试题看了也不少,比如innodb支持事务,支持行级锁,而myisam不支持。

由于现在innodb基本上是主流,所以我们讨论MySQL的时候基本上就是在讨论innodb。对于MySQL的实现原理,我认为大概有这么一些内容需要我们去学习。

首先,我们了解MySQL里有哪些数据类型,一般的用法如何,然后,尝试用MySQL去跑一些sql语句,建库建表,加索引加主键,总之,这些实践能帮助你更好地学习上述内容。

想要更好地了解MySQL的原理,我们就必须要了解MySQL的整体架构,一般来说,MySQL从上到下可以分为这么几层

也就是我们经常用的可视化工具,比如Navicat for MySQL

就是我们安装的MySQL程序,其实打开它它就是一个MySQL的服务端进程

sql执行层主要负责解析执行sql,里面包含了很多复杂的组成部分,比如解释器,分析器,优化器等等,执行层会生成一个sql的执行计划,这个计划也经常是我们分析sql性能的一个重要参考内容

存储引擎层是innodb了,比如数据要如组织和存放,索引要如何建立和管理等等,加锁怎么加,事务如何实现,都是这一层要考虑的内容。

存储引擎的下一层就是文件系统了,数据库的数据如何和文件系统进行交互,就是这一层要做的事情了。

不得不说,索引绝对是数据库中最经常考察,考点也最多的内容了。

比如给你一条sql,那么它能否命中索引,能命中哪些索引,如果想要命中某个索引,你应该如何修改,这种问题面试时是不是经常看到,变来变去这么多题型,其实面试官就是想考察你对于索引的理解。

还有就是,索引的数据结构,一样是非常热门的考点之一,索引其实是基于B+树来实现的,不知道b+树是啥,请回去看数据结构。

简单来说,它是一种多路搜索树,致力于更短的时间来完成数据检索,因为它的高度比二叉树要低,而比起普通的b树,它的非叶节点只起索引作用,而叶子节点是顺序串联的,所以非常适合做搜索树。

如果你理解了这一点,那么面对此类面试题就可以更加从容一些,面试官其实就是想知道你对b+树的了解到了什么样的程度而已。

除了索引之外,数据库中最复杂的内容可能就是事务和锁了。

就拿事务的ACID特性来说,你需要了解每个大写字母背后的实现原理,比如原子性是如何实现的,一致性是如何保证的,背后的原理是什么。

我们平时常用的事务可能就是spring里的事务模板,在事务里执行的同库数据库操作,要么都成功,要么都失败,这就是原子性。

两个事务之间互不影响,这就是隔离性,当然了,这里又涉及到了事务隔离级别。

事务隔离级别包括读未提交,读已提交,可重复读和序列化,每个事务隔离级别都适用于某种数据库读写场景,很多时候,我们都需要搞懂隔离级别背后的原理,才能更好地适用它。

MySQL里默认使用可重复读的隔离级别,这个级别基本上可以保证我们的事务按照预期执行,在MySQL中,这个事务隔离级别甚至可以解决幻读的问题。

在MySQL的事务背后,其实有一个隐藏的boss,那就是数据库的锁,很多事务的隔离级别都是通过锁来实现的,比如可重复读只要加行锁就可以实现了,而幻读则需要加上间隙锁next-key lock来实现。

行级锁和表级锁是MySQL中的两种锁,表级锁顾名思义,会直接锁表,一次只有一个事务能够访问,而行级锁其实锁的也并非是一行,在MySQL中,这个锁加在索引上,而这个索引对应的数据往往不止一行,所以这个行级锁只是理论意义上的\”行级锁\”

说了这么多,要理解MySQL的事务和锁,还是要多看看相关的书籍和文章,理解其内部的实现原理,知其然也要知其所以然。

下面又到了我们熟悉的资源推荐环节

数据库

0 《数据库系统概论》

数据库原理应该是教材吧,这本书作为数据库入门来说还是可以的,毕竟不是专门做DB的,看大厚书用处不大,这本书把数据库的基本概念都讲完了。

1 sql必知必会

​这本书主要是讲解sql语句怎么写,毕竟数据库最重要的一点就是要熟练地使用sql语句,当然这本书也可以当做工具书来使用。

2 深入浅出MySQL

​这本书适合作为MySQL的学习书籍,当你有了一定的MySQL使用经验后,可以看看它,该书从数据库的基础、开发、优化、管理维护和架构5个方面对MySQL进行了详细的介绍,讲的不算特别深,但是足够我们使用了。这本书我也只看了一部分。

3 MySQL技术内幕:innodb存储引擎

看完上面那本书以后,对MySQL算是比较熟悉了,不过对于面试中常考的innodb引擎,还是推荐一下这本书把,专门讲解了innodb存储引擎的相关内容。我还没有细看,但是内容足够你学好innodb了。

4 高性能Mysql

​​

这本书可以说是很厚了,更适合DBA拜读,讲的太详细了,打扰了。 如果需要获取到这些书籍的PDF版本,关注转发本文章后私信【文档】即可免费获取到

数据库原理及应用-期末考试试题及答案

数据库原理及应用-期末考试试题及答案

一、单项选择题

(本大题共10小题,每小题2分,共20分)

在每小题列出的四个备选项中只有一个是符合题目要 求的,错选、多选或未选均无分。

1. DB、DBMS和DBS三者之间的关系是( )。

A.DB包括DBMS和DBS B.DBS包括DB和DBMS

C.DBMS包括DB和DBS D.不能相互包括

2. 对数据库物理存储方式的描述称为( )

A.外模式 B.内模式

C.概念模式 D.逻辑模式

3. 在数据库三级模式间引入二级映象的主要作用是(   )

A.提高数据与程序的独立性 B.提高数据与程序的安全性

C.保持数据与程序的一致性 D.提高数据与程序的可移植性

4. 视图是一个“虚表”,视图的构造基于( )

A.基本表 B.视图

C.基本表或视图 D.数据字典

5. 关系代数中的π运算符对应SELECT语句中的以下哪个子句?(  )

A.SELECT B.FROM

C.WHERE D.GROUP BY

6. 公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,从职员到部门的联系类型是( )

A.多对多 B.一对一 C.多对一 D.一对多

7. 如何构造出一个合适的数据逻辑结构是( )主要解决的问题。

A.关系系统查询优化 B.数据字典

C.关系数据库规范化理论 D.关系数据库查询

8. 将E-R模型转换成关系模型,属于数据库的( )。

A. 需求分析 B. 概念设计

C. 逻辑设计 D. 物理设计

9. 事务日志的用途是( )

A. 事务处理 B. 完整性约束

C. 数据恢复 D. 安全性控制

10.如果事务T已在数据R上加了X锁,则其他事务在数据R上( )

A. 只可加X锁 B. 只可加S锁

C. 可加S锁或X锁 D. 不能加任何锁

二、填空题

(本大题共10小题,每小题2分,共20分)

错填、不填均无分。

1. 数据库的逻辑数据独立性是由映象提供的。

2. 关系代数中专门的关系运算包括:选择、投影、连接和_________。

3. 设有学生表S(学号,姓名,班级)和学生选课表SC(学号,课程号,成绩),为维护数据一致性,表S与SC之间应满足完整性约束。

4. 当数据库被破坏后,如果事先保存了数据库副本和,就有可能恢复数据库。

5. 如果一个满足1NF关系的所有属性合起来组成一个关键字,则该关系最高满足的范式是(在1NF、2NF、3NF范围内)。

6. 设关系模式R(A,B,C,D),函数依赖集F={AB→C,D→B},则R的候选码为

7. 从关系规范化理论的角度讲,一个只满足1NF的关系可能存在的四方面问题是:数据冗余度大、插入异常、______________和删除异常。

8. 并发控制的主要方法是 机制

9. 若有关系模式R(A,B,C)和S(C,D,E),SQL语句

SELECT A, D FROM R, S WHERE R.C=S.C AND E = \’80\’ ;

对应的关系代数表达式是。

10. 分E-R图之间的冲突主要有属性冲突、 、结构冲突三种

三、简答题

(本大题共4小题,每小题5分,共20分)

1. 说明视图与基本表的区别和联系。

2. 简述事务的特性。

3. 试述关系模型的参照完整性规则。

4. 简述系统故障时的数据库恢复策略。

四、设计题

(本大题共5小题,每小题4分,共20分)

现有关系数据库如下:

学生(学号,姓名,性别,专业)

课程(课程号,课程名,学分)

学习(学号,课程号,分数)

分别用关系代数表达式和SQL语句实现下列1—5小题(注意:每小题都要分别写出关系代数表达式和SQL语句!!!每小题关系代数表达式2分,SQL语句2分):

1. 检索所有选修了课程号为“C112”的课程的学生的学号和分数;

2. 检索“英语”专业学生所学课程的信息,包括学号、姓名、课程名和分数;

3. 检索“数据库原理”课程成绩高于90分的所有学生的学号、姓名、专业和分数;

4. 检索没学课程号为“C135”课程的学生信息,包括学号,姓名和专业;

5. 检索至少学过课程号为“C135”和“C219”的课程的学生的信息,包括学号、姓名和专业。

五、综合题

(本大题共2小题,每小题10分,共20分)

1. 现有如下关系模式:借阅(图书编号,书名,作者名,出版社,读者编号,读者姓名,借阅日期,归还日期),基本函数依赖集F={图书编号→(书名,作者名,出版社),读者编号→读者姓名,(图书编号,读者编号,借阅日期)→归还日期}

(1)读者编号是候选码吗?(2分)

(2)写出该关系模式的主码。(2分)

(3)该关系模式中是否存在非主属性对码的部分函数依赖?如果存在,请写出一个。(2分)

(4)该关系模式满足第几范式?并说明理由。(4分)

2. 某工厂生产多种产品,每种产品由不同的零件组装而成,有的零件可用在不同的产品上。产品有产品号和产品名两个属性,零件有零件号和零件名两个属性。根据语义设计E-R模型,并将E-R模型转换成关系模式,要求关系模式主码加下划线表示。(E-R模型4分,关系模型6分)

参考答案与评分细则

一、单项选择题(共10小题,每小题2分,共20分)

二、填空题(共10小题,每小题2分,共20分)。

1.2.

3.4.__

5.6._

7.8.

9.πA,D(σE=\’80\'(R

S)) 10.

三、简答题(共4小题,每小题5分,共20分)。

1. 答:视图是从一个或几个基本表导出的表,它与基本表不同,它是一个虚表,(2分)数据库中只存放视图的定义,而不存放视图对应的数据,这些数据存放在原来的基本表中,当基本表中的数据发生变化,从视图中查询出的数据也就随之改变(2分)。视图一经定义就可以像基本表一样被查询、删除,也可以在一个视图之上再定义新的视图,但是对视图的更新操作有限制(1分)。

2. 答:事务具有四个特性,即ACID特性:(1分)

(1)原子性:事务中包括的所有操作要么都做,要么都不做。(1分)

(2)一致性:事务必须使数据库从一个一致性状态变到另一个一致性状态。(1分)

(3)隔离性:一个事务内部的操作及使用的数据对并发的其他事务是隔离的。(1分)

(4)持续性:事务一旦提交,对数据库的改变是永久的。(1分)

3. 答:参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系)(2分),则对于R中每个元组在F上的值必须为:取空值(F的每个属性值均为空值)(1.5分)或者等于S中某个元组的主码值(1.5分)。

4. 答:正像扫描日志文件,找出在故障发生前已经提交的事务,将其事务标识记入REDO队列,同时找出故障发生时尚未完成的事务,将其事务标识记入UNDO队列(2分);对UNDO队列中的各个事务进行撤销处理(1.5分);对REDO队列中的各个事务进行重做处理。(1.5分)

四、设计题(共5小题,每小题关系代数式2分,SQL语句2分,共20分)。

1.SQL语句:

SELECT 学号,分数 FROM 学习 WHERE 课程号=’C112’

(SELECT 学号,分数 FROM 学习1分,WHERE 课程号=’C112’1分)

关系代数:

π学号,分数(

课程号=’C112’(学习))

(π学号,分数1分,

课程号=’C112’(学习)1分。

2. SQL语句:

SELECT 学生.学号,姓名,课程名,分数

FROM 学生,学习,课程 (1分)

WHERE 学习.学号=学生.学号 AND 学习.课程号=课程.课程号 AND 专业=’英语’ (1分)

关系代数:

π学号,姓名,课程名,分数(π学号,姓名(

专业=’英语’(学生))

学习

π课程号,课程名(课程))

(π学号,姓名,课程名,分数1分,π学号,姓名(

专业=’英语’(学生))

学习

π课程号,课程名(课程)1分)

3. SQL语句:

SELECT 学生.学号,姓名,专业,分数

FROM 学生,学习,课程 (1分)

WHERE 学生.学号=学习.学号 AND 学习.课程号=课程.课程号 AND分数>90 AND 课程名=‘数据库原理’ (1分)

关系代数:

π学号,姓名,专业,分数(π学号,姓名,专业(学生)

(

分数>90(学习))

π课程号,课程名(

课程名=’数据库原理’(课程)))

(π学号,姓名,专业,分数1分,π学号,姓名,专业(学生)

(

分数>90(学习))

π课程号,课程名(

课程名=’数据库原理’(课程)) 1分)

4.SQL语句:

SELECT 学号,姓名,专业

FROM 学生

WHERE 学号 NOT IN (1分)

(SELECT 学号 FROM 学习 WHERE 课程号=‘C135’) (1分)

关系代数:

(π学号(学生)-π学号(

课程号=‘C135’ (学习)))

(π学号,姓名,专业(学生)

(π学号(学生)-1分,π学号(

课程号=‘C135’ (学习)))

(π学号,姓名,专业(学生)1分)

5.SQL语句:

SELECT 学号,姓名,专业 FROM 学生 WHERE 学号 IN (1分)

(SELECT X1.学号 FROM 学习 X1,学习 X2 WHERE X1.学号=X2.学号 AND X1.课程号=‘C135’AND X2.课程号=‘C219’)(1分)

关系代数:

(π学号,课程号(学习)÷π课程号(

课程号=‘C135’∨课程号=‘C219’ (课程)))

π学号,姓名,专业(学生)

(π学号,课程号(学习)÷π课程号(

课程号=‘C135’∨课程号=‘C219’ (课程))1分,

π学号,姓名,专业(学生)1分)

五、综合题(共2小题,每小题10分,共20分)。

1.

答:(1)不是(2分)。

(2)(图书编号,读者编号,借阅日期)(2分)

(3)存在(1分)。(图书编号,读者编号,借阅日期)→书名、(图书编号,读者编号,借阅日期)→作者名、(图书编号,读者编号,借阅日期)→出版社、(图书编号,读者编号,借阅日期)→读者姓名(1分,四个函数依赖任选一个即可)

(4)1NF。因为存在非主属性对码的部分函数依赖。

2.

(E-R模型4分,两个实体型属性少1个扣0.5分,联系类型错扣1分)

产品(,产品名)

零件(,零件名)

组装()

(关系模型6分,3个关系模式各2分,主键错

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。