数据库复习(范式)

发布时间 2023-12-16 20:59:21作者: lmj625

前言

本文针对考纲上的关系理论范式所涉及到的题型进行归纳总结。



题型1:候选码判别

就是一个个试,求闭包,看能不能求出所有元素。候选码可能有多个。


题型2:范式判别

  • 1nf 最低 不存在表里的一个列由多个小列组成
  • 2nf 先要是1nf 不存在非主属性对组合主键的部分依赖
  • 3nf 先要是2nf 传递依赖 直接看图
图片名称
  • bcnf 先是3nf 要求每一个决定子都大于等于候选码, 比如候选码是sno和cno时,关系中有sno->sname,决定子sno小于码(sno,cno),不是bcnf。

题型3:异常问题(必背)

当一个关系模式不够规范,那么就会存在数据冗余,插入异常,修改异常,删除异常。


题型4:求最小函数依赖集(函数依赖最小化)

  • 1,把右侧元素拆成单一元素
  • 2,把多余的关系删掉(挨个尝试删掉关系,然后求这个关系的决定子闭包是否包含右侧,包含就是多余关系)
  • 3,把多余决定子删掉,比如AB->C 考虑闭包存不存在B->C的关系,有就要删掉决定子里的A

题型5:保函数依赖和无损连接地分解成3nf

  • 1,求最小函数依赖集
  • 2,把左侧一样右侧不一样的合并
  • 3,分解 比如上一行得到A->BC和E->DF,F->D(候选码为G) 那么就分解成(A,B,C)(E,D,F) (F,D) (G)要记得补上主码
  • 4,删掉有包含关系的,比如(E,D,F)和(F,D),需要删掉后者

题型6:验证保函数

就是求最后分解得到的函数依赖并集,和原先函数依赖集差在哪里,在分解后的关系依赖集求那个不见了的关系的闭包。


题型7:验证无损

画表法。你分解出了几个关系就有几行,有多少个属性就有多少列,然后一行一行来,关系里有的填a,下标是列数,没有的填b,下标是行号+列号。
图片名称

然后开始推理,还是一行行来,根据所有的函数依赖,能推理出来的属性(求闭包)把b改成a,(有时候可能往后推着推着还要回头看看,可能又满足新的函数关系,还可以接着推)最后看看有没有一行全是a,有就是无损。

图片名称