数据库期末冲刺

复习思路:寻找经典题型。PPT、往年题、作业、课后习题

刷题

什么是数据库镜像,用途是什么?
数据库镜像将整个数据库中的数据(或主要数据)实时复制到另一个磁盘中。
也称为‘磁盘镜像’。
系统自动保证主数据库服务器中的数据与数据库镜像中的数据的一致性。
在数据库中的数据遭受破坏后,可以利用数据库镜像中的数据进行修补。

SQL语言集哪四个功能于一体?

数据定义,数据操纵,更新,还差一个?
然而不对。。。。

正确答案:定义、查询、更新、控制

ER模型的主要元素?

实体、属性、联系

关系系统的完整性控制包括

实体完整性、参照完整性、用户定义的完整性

数据库系统一般包括哪五部分?

我认为:数据库、数据库管理系统、数据库管理员、软件平台、硬件平台

答案:数据库、数据库管理系统、数据库管理员、应用系统、用户

从关系规范化理论的角度讲,一个只满足1NF 的关系可能存在的四方面问题是

数据冗余度大、插入异常、修改异常和删除异常

数据库设计的一般步骤
8步,已经记得很熟了。
需求-概念-逻辑-物理-编码-测试-运行-更改

答案:需求分析-概念结构设计-逻辑结构设计-物理结构设计-数据库的实施-运行与维护

关系规范化中的插入/删除操作异常是指

删除异常:不该删除的数据被删除
插入异常:应该插入的数据未被插入

数据管理经历了几个阶段

人工管理、文件系统、数据库系统三个阶段。

数据模型由几部分组成

数据结构、数据操作和完整性约束三部分组成。

SQL的集簇

在Student 表的Sname 列上建立一个聚簇索引的SQL 语句为:
CREATE CLUSTER INDEX Stusname ON student(Sname)

并发控制的主要方法是

封锁机制

事务的四个特性

事务具有四个特性,即ACID 特性:
(1)原子性:事务中包括的所有操作要么都做,要么都不做。
(2)一致性:事务必须使数据库从一个一致性状态变到另一个一致性状态。
(3)隔离性:一个事务内部的操作及使用的数据对并发的其他事务是隔离的。
(4)持续性:事务一旦提交,对数据库的改变是永久的。

在数据库三级模式中,模式的个数( )
只有一个

“向emp 表增加一个telephone 列,其数据类型为11 个字符型”的SQL 语句是:

ALTER TABLE emp add telephone CHAR(11)

当对视图进行UPDATE、INSERT、DELETE 操作时,为了保证被操作的行满足视图定
义中子查询语句的谓词条件,应在视图定义语句中使用可选择项

WITH CHECK OPTION

SQL 语言支持数据库的外模式、模式和内模式结构。外模式对应于视图和部分基本表,模式对应于全体基本表,内模式对应于存储文件。

第一章 数据库系统概述

数据的特性

  1. 数据表现的多样性
  2. 数据的可构造性
  3. 数据的挥发性/持久性
  4. 数据的私有性/共享性
  5. 数据‘量’的表示:少量/大量/海量

数据库(DS)
结构化的数据集合

数据库管理系统(Database Management System,简称DBMS)
能对持久性数据进行管理
能对大量数据进行有效存取
可为众多使用者提供同一数据(即数据共享)
DBMS的作用是:
数据库的应用程序与数据库的接口(实现角度)
在保证数据安全、可靠的同时,提高数据库应用时的简明性和方便性(实用角度)

数据子语言
数据定义语言
数据操纵语言
数据控制语言

数据库管理员
DBA

数据库系统及其特点
DBS,由数据库、数据库管理系统、数据库管理员、软件平台、硬件平台几部分组成。
数据的集成性
数据的高共享性与低冗余性
数据独立性
数据的统一管理与控制

7个,数据集成化、数据独立性、数据共享、数据冗余、数据的安全性、完整性和一致性、并发控制和故障恢复

数据库系统的三级模式、两级映射
概念模式(简称模式)
外模式(也称子模式、用户模式)
内模式(也称物理模式)
利用上述的三种模式可构造出三个层次上的数据库概念
概念数据库、用户数据库、物理数据库
进而引出了数据库系统的两级映射

  1. 概念模式到内模式的映射
    该映射给出了概念模式中数据的全局逻辑结构到数据的物理存储结构间的对应关系,一般由DBMS实现
    可实现‘物理独立性’
  2. 外模式到概念模式的映射
    概念模式是一个全局模式,而外模式则是用户的局部模式。一个概念模式中可以定义多个外模式,而每个外模式是概念模式的一个基本视图。
    外模式到概念模式的映射给出了外模式与概念模式的对应关系,这种映射一般也由DBMS实现。
    可实现‘逻辑独立性’。

