Skip to content

Database2

否具有函数依赖保持性### 数据库原理(2)复习

分数分布

Components Percentage
规范化设计 44%
数据库设计 5%
数据库管理 38%
对象关系数据库 11%
/ 2%

规范化设计

关系模式的设计问题

一个关系模型包括(外延)和(内涵)两个方面的内容

  • 外延:关系、表、当前值
  • 内涵:对数据的定义以及对数据完整性的约束

实际使用时,用关系模式的集合\rho = \{R_{1},..,R_{k}\}来代替R(U)\rho称为数据库的模式,关系rR的任意具体值,称为泛关系模式

关系模式的冗余和异常问题:

  • 数据冗余大
  • 插入、修改与删除异常
函数依赖

函数依赖的定义:

  • rR的任一具体关系,对r的任意两个元组uv,由u[x]=v[x]导致u[y] = v[y]那么x \to y

候选码求解算法

  • 将R所有属性分为L、R、N、LR四类,令X = {L、R},Y = {LR}
  • 求X的闭包
  • 在Y中选取任意组合属性y_{i},求闭包(Xy_{i})的闭包

属性集闭包求解算法:

  • X_{0} = X
  • $X_(i+1) = X_{i} \cup A,A为使用X_{i}的新增依赖 $
  • X_{i+1} =X_{i}退出

FD的最小依赖集

  • 任一函数以依赖右部为单属性
  • F中任一函数依赖X\to A,不存在F-\{X\to A\}等于F:每个函数依赖左部没有多余的属性
  • F中任一函数依赖X\to A,X的任一真子集Z,不存在F-\{X\to A\}\cup\{Z\to A\}等于F:不存在多余的函数依赖

求FD最小依赖集的步骤:满足FD最小依赖集的定义即可

  • 满足(1):应用分解规则
  • 满足(2):应用伪传递
  • 满足(3):应用传递性
关系模式的分解特性

无损分解:原关系模式下的任一合法关系实例,在分解后,应能通过自然连接运算恢复起来。

无损分解的测试方法:

  • 构造初始表
  • 反复检测:若A\to C,那么将A列中相同的列,把C中对应的列改成相同的符号

无损分解的充分必要条件(只对元素个数为2⃣️的分解有效):

  • R_{1}\cup R_{2} \to R_{1}-R_{2}R_{1}\cup R_{2} \to R_{2}-R_{1}

测试分解\rho是否具有函数依赖保持性

  • 对于z \in F = \{f_{0},f_{1},…,f{n-1}\},求\pi_z(F) = \{X\to Y | X\to Y \in F^+ \and XY \subseteq z\}
  • 如果\left[\bigcup_{i=1}^k \pi_{z_{i}}(F)\right]^+ = F^+那么成功
关系模式的范式

intro:

  • 1NF:不存在多值属性

  • BCNF:R中每个属性都不传递依赖于R的候选键

  • F 中的每个非平凡的函数依赖 X → Y,都有 X是 R 的超键

    • \rho={R}
    • 检查\rho中各关系模式是否均属于BCNF,若是结束
  • \rho中Ri(Ui)不属于BCNF,那么必有X→A∈Fi+但X非Ri的超键,对Ri进行分解 为\rho={XA,U-{A}},U=U-{A}转到(2)

  • 2NF:非主属性完全依赖于某个候选键

  • 3NF:非主属性不传递依赖于某个候选键
  • F_{\min},合并左部相同的依赖
  • 对每个X\to Y构成一个模式XY
  • 如果都不包含候选键,那么加入候选键

好的模式设计方法应符合三个原则:

  • 表达性
  • 分离性
  • 最小冗余

#From Prof.Li's slides, start here.

第七章:数据库设计

数据库设计概述

数据库设计(Database Design,简称 DBD) 是指在给定的或待定的软硬件环境下,针对实际的问题和用户需求,设计一个较优的数据模型,建立DB结构和DB应用系统

计算机信息系统以数据库为核心,在数据库管理系统的支持下, 进行信息的收集、整理、存储、检索、更新、加工、统计和传播等操作。

需求分析

步骤:

  • 用户活动图
  • 系统范围图
  • 数据流图
  • 数据字典

****需要fine-grain

第八章:数据库管理

事物概念

ACID:

  • Atomicity:原子性
  • Consisitency:一致性
  • Isolation:隔离性
  • Durability:持久性
故障恢复

检查点机制:

  • 在检查点时刻才真正做到把对DB的修改写到磁盘,并在日志文件写入一条检查点记录
  • 检查点方法的恢复算法:
  • 从头扫描日志文件,找到故障发生前最后一个检查点记录
  • 由该检查点记录得到检查点建立时刻所有正在执行的事务清单,把他们暂时放入撤销队列
  • 从检查点开始正向扫描日志文件,如有新开始事务放入撤销队列;如有提交的事务从撤销队列移到重做队列,直到日志文件结束
  • 对撤销队列的每个事务执行UNDO操作;对重做队列的每个事务执行REDO操作
数据库的并发控制

封锁机制

  • X锁:写锁,XFIND
  • S锁:读锁,SFIND,UPDX

并发调度可串行化

  • 串行调度:让多个事物依次执行
  • 并发调度
  • 如果一个并发调度与某一串行调度具有相同的执行结果,那么称这个并发调度是"可串行化的调度"

触发器

用户权限

  • ```mysql 授权语句: GRANT <权限表> ON <数据库元素> TO <用户表> [WITH GRANT OPTION] eg: GRANT SELECT, UPDATE ON S TO WANG WITH GRANT OPTION eg: GRANT REFERENCES (CNO) ON C TO BAO WITH GRANT OPTION eg: GRANT INSERT(SNO,PNO,JNO) ON SPJ TO LOU WITH GRANT OPTION

回收语句: REVOKE <权限表> ON <数据库元素> FROM <用户表> [RESTRICT | CASCADE] eg: REVOKE SELECT, UPDATE ON S FROM WANG CASCADE ```

对象关系数据库

ORDBS:Object-Relational Database Systems(SQL3)

OODBS:Object-oriented databases

****未完..