软考——软件设计师:第二章:数据库技术考点总结(完整篇)(上)

简介: 软考——软件设计师:第二章:数据库技术考点总结(完整篇)(上)

文章目录:


1.基本概念

1.1 几个专有名词 

1.2 DBMS的功能

1.3 DBMS的特征

2.三级模式——两级映像 

2.1 三级模式 

2.2 两级映像

3.数据库设计过程

4.E-R模型

5.关系代数

6.规范化理论

6.1 函数依赖 

6.2 求候选关键字

6.2.1 码的相关概念 

6.2.2 候选码的求解方法

6.3 价值与用途

6.4 范式

6.5 模式分解


1.基本概念


1.1 几个专有名词

数据(data):Data

数据库(DB):DataBase

数据库管理系统(DBMS):DataBase Management System

数据库系统(DBS):DataBase System,广义上讲:由数据库、硬件、软件和人员组成。

数据库管理员(DBA):DataBase Administrator


1.2 DBMS的功能

数据定义。数据库操作。数据库运行管理。数据的组织、存储和管理。数据库的建立和维护。等等......


1.3 DBMS的特征

数据结构化且统一管理。有较高的数据独立性。数据控制功能(数据库的安全性、完整性、并发控制、故障恢复)。 


2.三级模式——两级映像


2.1 三级模式


模式:也称概念模式,它是数据库中全体数据的逻辑结构和特征的描述。只涉及型的描述,不涉及具体的值。概念模式的一个具体值称为模式的一个实例,同一个模式可以有很多实例。描述模式的数据定义语言为:模式DDL

外模式:也称用户模式或子模式,是用户与数据库系统的接口,是用户看到的那部分数据的描述。 描述外模式的数据定义语言为:外模式DDL

内模式:也称存储模式,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方法,定义所有的内部记录类型、索引和文件的组织方法,以及数据控制方面的细节。描述内模式的数据定义语言为:内模式DDL

(一个数据库系统中,外模式可以有多个,而模式和内模式只有有一个!!!)

外模式——模式——内模式分别对应:视图——基本表——文件


2.2 两级映像


首先,数据的独立性是由DBMS的两级映像功能来保证的。

模式/内模式映像:存在于概念级和内部级之间,实现了模式和内模式之间的相互转换。保证了数据的物理独立性。

外模式/模式映像:存在于外部级和概念级之间,实现了外模式和模式之间的相互转换。保证了数据的逻辑独立性。


3.数据库设计过程



4.E-R模型



E-R模型中,实体用矩形表示、属性用椭圆形表示、联系用菱形表示。

在上图中学生和课程都是实体,而学号、姓名、性别、年龄这四个是学生实体的属性,课程号、课程名、任何教师这三个是课程实体的属性,因为一个学生可以选修多门课程、一门课程也可以被多个学生选修,所以学生与课程之间是多对多联系,即选课联系用菱形表示,而成绩是选课联系中对应的属性。


E-R模型中,每个实体必须转换为一个关系模式,而联系分为(111nmn)三种,前两种可以转也可以不转,第三种则是必须转。所以上面这个例题,ABC三个实体为多对多对多联系,所以必须转换,即一共可转换为4个关系模式。具体的转换规则如以下三个表所示:👇👇👇 


E-R模型转关系模式的规则:11联系

联系类型

联系是否转换

属性

主键

外键

11联系

联系自身属性+

各实体关键字

每个实体的关键字

均可作为主键

每个实体的关键字

均可作为外键

不转

任意一端实体中添加

联系自身属性以及

另一端实体的关键字

仍为原关系模式的主键

另一端实体的关键字

E-R模型转关系模式的规则:1对多联系

联系类型

联系是否转换

属性

主键

外键

1n联系

联系自身属性+

各实体关键字

n端实体的关键字

各实体关键字

不转

n端实体添加

联系自身属性以及

1端实体的关键字

仍为原关系模式的主键

1端实体的关键字

 

E-R模型转关系模式的规则:多对多联系

联系类型

联系必须转换

属性

主键

外键

mn联系

各实体关键字+

联系自身属性

各实体关键字的组合

各实体的关键字


5.关系代数




集合运算符:并、交、差、笛卡儿积。专门的关系运算符:选择、投影、连接、除。

其中,并、差、笛卡儿积、选择、投影这五种运算是基本的运算。(对于属性列,笛卡儿积不去重,自然连接去重)

