前言
本文针对考纲上的关系理论范式所涉及到的题型进行归纳总结。
题型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,有就是无损。