软考数据库-关系模式和关系运算

基本概念

关系模式R(U,F)  -> R关系模式中U为其属性,F为其依赖关系。

函数依赖:X是一个/一组属性,Y是一个/一组属性,如果Y被X所决定,则称Y属性依赖于X;

完全/部分函数依赖:在函数依赖的基础上,如果任何X的子集都无法决定Y,则称Y完全依赖于X,反之为部分函数依赖。

主属性/非主属性:主键中的属性为主属性,反之为非主属性。这个概念在数据库3范式中会用到。

数据库范式

1NF:  属性的原子性,一个属性不可在拆。

2NF: 每个非主属性完全依赖于主键/候选键(组合键),而不是部分依赖于候选键的一部分。

例子:选课关系表(学号、姓名、年龄、课程名称、学分)中候选键为(学号、课程名称)

          学号   <-   (姓名,年龄)

          课程名称     <-   学分

          其中非主属性学分, 姓名和年龄部分依赖于候选键,因此不满足2NF

3NF: 不存在非主属性的依赖传递。非主属性A   <-  非主属性B  <-  主键

 例子: (学号、姓名、年龄、学分、学分是否通过)

            学号   <-  学分  <-  学分是否通过 

BCNF:对于3NF的补充,不存在主属性的依赖传递。

4NF: 不存在非平凡且非函数依赖的多值依赖。(双非一多)

        平凡依赖:若X->Y,且Y是X的子集

        非平凡依赖:若X->Y,且Y不是X的子集

关系模式分解

无损连接:将一个关系模式分解成若干个关系模式后,通过自然连接和投影等运算仍然能还原到原来的关系模式,则称这种分解为无损连接。

考法:

通过依赖关系确认主键/候选键?

1、R上的函数依赖集F={A1A3->A2、A2->A3},R有几个候选键

2、冗余、插入异常、更新异常和删除异常产生的原因?

判断是否是无损连接

1、函数依赖判断便捷法:这种快捷方法是有前提的,前提就是分解后的关系模式只有两个如果R1∩R2 → R1 - R2或R1∩R2 → R2 - R1,则分解是无损连接的。

【例题】
  关系模式R(U,F),其中U={W,X,Y,Z},F={WX→Y,W→X, X→Z,Y→W}。那么p={R1(WXY),R2(XZ)} 分解中是无损分解。

R1∩R2={X},R1-R2={WY},R2-R1={Z},根据函数依赖集,X→Z成立,所以满足条件。


2. 建立表格:通过建立一张i列j行的表,每列对应一个属性,每行对应分解中的一个关系模式。

把表格看成模式R的一个关系,反复检查F中每个FD在表格中是否成立,若不成立,则修改表格中的元素。

修改方法如下:对于F中一个FD:X→Y,如果表格中有两行在X分量上相等,在Y分量上不相等,那么把这两行在Y分量上改成相等。如果Y的分量中有一个是aj,那么另一个也改成aj;如果没有aj,那么用其中的一个bij替换另一个(尽量把ij改成较小的数,亦即取i值较小的那个)。

【例题】
  设关系模式 R为 R(H,I,J,K,L),R上的一个函数依赖集为 F={H→J,J→K,I→J,JL→H},分解 (p={HIL,IKL,IJL}) 是无损连接的。
  试题分析:
  根据上述判断方法,我们列出选项B(分解成三个关系模式R1(HIL)、R2(IKL)、R3(IJL) )的初始表如表3所示:   

  对于函数依赖集中的H→J、J→K对表3进行处理,由于属性列H和属性列J上无相同的元素,所以无法修改。但对于I→J在属性列I上对应的1、2、3行上全为a2元素,所以,将属性列J的第一行b13和第二行b23改为a3。修改后如表4所示:         

  对于函数依赖集中的JL→H在属性列J和L上对应的1、2、3行上为a3、a5元素,所以,将属性列H的第二行b21和第三行b31改为a1。修改后如表5所示:        
  从表5可以看出,第二行为a1、a2、a3、a4、a5,所以分解p是无损的。

小试牛刀

传递函数依赖:候选键:学号; 学号  <- 系号 <- 系名; 不满足3NF,最高属于2NF

S∩D=系号

S-D=学号,姓名,性别,年龄

D-S=系名

系名依赖于系号,S∩D -> D-S因此是无损连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值