大家应该都学过数据库中的关系代数,我在这里只介绍了相应的考点,具体的大家可以自行学习!!!


6.规范化理论


6.1 函数依赖


假设:学号姓名,表示学号唯一确定一个学生的姓名,也就是说姓名是完全依赖于学号。

假设(学号,课程号)系名,而根据常识,显然根据一个学生的学号,就已经可以确认这个学生所在系,根本不需要课程号这个属性,所以这就是一个部分函数依赖。

假设:学号系名,系名系主任姓名,在这里我们可以直接得出:学号系主任姓名,所以这就是一个传递函数依赖。

这里还要介绍一下函数依赖的公理系统,设关系模式RUF):👇👇👇

A1自反律:若Y包含于X包含于U,则X→YF所蕴涵。

A2增广律:若X→YF所蕴涵,且Z包含于U,则XZ→YZF所蕴涵。

A3传递律:若X→YY→ZF所蕴涵,则X→ZF所蕴涵。

合并规则:若X→YX→Z,则X→YZF所蕴涵。

伪传递律:若X→YWY→Z,则XW→ZF所蕴涵。

分解规则:若X→YZ包含于Y,则X→ZF所蕴涵。


6.2 求候选关键字

6.2.1 码的相关概念

候选码:也称候选键,若关系模式中的某一属性或属性组能唯一的标识一个元组,则称该属性或属性组为候选码。例如:学号可以唯一确定学生性别、姓名等信息,所以学号就是学生关系模式的候选码。

主码:也称主键,若一个关系模式有多个候选码,则选定其中一个作为主码。例如:学号可以唯一确定学生姓名,身份证号也可以唯一确定学生姓名,那么学号和身份证号都是学生关系模式的候选码,我们选择候选码之一:学号作为主码。

超码:也称超键,对于学生关系模式,学号可以唯一确定学生性别,所以学号可以作为候选码,那么(学号,姓名)组合起来也可以唯一确定学生性别,那么这里的(学号,姓名)就称为学生关系模式的超码。

外码:也称外键,如果关系模式R中的属性或属性组不是该关系的码,但它是其他关系模式的码,那么该属性或属性组对关系模式R而言就是外码。

全码:如果在一个关系模式中,需要所有的属性才可以唯一标识其中的每一个元组,那么就称这个属性组为全码。

(非)主属性:包含在任何一个候选码中的所有属性称为主属性,不包含在任何候选码中的属性称为非主属性。


6.2.2 候选码的求解方法


在一个关系模式中,我们对函数依赖集中的所有的属性进行分类(LRLRN),L类表示该属性只出现在左边,R类表示该属性只出现在右边,LR类表示该属性在左右两边都出现过,N类表示该属性没有出现。

对关系模式中的所有属性进行分类之后,最终的结论是:候选码中一定包含L类属性和N类属性,一定不包含R类属性,可能包含LR类属性。此时我们只需要去求L类和N类属性集的闭包就可以了,如果该属性集的闭包等于全集,那么该属性集就是该关系模式的候选码。如果不是,就从LR类属性中依次添加单个属性,每添加一个,就求一次闭包,直到属性集的闭包等于全集,即可确定该关系模式的候选码。

对于例1:由关系模式R和函数依赖集F可知,L类属性:A1R类属性:A4LR类属性:A2A3,则候选码中一定包含A1,一定不包含A4,可能包含A2A3。而A1属性的闭包为:A1A2A3A4=全集U,所以关系R的候选码为A1


对于例2:由关系模式P和函数依赖集可知,L类属性:ABCDR类属性:EFHILR类属性:GJN类属性:无,所以候选码中一定包含ABCD,一定不包含EFHI,可能包含GJ。而属性集ABCD的闭包为:ABCDEFGHIJ=全集U,所以关系模式P的候选码为ABCD


对于例3:由关系R和函数依赖集F可知,L类属性:无,R类属性:CLR类属性:ABN类属性:无。所以候选码中一定不包含C,此时我们就依次添加LR类属性来求闭包,首先是属性A,它的闭包为:ABC=全集U,所以可以作为关系R的候选码,那么此时ABAC也可以唯一标识每一个元组,称ABAC为关系R的超码;其次看属性B,它的闭包为:ABC=全集U,也可以作为关系R的候选码,那么ABBC同样可以作为关系R的超码。即属性AB都可以作为关系R的候选码。


6.3 价值与用途

6.4 范式