第二章 数据模型

数据模型定义
描述数据的结构,定义在该数据结构上可以执行的操作以及数据之间必须满足的约束条件

数据模型的组成
数据结构、数据操作、数据约束

三个模型四个世界
概念数据模型 简称为 ‘概念模型’
逻辑数据模型 简称为 ‘数据模型’
物理数据模型 简称为 ‘物理模型’

现实世界、概念世界、信息世界、计算机世界

E-R模型与EE-R模型

IS-A
弱实体:指向联系的箭头

信息世界与逻辑模型

介绍了一些最最基本的概念

计算机世界与物理模型

第三章 关系数据库系统

关系数据结构

表框架、元组、主键、候选键、外键

数据操纵
增删改查
查可以分解为三种操作:关系合并、元组选择、属性指定
改实际上是删+增
所以本质上是五种操纵:元组选择(查)、属性指定(查)、关系合并(查)、元组插入(增)、元组删除(删)

三类数据完整性约束
实体完整性约束:主键中的属性不能有空值
参照完整性约束:外键要么取空值,要么是被引用表中当前存在的某元组上的主键值
用户定义的完整性:用户自己定义的属性取值约束

关系代数
基本运算:投影、选择、笛卡尔积、并、差
扩充运算:交、除、联结与自然联结

第三章 续 SQL

数据定义功能:
create table xx(id INT(5)...)
alter
drop

数据操纵功能

常用谓词

LIKE【_匹配一个字符,%匹配任意长字符】

SELECT  sn, sd
FROM S
WHERE  sn  LIKE  ‘A%’;

分层结构查询与集合谓词使用

谓词IN

限定比较谓词ALL/ANY

谓词CONTAINS【SQL未实现】

谓词EXISTS

子查询之间的并、交、差运算

UNION、INTERSECT、EXCEPT

SQL计算、统计、分类的功能

注意统计函数只能在SELECT中用,而不能在WHERE里直接使用

空值处理是自然的

GROUP BY:一个很重要的事情是需要保证出现在select语句中但没有被聚集的属性只能是出现在group by子句中的那些属性

GROUP BY & HAVING此两子句可以对映像语句所得到的集合元组分组(用GROUP BY子句),并还可利用HAVING子句设置逻辑条件

SQL的更新功能

DELETE
INSERT
UPDATE

视图/虚表

CREATE   VIEW   CS_S 
	AS   SELECT   *
		FROM      S
		WHERE   sd = ‘CS’

WITH CHECK OPTION:对视图进行UPDATE、INSERT和DELETE操作时,要保证更新、插入或删除的行满足视图定义中的谓词条件(即子查询中的条件表达式)

一般不允许执行视图上的更新操作,只有在特殊情况下才可以进行:视图的每一行必须对应基表的惟一一行、视图的每一列必须对应基表的惟一一列

视图的优点:
提高了数据独立性
简化用户观点
提供自动的安全保护功能

第四章 数据库的安全性与完整性保护

数据库的安全性

主客体分离。三种控制方式:身份标识与鉴别、自主访问控制DAC、强制访问控制MAC。

SQL92提供自主访问控制与授权功能,具体来说是授权语句、回收语句。

数据库的完整性

定义:指数据库中数据的正确性和一致性

三个基本功能:设置、检查、处理

SQL语言对完整性约束规则的支持

GRANT  <操作权限列表>  ON  <操作对象> TO  <用户名列表>  [WITH GRANT OPTION]

触发器

第五章 事务处理、并发控制与故障恢复技术

事务的特性

原子性(Atomicity)
一致性(Consistency)
隔离性(Isolation)
持久性(Durability)

事务的状态

活动、预提交【语句执行完了,进行写磁盘】、提交【写磁盘顺利结束,要打一个committed的标志,是最终状态】、失败【写磁盘过程中出现问题,要进行撤销】、异常中止【撤销完成了,要去重启或者取消事务,是最终状态】

事务组成语句

‘事务’除了由一组对于数据库的访问操作构成以外,通常还应该包括少量的事务控制语句。
事务的开始(begin transaction):确保后面的多条语句被当作一个事务,防止每执行一条语句都提交。
事务的结束:
正常结束-提交事务(commit transaction)
非正常结束-回退事务(rollback transaction)

