数据库复习(范式)
目录
前言#
本文针对考纲上的关系理论范式所涉及到的题型进行归纳总结。
题型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:分解成bcnf#
- 1,任取一个不符合bcnf的函数依赖。我们要把它分成2个关系
- 2,第一个关系是求决定子闭包
- 3,第二个关系是求 决定子 和 (本题所有属性-上一步闭包)取并集
- 4,上面两步的2个关系会产生各自新的码,分别验证是否符合bcnf否则循环以上解法再分解,直到分解成bcnf。
题型7:验证保函数#
就是求最后分解得到的函数依赖并集,和原先函数依赖集差在哪里,在分解后的关系依赖集求那个不见了的关系的闭包。
题型8:验证无损#
画表法。你分解出了几个关系就有几行,有多少个属性就有多少列,然后一行一行来,关系里有的填a,下标是列数,没有的填b,下标是行号+列号。
然后开始推理,还是一行行来,根据所有的函数依赖,能推理出来的属性(求闭包)把b改成a,(有时候可能往后推着推着还要回头看看,可能又满足新的函数关系,还可以接着推)最后看看有没有一行全是a,有就是无损。

综上实践#

3)指出该关系模式存在的问题,最高几范式?
数据冗余,存在删除、插入和修改异常。
作者:lmj00
出处:https://www.cnblogs.com/lmj00/p/17908361.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