1NF(第一范式):若关系模式R的每一个分量都是不可再分的数据项,则关系模式R1NF

2NF(第二范式):若关系模式R1NF,且每一个非主属性完全依赖于码,则关系模式R2NF。(换句话说,当1NF消除了非主属性对码的部分函数依赖,则称为2NF

3NF(第三范式):若关系模式RUF)中不存在这样的码X,属性组Y及非主属性ZZ不包含于Y)使得X→YY→Z成立,则关系模式R3NF。(换句话说,当2NF消除了非主属性对码的传递函数依赖,则称为3NF

BCNFBC范式):关系模式RUF1NF,若X→YY不包含于X时,X必含有码,则RBCNF。(换句话说,关系模式R中,若每一个决定因素都包含码,则称为BCNF

一个满足BCNF的关系模式有:所有非主属性对每一个码都是完全函数依赖。

                                                所有主属性对每一个不包含它的码也是完全函数依赖。

                                                没有任何属性完全函数依赖于非码的任何一组属性。

6.5 模式分解


对于保持函数依赖和模式分解,在这里只介绍一些简单的例子,具体的大家可以自行学习。

假设一个关系模式RABC),函数依赖集F={A→BB→C},我们将关系模式R分解为R1AB),R2BC)。那么在R1中,我们能够找出A→B;在R2中,我们能够找出B→C,这与原函数依赖集完全对应,所以就称这样的模式分解保持函数依赖。(换句话说,对于一个总关系模式分解成了若干个子关系模式,如果根据这些子关系模式中的属性能够推出与原函数依赖集相同的内容,则称保持函数依赖)

对于模式分解,如果分解的子关系模式数量大于2,则需使用表格法进行还原(表格法在这里就不再详细讲解了);如果分解的子关系模式只有两个:R1R2,那么只需要求一下 R1∩R2(交集)、R1-R2(差运算)、R2-R1(差运算),如果此时 R1∩R2 能够推出 R1-R2R2-R1 其中之一,则称模式分解是无损的。



相关文章
|
5天前
|
存储 JSON NoSQL
学习 MongoDB:打开强大的数据库技术大门
MongoDB 是一个基于分布式文件存储的文档数据库,由 C++ 编写,旨在为 Web 应用提供可扩展的高性能数据存储解决方案。它与 MySQL 类似,但使用文档结构而非表结构。核心概念包括:数据库(Database)、集合(Collection)、文档(Document)和字段(Field)。MongoDB 使用 BSON 格式存储数据,支持多种数据类型,如字符串、整数、数组等,并通过二进制编码实现高效存储和传输。BSON 文档结构类似 JSON,但更紧凑,适合网络传输。
30 15
|
1月前
|
负载均衡 网络协议 数据库
选择适合自己的数据库多实例负载均衡技术
【10月更文挑战第23天】选择适合自己的数据库多实例负载均衡技术需要全面考虑多种因素。通过深入的分析和评估,结合自身的实际情况,能够做出明智的决策,为数据库系统的高效运行提供有力保障。
115 61
|
1月前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
54 3
|
1月前
|
缓存 负载均衡 监控
数据库多实例的负载均衡技术深入
【10月更文挑战第23天】数据库多实例负载均衡技术是确保数据库系统高效运行的重要手段。通过合理选择负载均衡策略、实时监控实例状态、不断优化调整,能够实现资源的最优分配和系统性能的提升。在实际应用中,需要根据具体情况灵活运用各种负载均衡技术,并结合其他相关技术,以满足不断变化的业务需求。
|
1月前
|
Java 数据库连接 数据库
优化之路:Java连接池技术助力数据库性能飞跃
在Java应用开发中,数据库操作常成为性能瓶颈。频繁的数据库连接建立和断开增加了系统开销,导致性能下降。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接,显著减少连接开销,提升系统性能。文章详细介绍了连接池的优势、选择标准、使用方法及优化策略,帮助开发者实现数据库性能的飞跃。
33 4
|
1月前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
41 1
|
1月前
|
SQL Java 数据库连接
打破瓶颈:利用Java连接池技术提升数据库访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,避免了频繁的连接建立和断开,显著提升了数据库访问效率。常见的连接池库包括HikariCP、C3P0和DBCP,它们提供了丰富的配置选项和强大的功能,帮助优化应用性能。
69 2
|
2天前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
10 3
|
2天前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
14 3
|
2天前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE 'log_%';`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
20 2