并发执行错误

丢失修改(lost update)
脏读(dirty read)
不可重复读(non-repeatable read)
幻像(phantom)

这里可以了解一下事务中设置隔离级别的语句:
SET TRANSACTION ISOLATION LEVEL READUNCOMMITTED | READCOMMITTED | READREPEATABLE | SERIALIZABLE

READUNCOMMITTED:允许读到未提交的值。
READCOMMITTED:读之前需申请共享锁,读结束之后立即释放该封锁以避免读取到其它并发事务未提交的修改结果。避免了脏读,但是仍有可能发生不可重复读。大部分数据库默认级别就在这里了。
READREPEATABLE:可重复读,共享锁要维持到事务结束。
SERIALIZABLE:可序列化(可串行化)
image

这个表应该还是很重要的。但也很好记。就是一个下三角。每升一级解决一个问题。

事务中的操作语句

START、COMMIT、ABORT、INPUT、OUTPUT、READ、WRITE

通常让READ包含了INPUT

事务的串行化调度

并发控制的目标:实现并发事务的可串行化调度

用 ri(X) 表示事务 Ti 读数据库对象 X
用 wi(X) 表示事务 Ti 写数据库对象 X

冲突是指调度中的一对连续操作(op1; op2), 如果交换它们两者的执行顺序,那么涉及的事务中至少有一个的行为会改变

如果是不同事务操作不同对象,不会是冲突;不同事务操作同一对象,有写有冲突,无写无冲突;同一事务相邻操作无论怎样一定是冲突。

如果通过一系列相邻操作的非冲突交换能够将一个调度转换为另一个调度,则我们称这两个调度是冲突等价的。如果一个调度 S 冲突等价于一个串行调度,则我们称调度 S 是“冲突可串行化”的。

‘冲突可串行化’一定‘可串行化调度’,反过来则不一定。

优先图:用于判断是否冲突可串行化【其实很简单,对每个特定的数据对象,看访问它的事务,能固定下来一些事务的顺序,然后看存不存在矛盾即可】

封锁

排它锁 eXclusive lock,又简称为:X锁 必须维持到事务T的执行结束
共享锁 Sharing lock,又简称为:S锁 不必维持到事务T执行结束(依封锁协议而定)

数组。共享锁计数器。锁表:记录当前封锁的持有情况、申请情况。事务角度。封锁管理器来管。

调度器决定申请什么锁,封锁管理器负责管着给不给锁

封锁协议
一级:写前X,维持到事务结束,可能脏读
二级:一级,且读前S,读后随时可以释放,可能不可重复读
三级:一级,且读前S,维持到事务结束,可重复读

两阶段封锁协议 2PL:所有的封锁请求都先于所有的解锁请求【单个事务角度】
合法调度:基于前述的三级封锁协议和两阶段封锁协议的要求,很复杂总之已经是终极规范状态了【多个事务调度角度】

定理: 由2PL事务所构成的任意合法调度S都是冲突可串行化的

意向锁:解决封锁粒度问题的
如果对一个结点加‘意向锁’,则说明该结点的下层结点正在被加锁。
对任一结点加锁时,必须先对它的上层结点加‘意向锁’。
意向共享锁(IS锁)
意向排它锁(IX锁)
共享意向排它锁(SIX锁):对结点本身加‘S锁’,并准备在N的某些后裔结点上加‘X锁’
意向锁的引入可以帮助其他事务更好地了解当前事务的锁定意图,从而减少不同粒度锁之间的冲突,提高系统的并发处理能力。

"意向"这个词很准,要想清楚,两个都只是想加是不矛盾的

活锁死锁

数据库恢复技术-转储

动态转储。发现需要日志。。。

数据库恢复技术-日志

undo日志的记录格式
开始一个事务:<Start T>
提交事务T:<Commit T>
放弃事务T:<Abort T>
更新记录:<T, X, V> 事务T修改了数据库元素X的值,而X的旧值是V

undo日志记载规则
U1:如果事务T修改了数据库元素X,则更新日志 <T,X,V>必须在X的新值写到磁盘前写到磁盘【备份好了才允许你改】
U2:如果事务T提交,则日志记录<Commit T>必须在事务T改变的所有DB元素已写到磁盘后再写到磁盘【确认好了再commit】
新增操作Flush Log 将保存在内存中的日志记录全部写到日志文件的磁盘中去

