数据库复习
1. 数据库安全性与操作系统安全性的关系?
安全性问题不是数据库系统所独有的,所有计算机系统都有这个问题。只是在数据库系统中大量数据集中存放,而且为许多最终用户直接共享,从而使安全性问题更为突出。系统安全保护措施是否有效是数据库系统的主要指标之一。数据库的安全性和计算机系统的安全性,包括操作系统,网络系统的安全性是紧密联系、相互支持的。
2. SQL 主键约束和唯一约束有什么区别呢?
主键不能为空而唯一可以为空,相同点就是都不允许重复。
3. 什么是基本表?什么是视图?两者的区别和联系是什么?
表是实实在在得保存数据的实体,写入的数据都保存在表中;而视图是不保存数据的,也没有数据。视图就是一条语句,实际上视图从表中去数据,只是给我们的感觉好像直接从表中取得一样。
表可以建立各种触发器,可以建立索引,可以建立主键、约束等;但是视图不能建立这些对象( 视图可以建立替代触发器)。
表和视图可以更新,但是视图的更新受到约束。比如,GROUP BY 和表连接生成的视图不能更新表是实实在在的保存数据的实体,写入的数据都保存在表中;而视图是不保存数据的,也没有数据。
4. 数据库索引
目的:提供多种存储路径,加快查找速度。
建立索引需要考虑的问题:
没有查询、统计的需要则不建;
数据增删改频繁,系统会花费许多时间来维护索引,从而降低了查询效率。
5. 哪些视图是可以更新、哪些是不可以更新的
(1)简单视图
就是由一个表生成出来的视图,这种情况你更新它就和更新表一样
(2)二次加工出来的简单视图
仍然是一个表出来的视图,但是视图中存在通过函数或计算二次加工出来的其他字段。更新
的时候只要不更新这些加工出来的字段也是可以更新的。
(3)组合视图
通过表之间关联联合等出来的复杂视图。这种视图更新的时候要注意你所更新的列要来自同
一个表,也是可以更新的。
(4)静态视图
这种视图等同于表可以直接更新,但是更新的数据尽在视图中反映出来,不反映到原表
(5)其他视图
通过表函数等其他生成的更为复杂的视图。一般不可更新
6、数据库完整性与安全性的区别
完整性和安全性是两个不同的概念。前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出造成的无效操作和错误结果,而后者是防止数据库被恶意的破坏和非法的存取。当然,完整性和安全性是密切相关的。特别是从系统实现的方法来看,某一种机制常常既可以用于安全保护亦可用于完整性保证。
7、数据库保护(访问)的内容有哪些?
- 利用权限机制和完整性约束防止非法数据进入数据库;
- 提供故障恢复能力;
- 提供并发访问控制。
8、 DBA 的职责是什么?
DBA 负责全面管理和控制数据库系统,其职责有:
- 决定数据库中的信息内容和结构:数据库中要存放哪些信息
- 决定数据库的存储结构和存取策略:获得较高的存取效率和存储空间利用率
- 定义数据的安全性要求和完整性约束条件:负责确定各个用户对数据库的存取权限、 数据的保密级别和完整性约束条件
- 监控数据库的使用和运行:转储数据、维护日志文件、故障恢复
- 数据库的改进和重组重构:对运行情况进行记录、统计分析,以此来不断改进数据库设计。
9、数据库系统和文件系统相比有什么优点?
10、什么是完整性约束?
完整性约束可确保数据库中的数据正确性和相容性,主要包括:实体完整性、参照完整性、用户自定义完整性。
11、DBMS 【数据库管理系统】支持那几种数据模型?
常用的是层次模型,网状模型和关系模型(最重要)。新兴的是面向对象数据模型和对象关系数据模型。
层次模型: 层次模型是指用树行结构表示实体及其之间的联系,树中每一个节点代表一个记录类型,树状结构表示实体型之间的联系。
在一个层次模型中的限制条件是:有且仅有一个节点,无父节点,此节点为树的根;其他节点有且仅有一个父节点。
网状模型的数据结构主要有以下两个特征:
(1)允许一个以上的节点无双亲。
(2)一个节点可以有多于一个的双亲。
网状模型:用有向图结构表示实体类型及实体间联系的数据结构模型称为网状模型关系实际上就是关系模式在某一时刻的状态或内容。也就是说,关系模式是型,关系是它的值。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。但在实际当中,常常把关系模式和关系统称为关系。
现实世界的实体以及实体间的各种联系均用关系来表示,从用户角度看,关系模型中数据的逻辑结构是一张二维表。
12、SQL(Structured Query Language)的四个组成部分?
① 数据定义语言(Data Definition Language);
② 查询语言(Query Language);
③ 数据操纵语言(Data Manipulation Language);
④ 数据控制语言(Data Control Language)
13、数据库操纵语言举例
数据操纵语言 DML(Data Manipulation Language),用户通过它可以实现对数据库的基本操作。例如,对表中数据的查询(select)、插入(insert)、删除(delete)和修改(update)
14、介绍下有哪些应用数据库?
大概知道的有:
桌面型:Access、Foxpro、DBase
企业型:SQL Server 系列、MySQL、Oracle、Sybase
非关系型数据库:Nosql
15. 什么是数据独立性。
数据独立性表示应用程序与数据库中存储的数据不存在依赖关系,包括逻辑数据独立性和物理数据独立性。
逻辑数据独立性指用户的应用程序与数据库的逻辑结构是相互独立的。数据的逻辑结构改变了,应用程序不用改变。
例:增加一个字段,应用程序不用改变
是指当数据库的模式发生改变时,只需要改变存在于外模式和概念模式之间的映射转换,无需改变外模式或应用程序。
物理数据独立性指用户的应用程序与数据库中数据的物理存储是相互独立的。当数据的物理存储改变了,应用程序不用改变。
例:本来是一行行存放数据,现在是一列列存放数据,但应用程序可以不变 或者 本来是用B树建索引 后来使用hash建索引
是指当数据库的内模式发生改变时,系统只要改变概念模式和内模式之间的映射转换,而不必改变模式,从而不需要更改外模式。
16、1NF 是啥,数据模式?
第一范式 是数据库最基本的要求,即每一个分量必须是不可分的数据项;
第二范式 是数据库非主属性对码的部分函数依赖,即每一个非主键完全函数依赖于主键;
第三范式 是非主属性对码的传递依赖,即不包含已在其他表中已包含的非主键信息,防止数据冗余;
数据模式是基于选定的数据模型对数据进行的“型”的方面的刻画,而相应的“实例”则是对数据“值”的方面的描述。先有数据模型,才能据其讨论相应数据模式,有了数据模式,就能依据该模式得到相应的实例。
17、 数据库的关系操作有哪些?各有什么作用?
关系模型中常用的关系操作包括两大部分:
选择、投影、连接、除、并、交、差、笛卡尔积等查询操作
增加、删除、修改操作
查询的表达能力是其中最主要的部分。
关系操作的特点是集合操作方式,即 操作的对象和结果都是集合。这种操作方式也称为 一次一集合(set-at-a-time) 的方式。相应地,非关系数据模型的数据操作方式则为 一次一记录(record-at-a-time) 的方式
18、DB 并发操作通常带来哪三类问题?
丢失修改(Lost Update):当一个事务修改了数据,并且这种修改还没有还没有提交到数据库中时,另外一个事务又对同样的数据进行了修改,并且把这种修改提交到了数据库中。这样,数据库中没有出现第一个事务修改数据的结果,好像这种数据修改丢失了一样。
脏读(Dirty Read):当一个事务正在访问数据,并对数据进行了修改,而这种修改还没有提交到数据库中,这时,另一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另一个事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不正确的。
不可重复读(Non-Repeatable Read):在一个事务内,多次读同一数据。在这个事务还没有结束时,另一个事务也访问该同一数据,那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,第一个事务两次读到的数据可能是不一样的。
19、两段锁协议
所谓两段锁协议是指所有事务必须分两个阶段对数据项加锁和解锁:
在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁;
而且在释放一个封锁之后,事务不再申请和获得任何其他封锁。
加锁阶段:在该阶段可以进行加锁操作。在对任何数据进行读操作之前要申请并获得S锁,在进行写操作之前要申请并获得X锁。加锁不成功,则事务进入等待状态,直到加锁成功才继续执行。
解锁阶段:当事务释放了一个封锁以后,事务进入解锁阶段,在该阶段只能进行解锁操作不能再进行加锁操作。
所谓“两段”锁的含义是,事务分为两个阶段,第一阶段是获得封锁,也称为扩展阶段。
第一阶段阶段,事务可以申请获得任何数据项上的任何类型的锁,但是不能释放任何锁。第二阶段是释放封锁,也称为收缩阶段。在这阶段,事务可以释放任何数据项上的任何类型的锁,但是不能再申请任何锁。
例如事务 T1 遵守两段锁协议,其封锁序列是:(如右)
又如事务 T2 不遵守两段锁协议,其封锁序列是:
Slock A … Unlock A … Slock B … Xlock C … Unlock C … Unlock B;
可以证明,若并发执行的所有事务均遵守两段锁协议,则对这些事务的任何并发调度策略都是可串行化的。
另外要注意两段锁协议和防止死锁的一次封锁法的异同之处。一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行,因此一次封锁法遵守两段锁协议;但是两段锁协议并不要求事务必须一次将所有要使用的数据全部加锁,因此遵守两段锁协议的事务可能发生死锁
20、事务的四个特点?
事务的概念:用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。
- 一致性(Consistency)
- 原子性(Atomicity)
- 隔离性(Isolation)
- 持续性(Durability)
21、 数据库恢复策略有哪几种?
- 事务内部的故障
- 系统故障
- 介质故障
- 计算机病毒
22、数据库的三级模式
1、模式又称概念模式或逻辑模式,对应于概念级,是对数据库中全部数据的逻辑结构和特征的总体描述,是所有用户的公共数据视图(全局视图),反映了数据库系统的整体观。
2、外模式又称子模式或用户模式,对应于用户级。它是某个或某几个用户所看到的数据库的数据视图,是与某一应用有关的数据的逻辑表示。外模式是从模式导出的一个子集,包含模式中允许特定用户使用的那部分数据。外模式反映了数据库的用户观。
3、内模式又称存储模式,对应于物理级,它是数据库中全体数据的内部表示或底层描述,是数据库最低一级的逻辑描述,它描述了数据在存储介质上的存储方式和物理结构,对应着实际存储在外存储介质上的数据库。内模式是数据库的存储观。在一个数据库系统中,只有唯一的数据库,因而作为定义、描述数据库存储结构的内模式和定义、描述数据库逻辑结构的模式,也是唯一的,但建立在数据库系统之上的应用则是非常广泛、多样的,所以对应的外模式不是唯一的,也不可能是唯一的。
23、什么是表?什么是视图?两者的区别和联系是什么?
表是实实在在得保存数据的实体,写入的数据都保存在表中,而视图是不保存数据的,也没有数据。视图就是一条语句,实际上视图从表中取数据。只是给我们的感觉好像直接从表中取得一样。表可以建立各种触发器,可以建立索引,可以建立主健,约束等。但是视图不能建立这些对象(视图可以建立替代触发器)。表和视图可以更新,但是视图的更新受到约束。比如,GROUP BY 和表连接生成的视图不能更新表是实实在在的保存数据的实体,写入的数据都保存在表中,而视图是不保存数据的,也没有数据。
联系:可以理解为视图的数据都是从表中取出来,视图就是你定下的一个框框而已,内容都是在表中。
24、1NF 有哪些缺点?
- 数据冗余太大(每一个系的系主任名字重复出现)
- 更新异常(某个系更换系主任之后,必须将该系学生有关的每一个元组)
- 插入异常(如果一个系刚成立,尚无学生,就无法将老师存入到数据库中)
- 删除异常(如果学生都毕业了,在删除学生时,把这个系的系主任的所有信息都删除了)
25、数据字典通常包含五个部分
- 数据项
- 数据结构
- 数据流
- 数据存储
- 处理过程
26、数据库中视图的优点
① 简化用户操作;
② 使用户能以多种角度看待统一数据;
③ 对重构数据库提供了一定程度的逻辑独立性;
④ 对机密数据提供安全保护;
⑤ 可以更清晰的表达查询。
26.在做数据库开发中使用视图的优点有:
可以访问表中列的子集。在表中有些列是比较敏感的数据不想用户看到的,如用户密码,员工工资等,用视图可以隐藏这些列。
可以访问表中行的子集。有时不想让用户看到与 TA 无关的数据时,可以在 where 条件中过滤,如企业中子公司的员工只能看到 TA 所在子公司的同事资料,而不想其它子公司员工资料也显示出来,用过滤后查询出来的数据集组成视图。
可以重命名列名。在表中有些列名定义没有代表意义,如列“abc”,为了让用户看到列名就可以知该列是什么数据,可以在组建视图时重命名列名。
可以快速访问两表或多表连接所组成的数据。有时要访问表间连接所组成的数据集,可以把查询出来的数据集定义成视图,可以帮助快速访问所需的数据。
可以快速读取用聚合函数运算所返回的数据集。有时用户要读取经过用聚合函数复杂运算后的结果集,每次读取都是很耗时,这时可以把这运算后的数据集组成视图,就可以避免每次读取都要运算的消耗。总的来讲,使用视图在提高安全性的同时也加快查询的速度。
27、 数据库的三要素
数据模型是一组严格定义的概念的集合,这些概念精确地描述了系统的静态特征(数据结构)、动态特征(数据操作)和完整性约束条件,这就是数据模型的三要素。
28、 数据库索引
目的:提供多种存储路径,加快查找速度。
建立索引需要考虑的问题:
1。没有查询、统计的需要则不建
2。数据增删改频繁,系统会花费许多时间来维护索引,从而降低了查询效率。
29、哪些视图是可以更新、哪些是不可以更新的,
行列子集视图可以更新;
① 由两个以上基本表导出的视图,不可以更新;
② 字段来自于字段表达式或常数的视图,不允许(Insert、Update),但是可以 Delete;
③ 字段来自聚集函数的视图不可以更新;
④ 定义中含有 Group By 字句的视图,不可以更新;
⑤ 定义中含有 DISTINCT 字句的视图,不可以更新;
⑥ 定义中有嵌套查询,并且内层查询的 From 字句中涉及的表也是导出该视图的基本表
的视图,不可以更新;
⑦ 不允许更新的视图上定义的视图也不允许更新。
30、日志文件的定义与作用。
日志文件是用来记录事务对数据库的更新操作的文件。
作用:在数据库恢复中起着重要的作用,并协助后备副本进行介质故障恢复。
日志文件主要包含:事务标识、操作的类型、操作对象、更新前数据的旧值、更新后数据的新值。
31、数据库完整性与安全性的区别?
完整性和安全性是两个不同的概念。前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出造成的无效操作和错误结果, 而后者是防止数据库被恶意的破坏和非法的存取。当然,完整性和安全性是密切相关的。特别是从系统实现的方法来看,某一种机制常常既可以用于安全保护亦可用于完整性保证。
32、数据库有哪几种备份策略,大概的操作
完全备份、事务日志备份、差异备份、文件备份。
33、DBMS 控制管理功能
① 数据库定义和创建;
② 数据组织、存储和管理;
③ 数据存取;
④ 数据库事务管理和运行管理;
⑤ 数据库的建立和维护。
34、数据库采用什么机制来保证数据库并发操作的正确性?
并发控制:封锁、时间戳、乐观控制法。
35、数据库安全系统和计算机安全系统的人关系
安全性问题不是数据库系统所独有的,所有计算机系统都有这个问题。只是在数据库系统中大量数据集中存放,而且为许多最终用户直接共享,从而使安全性问题更为突出。系统安全保护措施是否有效是数据库系统的主要指标之一。数据库的安全性和计算机系统的安全性,包括操作系统,网络系统的安全性是紧密联系,相互支持的。
36、函数模板和类模板的区别
实例化不同。
37、数据库管理系统的完整性要完成的功能
- 防止不合语意的数据
- 防止无效操作和错误结果
38. 数据库的两种独立性
物理独立性指的是应用程序与数据存放在相互独立的磁盘地址,内模式与模式映象保证了其物理独立特性;
逻辑独立性指的数据与程序逻辑结构上的独立特性,数据或应用程序的逻辑结构发生变化性都不影响对方,外模式与模式映身保证了其逻辑独立性。
逻辑数据独立性指用户的应用程序与数据库的逻辑结构是相互独立的。数据的逻辑结构改变了,应用程序不用改变。
例:增加一个字段,应用程序不用改变
是指当数据库的模式发生改变时,只需要改变存在于外模式和概念模式之间的映射转换,无需改变外模式或应用程序。
物理数据独立性指用户的应用程序与数据库中数据的物理存储是相互独立的。当数据的物理存储改变了,应用程序不用改变。
例:本来是一行行存放数据,现在是一列列存放数据,但应用程序可以不变 或者 本来是用B树建索引 后来使用hash建索引
是指当数据库的内模式发生改变时,系统只要改变概念模式和内模式之间的映射转换,而不必改变模式,从而不需要更改外模式。
39、 DBMS 的控制操作有哪些
①数据的安全性保护;
②数据的完整性检查;
③并发控制;
④数据库恢复。
40、什么是数据库控制语言,试举例说明
DCL 是用来设置或更改数据库用户角色权限的语句,主要包括 GRANT(授权)、DENY
(拒绝)、REVOKE(删除)三类。
41、数据库两级模式的作用?
三模式→①外模式/模式映像;②模式/内模式映像;
保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。
42、笛卡尔积
在数学中,两个集合 X 和 Y 的笛卡儿积(Cartesian product),又称直积,表示为 X × Y,是其第一个对象是 X 的成员而第二个对象是 Y 的一个成员的所有可能的有序对。
43、数据库中 primary key 约束和 unique 约束有什么区别?
主键约束:有一列或列的组合,其值能唯一的标识表中的每一行。
唯一约束:不允许数据库表在指定列上具有相同的值,但允许有空值。
区别:一个表可以定义多个唯一约束,但只能定义一个主键约束;空值的列上可以定义唯一约束,不能定义主键约束。
1.数据库索引
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可以快速访问数据库表中的特定信息。
如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。
索引的一个主要目的就是加快检索表中数据的方法,亦能协助信息搜索者尽快的找到符合限制条件的记录ID的辅助数据结构。
2.数据库事务
数据库事务(Database Transaction),是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。
事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。
通过将一组相关操作组合为一个要么全部成功,要么全部失败的单元,可以简化错误恢复并是应用程序更加可靠。
一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。
事务是数据库运行中的逻辑工作单位,由DBMS中的事务管理子系统负责事务的处理。
3.数据库事务隔离
同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。
比如A正在从一张银行卡取钱,在A取钱的过程结束前,B不能向这张卡转账。
4.等值联接(inner join)和左联接(left join)
左联接返回包括左表中的所有记录和右表中联接字段相等的记录
右联接返回包括右表中的所有记录和左表中联结字段相等的记录
等值联接只返回两个表中联接字段相等的行
5.数据库事务的一致性
事务是由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑单元。事务是DBMS中最基础的单位,事务不可分割。
事务具有四个特性,分别是:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Duration),简称ACID。
(1)原子性
原子性是指事务所包含的所有操作要么全部成功,要么全部失败的回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。
(2)一致性
一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说事务执行之前和执行之后都必须处于一致性状态。
拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转账几次,事务结束后两个用户的钱加起来应该还得是5000,这就是事务的一致性。
(3)隔离性
隔离性是当多个用户并发访问数据库时,比如操作同一张表,数据库为每个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。
即要达到这么一种效果:对于任意两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前就已经结束,要么在T1结束之后才开始,这样每个事务都感觉不到有其他事务在并发地执行。
多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。这指的是在开发环境中,当不同事务操作相同的数据时,每个事务都有各自的完整数据空间。由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。
不同的隔离级别:
Read Uncommitted(读取未提交):最低的隔离级别,什么都不需要做,一个事务可以读到另一个事务提交的结果。所有的并发事务问题都会发生。
Read Committed(读取提交内容):只有在事务提交后,其更新结果才会被其他事务看见。可以解决脏读问题。
Repeated Read(可重复读):在一个事务中,对于同一份数据的读取结果总是相同的,无论是否有其他事务对这份数据进行操作,以及这个事务是否提交。可以解决脏读、不可重复读。
Serialization(可串行化):事务串行化执行,隔离级别最高,牺牲了系统的并发性。可以解决并发事务的所有问题。
(4)持久性
持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。
例如我们在使用JDBC操作数据库时,在提交事务方法后,提示用户操作完成,当我们程序执行完成直到看到提示后,就可以认定事务已经正确提交,即使这时候数据库出现了问题,也必须要将我们的事务完全执行完成,否则就会造成我们看到提示事务处理完毕,但是数据库因为故障而没有执行事务的重大错误。
6.索引是什么,多加索引一定会好吗
数据库索引是为了增加查询速度而对表字段附加的一种标识,是对数据库表中一列或多列的值进行排序的一种结构。
数据库在执行一条sql语句的时候,默认的方式是根据搜索条件进行全表扫描,遇到匹配条件的就加入搜索结果集合。
如果我们对某一字段增加索引,查询时就会先去索引列表中一次定位到特定值的行数,大大减少遍历匹配的行数,所以能明显增加查询的速度。
优点:
(1)通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
(2)可以大大加快数据库的检索速度,这也是创建索引的最主要的原因。
(3)可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
(4)在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
(5)通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
缺点:
(1)创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。
(2)索引需要占物理空间,除了数据表中占数据空间之外,每一个索引还要占一定的物理空间,如果建立聚镞索引,那么需要的空间就会更大。
(3)当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。
添加索引的规则:
(1)在查询中很少使用的列或者参考的列不应该创建索引。这是因为,既然这些列很少使用到,因此有索引或者无索引,并不能提高查询速度。
相反,由于增加了索引,反而降低了系统的维和速度和增大了空间需求。
(2)只有很少数据值的列也不应该增加索引。由于这些列的很少,例如人事表的性别列,在查询的结果中,结果集的数据占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大。增加索引,并不能明显加快检索速度。
(3)定义为text、image和bit数据类型的列不应该增加索引。这是因为,这些列的数据量要么相当大,要么取值很少。
(4)当修改性能远远大于检索性能时,不应该创建索引。这是因为,修改性能和检索性能是互相矛盾的。当增加索引时,会提高检索性能,但是会降低修改性能。当减少索引时,会提高修改性能,降低检索性能。因此,当修改性能远远大于检索性能时,不应该创建索引。
7.数据库的三大范式
第一范式:当关系模式R的所有属性都不能再分解为更基本的数据单位时,称R是满足第一范式,即属性不可分。
第二范式:如果关系模式R满足第一范式,并且R的所有非主键属性完全依赖于R的每一个候选关键属性,称R满足第二范式。
第三范式:设R是一个满足第一范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第三范式,即非主属性不传递依赖于键码。
8.mysql的MVCC机制
MVCC是一种多版本并发控制机制,是Mysql的InnoDB存储引擎实现隔离级别的一种具体方式,用于实现提交读和可重复读这两种隔离级别。MVCC是通过保存数据在某个时间点的快照来实现该机制,其在每行记录后面保存两个隐藏的列,分别保存这个行的创建版本号和删除版本号,然后InnoDB的MVCC使用到的快照存储在Undo日志中,该日志通过回滚指针把一个数据行所有快照连接起来。
9.SQL优化方法有哪些
通过建立索引对查询进行优化;
对查询进行优化,应尽量避免全表扫描。
10.ER图
实体联系图(Entity-Relationship,E-R),有三个组成部分:实体、属性、联系。用来进行关系型数据库系统的概念设计。
实体:用矩形表示,矩形框内写明实体名。
属性:用椭圆形表示,并用无向边将其与相应的实体连接起来。
联系:用菱形表示,菱形框内写明联系名。
ER模型转换为关系模式的原则:
一对一:遇到一对一关系的话,在两个实体任选一个添加另一个实体的主键即可。
一对多:遇到一对多关系的话,在多端添加另一端的主键。
多对多:遇到多对多关系的话,我们需要将联系转换为实体,然后在该实体上加上另外两个实体的主键,作为联系实体的主键,然后再加上联系自身带的属性即可。
参考:
- https://blog.csdn.net/kkm09/article/details/105136235
- https://blog.csdn.net/weixin_40605573/article/details/105460410