TYUT太原理工大学2022数据库大题之分解关系模式
题型四
分解关系模式:考点:关系模式的基本函数依赖、关系候选键、关系属于第几范式、
关系属于第几NF、分解NF模式集(10分)
要掌握本题首先要掌握很多基本概念,我们来浅看一下吧,只讲要考的和做题会用到的、我不讲书上的官方话了,怎么好理解怎么来
一、基本概念
1、函数依赖(FD):函数依赖是同一关系内部属性与属性之间的约束关系,也就是在R(A1,A2...)中讲A1与A2的关系之类的,比如设属性学号为X、姓名为Y,由于学号可以决定姓名,则有X决定Y或者说Y依赖于X,记作:X->Y
2、FD集(函数依赖集):将多个FD放到一起即可:如函数依赖集F={A->B,B->C,A->C},有集合就会出现蕴含关系,于是F逻辑蕴含X->Y,记作:F|=X->Y
3、超键:设某一关系R的属性集为U,X是U的子集,如果U中的部分属性X可以决定U,即X->U,那么称X是R的一个超键(去掉超键中的任何一个属性,X->U依旧可能成立)
4、候选键:在超键中,如果去掉超键中的任何一个属性,X->U就会不成立(也就是该超键中无冗余属性),那么称此超键为候选键
5、L类:F={A->B,B->C,A->C}中所有->左边的属性,即A、B
6、R类:F={A->B,B->C,A->C}中所有->右边的属性,即B、C
7、最小函数依赖:题出的难点的话,会考到,但近两年大题中未见,是考点,想学的可以自己看看书,这里就不讲了
8、关系模式的分解:我们可以将R(A1,A2,A3,A4)分解成R1(A1,A2),R2(A3,A4)
9、完全函数依赖:有属性集X和属性集Y,对函数依赖X->Y,去掉X中的任何一个属性,X->Y就不成立(也就是该X中无冗余属性),那么Y完全函数依赖于X,否则称局部依赖
10、非主属性:是指关系中不包含在任何一个候选码中的属性。 例如:在关系——学生(学号,姓名,年龄,性别,班级)中,主属性、候选码是“学号”,那么其他的“姓名”、“年龄”、“性别”、“班级”就都可以称为非主属性
(类似判定候选键,都是看依赖关系中的L类是否有冗余属性)
11、大题中会出现的传递依赖:有候选键X、非主属性Y、A,若X->Y,Y->A,Y!->X,A不属于Y,那么称X->A是传递依赖(A传递依赖于X)
二、关系模式的范式
范式之间存在包含关系:1NF包含2NF包含3NF包含BCNF
1、第一范式(1NF)
只要关系模式R(A1,A2...)中所有属性A1、A2......都是不可再分的属性,都是原子属性,那么就满足第一范式
对不满足1NF的关系模式R,我们要将R变成满足1NF的关系模式:要么分解其非原子属性,要么分解其关系模式,一般题目中给你都满足1NF
2、第二范式(2NF)
若关系模式R是1NF,且每个非主属性完全函数依赖于候选键,则R为第二范式(2NF)
判断是否是2NF:将候选键(大题中常见的候选键一般包含2个属性)依次去决定每一个非主属性,判断函数依赖右侧(L类)是否有冗余属性,若没有,则符合2NF ,反之不符合
对不满足2NF的关系模式R,我们要将R变成满足2NF的关系模式:其实就是个简单分类,我们把R分解成R1、R2.......将与候选键发生冗余现象的非主属性、及其对应候选键放在R1中;将与候选键未发生冗余现象的非主属性、及其对应候选键放在R2中。我们看个例子理解一下:
例:设某关系R(客户编号,购买商品的编号,数量,生产企业的名称,企业地址),判断R是否属于2NF,如果R不属于2NF,请将R分解为第2NF模式集
解:候选键为客户编号,购买商品的编号,有(客户编号,购买商品的编号)->(生产企业的名称,企业地址),由于单个属性“购买商品的编号”就可以决定“生产企业的名称,企业地址”,所以存在非主属性局部依赖于候选键的情况,R不属于2NF
将R分解为第2NF模式集思路(卷子上不写,只在草稿纸上写) |
![]() |
将R分解为第2NF模式集为:
R1(购买商品的编号,生产企业的名称,企业地址)
R2(客户编号,购买商品的编号,数量)
3、第三范式(3NF)
温习一下:11、大题中会出现的传递依赖:有候选键X、非主属性Y、A,若X->Y,Y->A,Y!->X,A不属于Y,那么称X->A是传递依赖(A传递依赖于X)
若关系模式R是2NF,且每个非主属性都不传递依赖于候选键,则R为第三范式(3NF)
判断是否是3NF:就是根据定义,看在关系模式中是否存在非主属性传递依赖于候选键的现象。
对不满足3NF的关系模式R,我们要将R变成满足3NF的关系模式:
如在R(X,Y,A,B,C)中,候选键为X、非主属性为Y、A、B、C,存在X->Y,Y->A,Y!->X,A不属于Y(即X->A,A传递依赖于X),那么仅需将R分解为R1(X,Y,B,C),R2(Y,A)即可满足3NF,可以理解为R1只去掉了位于传递位置末尾的Y,R2只保留了与候选键发生传递依赖的两个非主属性Y,A
看一道例题理解一下
例:有关系模式:读者(读者号,姓名,单位,地址),其中每个单位只有一个地址,请将其规范化为3NF
解:
由题意知:读者号->单位->地址
读者1(读者号,姓名,单位)只去掉了位于传递位置末尾的地址
单位(单位,地址)只保留了与候选键发生传递依赖的两个非主属性:单位,地址
真题:
TYUT太原理工大学2022数据库大题之分解关系模式相关推荐
- TYUT太原理工大学2022数据库大题之概念模型设计
题型二 题中给出对某数据库的一段描述,让画该数据库的E-R图,并在图上注明属性.联系的类型 ("并在图上注明属性.联系的类型"考试出现这句话,就当他没有:因为属性就是椭圆,类型就是 ...
- TYUT太原理工大学2022数据库题库选择题总结
第1章 一.单选题 1.数据库(DataBase,DB)是存储在计算机上的( 结构化的)相关数据集合. 2.反映现实世界中实体及实体间联系的信息模型是( 实体联系(ER)模型 ) 3.学生实体( ...
- TYUT太原理工大学2022操作系统学习通总结
第1章 选择 (高级程序设计语言的编译器)不是操作系统关心的主要问题 多道批处理系统的主要缺点是( 缺少交互性 ) 在操作系统中,( 进程通信服务例行子程序 )部分属于微内核 通常在分时系统中运 ...
- TYUT太原理工大学2022“mao gai”必背
老师说只考课后题,只能从课本中总结,因为我不想背太多,所以我只总结了要点,浅参考一下吧 涉及......的东西,为了过csdn审核,所以发百度网盘链接 链接:https://pan.baidu.com ...
- 数据库大题——学生课程查询
遇到一道数据库大题,考察SQL语句基础,很有代表性,决定记下来. 数据库 student--学生表 字段名 注释 类型 id 学号 bigint(20) name 姓名 varchar(32) cit ...
- 太原理工大学软件学院数据库实验四(2021.4.26)
太原理工大学软件学院数据库实验四(2021.4.26) -- (1)创建Student 表 CREATE TABLE Student ( Sno CHAR(8) PRIMARY KEY, Sname ...
- 太原理工大学软件学院 数据库实验 实验二(2021.4.8)
太原理工大学软件学院 数据库实验 实验二(2021.4.8) 实验内容 以下内容直接全部复制到console窗口即可 需要逐句运行 -- (1)创建Student表 CREATE TABLE Stud ...
- MOOC战德臣数据库课程自用笔记_2_关系模式
关系模式 一. 关系模式研究内容 一个关系就是一个Table 关系模型就是处理Table的,有三个部分: 描述DB各种数据的基本结构形式(Table/Relation) 描述Table与Table之间 ...
- 数据库:第二章 《关系模式》概念总结
一.关系数据结构及形式化定义 1. 关系模式的相关概念: 域: 域是一组具有相同数据类型的值的集合 笛卡尔积: 域上的一种集合运算 其中每一个元素(d1,d2,d3,--dn)叫做一个元祖,元祖中的每 ...
最新文章
- findclass java_Java Context.findClass方法代码示例
- 解决ubuntu上opengl的问题
- 《Dojo构建Ajax应用程序》随书源码
- 电子小帮手电路中的设计原理
- [YTU]_2444( C++习题 对象转换)
- ubuntu16安装mysql8.0
- win7系统如何提高电脑运行速度
- c++ 高效解析url算法
- mysql 并行复制原理_MySQL 5.7 并行复制实现原理与调优
- cocos2dx打飞机项目笔记三:HeroLayer类和坐标系
- Java集合框架和重要接口、类
- 大漠插件最新版7.2111
- SPSS23第二版课后习题答案_全新版大学进阶英语综合教程3 Unit1unit3课后习题答案...
- STM32开发环境安装
- Android设置TabLayout及下划线宽度
- 二进制文件转化成文本文件
- Pluck Cms文件上传结合命令执行复现
- 2018国赛数学建模B题两道工序代码
- 2012科技业大公司与大事件:苹果不再创新垄断(转)(二)
- Java——打印九宫格的算法思路(任意维奇数行方阵)
热门文章
- python怎么安装pymysql_python pymysql安装
- thinkphp5.1获取当前域名的方法
- CS【1】:巴科斯范式(BNF: Backus-Naur Form)介绍与例子
- [AHK]用AutoHotkey实现中银国际通达信版自动登录
- 人工智能基础:迁移学习对抗学习简述
- 算法练习工具之代码对拍
- 娜迦:规范app市场 遏制恶意app的生存空间
- mysql查询第11到20条数据_数据库查询语句怎样查询一个表中的第15到第20条数据...
- c3p0连接池版本错误
- 在c语言中sqrt如何用,sqrt在c语言中怎么用?