故障在不同情况下的恢复很重要。日志的记载规则决定了恢复能够顺利进行。
检查点<CKPT>,插入时要等待所有事务完活,刷新日志后,写入<CKPT>并再次刷新日志。
非静止检查点:
1.写入日志记录<Start CKPT(T1,…,Tk)>,并刷新日志【其中:T1,…,Tk是当前所有活跃事务的标识符】
2.等待T1,…,Tk中的每一个事务的提交或中止,但允许开始执行其它新的事务
3.当T1,…,Tk都已经完成时,写入日志记录<End CKPT>并刷新日志
回头扫描,没commmit的操作都要恢复。如果先遇到End,恢复到Start即可(这是因为start和end之间可能启动了新的事务没有commit,要撤销)。如果先遇到Start,要恢复,直至T1,...,Tk的访问操作全部撤销。(说白了就是恢复所有没commit的)

redo日志的记录格式
<T, X, V>中V是更新后的值
记载规则
R1:在修改磁盘上的任何数据库元素X之前,要保证所有与X的这一修改有关的日志记录(包括更新记录
<T,X,V> 和提交记录 <Commit T>)都必须出现在磁盘上。
故障在不同情况下的恢复很重要。
恢复的时候,如果是日志觉得已提交,那就认为做完了,逐步恢复,写入新值V。
如果日志没有事务结束标志,说明数据修改压根就没写入磁盘。不用管。
妙啊,妙啊。
非静止检查点:
1.写入日志记录<Start CKPT(T1,…,Tk)>,并刷新日志;同时获取所有已提交事务组成的集合S。
2.将集合S中的事务已经写到内存缓冲区但还没有写到数据库磁盘的数据库元素写入磁盘;
3.写入日志记录<End CKPT>并刷新日志,不必等待事务T1,…,Tk或新开始事务的结束。
恢复时,正向扫描,找到最后一个被记入日志的<End CKPT>(记为记录t),假设与之相对应的检查点记录是<Start CKPT(T1,…,Tk)>(记为记录t’),并找到最早出现的<Start Ti>(记为记录ti) 故障恢复方法如下:针对事务T1,…,Tk以及在t’之后开始的那些事务,重做其中已经被提交的事务

undo与redo日志的不足
Undo日志要求数据在事务结束后立即写到磁盘,可能增加需要执行磁盘I/O的次数
Redo日志要求事务提交和日志记录刷新之前将所有修改过的数据保留在内存缓冲区中,可能增加事务需要的平均缓冲区的数量
如果被访问的数据对象X不是完整的磁盘块,那么在undo日志与redo日志之间可能产生相互矛盾的请求

undo/redo日志,最自然的一集
<T,X,v,w>不仅记录更新前的值v,同时也要记录更新后的新值w
故障在不同情况下的恢复很重要。
UR1:在由于某个事务T所做的改变而修改磁盘上的数据库元素X之前,更新记录<T,X,v,w>必须出现在磁盘上。
其中,v是X被更新前的值,w是X被更新后的值。
UR2:在每一条 <Commit T> 后面必须紧跟一条Flush Log 操作
非静止检查点:
1.写入日志记录<Start CKPT(T1,…,Tk)>,并刷新日志
2.将所有被修改过的缓冲区写到数据库的磁盘中去 写入日志记录<End CKPT>并刷新日志
恢复时先找检查点,然后先undo再redo。特别注意没有end的情况

不管什么日志,最后别忘了加Abort

一个误区的解释:redo和undo/redo日志写入日志记录<End CKPT>并刷新日志 不必等待事务T1,…,Tk或新开始事务的结束

第七章 数据库的物理组织

基本结构

第一级:主存储器:cache和memory
第二级:磁盘存储器
第三级:辅助存储器:光盘、磁带...

索引技术与散列技术

磁盘IO次数要会估计!

顺序文件

索引文件
在顺序文件上的索引技术(无重复键值):
稠密索引:数据文件中的每条记录在索引文件中都存在一个相对应的索引项
数据查找的速度快原因是:索引文件使用的磁盘块比数据文件的少,因此磁盘I/O的时间开销小;索引文件中的索引项被按照索引关键字的值进行了排序,因此在索引文件中可采用二分查找法来提高查找速度;索引文件可能足够小,可以放在内存中操作,从而不必访问磁盘。
磁盘IO次数别忘了+1。
稀疏索引:注意只能在顺序文件上用!!!
注意到一个数据块会存多个记录。稀疏索引索引文件中只为数据文件的每个磁盘块设一个索引项,记录该磁盘块中第一条数据记录的关键字值及该磁盘块的首地址。
多级索引
直接建立在数据文件上的索引称为第一级索引,根据第一级索引文件建立的索引称为第二级索引,第二级索引开始建立的都是稀疏索引。
索引文件在内存,只需要2次磁盘I/O操作。
稠密索引 与 稀疏索引 的区别
定义不同、能不能用于非顺序文件、需要的磁盘空间大小不同、对不存在的记录是否需要额外的磁盘I/O操作

具有重复键值的索引:
顺序文件上稠密索引:只记录关键字相同的一大堆记录里的第一个
顺序文件上稀疏索引:和普通版本一样,每个磁盘块建一个记录。只不过查的时候比较麻烦。
非顺序文件中的索引技术:在第一级的稠密索引和数据文件之间加一个记录指针桶(bucket)。此时索引项(Ki,Pi)中的记录指针Pi不再是指向数据文件中的记录,而是指向一个记录指针桶,在桶中存放着索引关键字值为Ki的记录的记录指针。

多维索引:根据多个属性值的组合来建立的索引文件

B/B+树文件

索引顺序文件的不足:
记录查找算法的效率不高(log2N);
索引文件自身的维护非常复杂,对索引项的插入、修改和删除操作会导致索引项在索引文件中的大量移动;
如果通过引入链接磁盘块的方法来减少索引项的移动,又会减低存储空间的利用率。

故引入B/B+树。叶结点所构成的最下面的一级索引通常采用稠密索引,而其它层次上的索引则采用稀疏索引。
B+树特点:平衡性、过半性、顺序性(叶子节点)、自适应性。
每个结点占用一个磁盘块,每棵B+树都有一个被称为秩的整型参数 n,每个结点能容纳 n 个键和 n+1 个指针,我们将 n 取得尽可能的大,以便在一个磁盘块中存放更多的索引项。
根节点不要求过半,叶子节点严格过半,内部节点n除以二。

B+树上的搜索算法:
注意范围怎么查找?脑中有图!

B+树上的插入算法:
怎么分裂的?
注意我们通常把相等的情况划到右边,即右边的节点更多,这也导致分裂的时候右边多分一点。
这么一看也不难啊,,,

B+树上的删除算法:
怎么要饭、合并的?

随机查找的效率每次所需要的磁盘I/O次数等于B+树的高度
空间利用率超过50%

B+树与B树的区别:

  • 组织方式不一样:B+树所有有效的索引关键字值都必须存储在叶结点中,B树可以出现在B树的任意一个结点中。
  • 内部结点不同: B树除了关键字值和子树指针还有记录指针,因此B树结点的扇出(即一个结点可以拥有的最大子结点数目)较小,从而导致整个B树的高度大于B+树的高度。
  • 随机查找效率的区别B+树:所有关键字的查找速度基本一致B树:依赖于关键字所在结点的层次
  • 在B树中没有提供对索引关键字的顺序扫描功能。
  • B树的插入、删除操作较B+树复杂。

HASH文件

一个桶可以存放多条记录(或记录指针)
散列函数 h(Ki) 以建立数据文件中指定项的值与桶(桶地址)之间的对应关系
当一个桶的空间溢出时,需要通过链接的方法申请“溢出桶”与其相连,以达到扩大桶空间的目的

散列索引

位图索引

多属性索引。要知道位图怎么看。

数据库与文件

第八章 关系数据库的规范化理论

设计指标

三个方面来比较这两个数据库:数据冗余度元组插入操作元组删除操作
好的设计方案应该是:既具有合理的数据冗余度,又没有插入和删除等异常现象的出现。

函数依赖

如无特殊声明,凡提到函数依赖时总认为指的是非平凡的函数依赖。
完全函数依赖与部分函数依赖
传递函数依赖与非传递函数依赖

完全函数依赖对应关键字
主属性集(不是只看主键哦,是所有关键字的属性并集)与非主属性集

属性集的闭包\(X^+\),算法是自然的。【算法1】
关键字的闭包是全集,而且关键字真子集的闭包不是全集,因此属性集闭包算法可以确定关键字。算法也是自然的(遍历属性,尝试从全集中删掉属性,剩下属性构成的集合求闭包,如果不是全集就换一个属性,如果是全集就试着接着删)【算法2】

Armstrong公理系统

基本规则(3条)自反规则(平凡函数依赖),增广规则(加条件),传递规则(字面意思)
扩充规则(3条)分解规则,合并规则,伪传递规则

该公理系统也有它自己的逻辑蕴涵概念
进而产生函数依赖集的闭包,记作 \(F^+\)

范式

第一范式(1NF) 关系模式 R(U) 中的每个属性值都是一个不可分割的数据量
第二范式 (2NF) 关系模式 R(U) ∈ 1NF,且其每个非主属性都完全函数依赖于关键字
第三范式 (3NF) 关系模式 R(U) ∈ 2NF,且其每个非主属性都不传递函数依赖于关键字
BCNF 关系模式 R(U) ∈ 1NF,且若 X->Y 时 X 必包含有该关系模式的关键字

分解到2NF

函数依赖集F中找出所有不满足2NF要求的函数依赖,选一个割裂出来,重复这个过程,最后合并关键字相同的关系【算法3】

最小函数依赖集

最小函数依赖集的判定条件:依赖因素 A 为单个属性;不存在冗余的函数依赖关系;不存在部分函数依赖关系
计算算法:拆,看是否部分依赖【这里很容易错!!!】,看是否函数依赖,合【算法4】

模式分解

无损联接性 分解后,原关系中的信息不会被丢失
如果不具有无损连接性,\(r \subset \pi_{R 1}(r) \infty \pi_{R 2}(r) \infty \ldots \ldots \infty \pi_{R k}(r)\)
如果R的分解为 = {R1,R2},F为R所满足的函数依赖集合,分解具有无损联接性的充分必要条件是:
\(R_{1} \cap R_{2} \rightarrow\left(R_{1}-R_{2}\right) \text { 或 } R_{1} \cap R_{2} \rightarrow\left(R_{2}-R_{1}\right)\)

依赖保持性 原有的函数依赖关系在分解后的关系模式上依然存在

在必须同时满足无损联接性和依赖保持性的要求下,一个关系模式最高可以被分解到满足第三范式。
1.计算F的最小覆盖。
2.写出R的所有关键字。
3.按左部相同原则分组,将具有包含关系的元组进行合并,最后,判断分解后的关系模式中是否含有码,若含有则为无损连接且保持依赖的3NF,否则不是无损连接,此时需要新建一个关系模式,将码放入其中才能保证无损连接性。
【算法5】

第九章 数据库设计

数据库设计的基本任务

根据用户对象的信息需求、处理需求和数据库的支持环境(包括硬件、操作系统与DBMS)设计出数据模式。

信息需求:用户的数据、结构及其要求
处理需求:用户对数据的处理过程和方式

数据库设计即是在一定平台制约下,根据信息需求与处理需求设计出性能良好的数据模式。

数据库的生命周期

T=8
需求分析
概念设计
逻辑设计
物理设计
编码
测试
运行
进一步修改

其中,前四个是数据库设计的四个阶段。

数据库设计的需求分析

数据库的概念设计

过程:用户分解-视图设计-视图集成

其中,视图设计分为实体与属性设计、联系与继承设计。注意继承是一种特殊的联系。

继承符号方向:记住是“分为”,即父亲指向儿子

数据库的逻辑设计

!联系的转换!
两个实体集之间的一个二元联系,可以根据该联系的函数对应关系,以及每个实体参与该联系的参与方式将其转换成1、2或3个关系模式。

具体略,但这个非常重要要记得准确无误。
1:1 夫妻 3-2-1个
1:n 师生 3-2个
m:n 3个

单个实体集内部的转化,记得可以合并。
1:1 班级内nnpy 1个模式
1:n 班级内小组长和组员 1个模式
m:n 班级内阵营双方对手关系 2个模式

继承的转换
转换方式1:每一个实体集都将被转换为一个关系
转换方式2:只有最底层的叶子结点才会被转换为关系,并从其所有超实体集中继承属性。
转换方式3:被转换为单个关系,其中含有所有实体集中的属性。【union?】

数据库的物理设计

索引、集簇、哈希

不会这也考吧系列

1.BCNF一定是3NF的证明过程

2.分解到BCNF

先求最小依赖集。然后把关键字拆出来,把不含任何主属性的拆出来,剩下的如果满足条件就结束,否则重复这个过程。

3.重复键值稀疏索引查找算法

4.存储结构、存取路径、集簇、索引

5.视图的更新

posted @ 2024-06-18 00:34  藤君  阅读(39)  评论(0)    收藏  举报