数据库原理之关系与设计理论

一、关系模式

关系模型允许定义三类完整性约束:实体完整性、参照完整性、用户自定义的完整性约束

实体完整性:主键不能为空,外键可以为空

二、关系运算

1、 传统的集合运算
(1) 笛卡尔积
行相加,列相乘
(2) 并
并运算会取消重复行
(3) 差
(4) 交
2、 专门的关系运算
(1) 选择
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例1:查询数学系学生的信息。
σdep=‘数学’ (student) 或 σ5=‘数学’ (student)
例2 :查询年龄大于17的女同学的信息。
σ age>17∧sex=’女’ (student) 或
σ 4>17 ∧ 3=’女’(student)
(2) 投影(选择若干列组成新的关系)
投影运算后行可能减少,因为取消了某些列,就可能出现一些重复行
例2:查询课程表中的课程名和课程号。πcname,cno(course) 或 π2,1(course)
在这里插入图片描述
(3) 连接
在这里插入图片描述
在这里插入图片描述

三、 函数依赖

1、 平凡函数依赖和非平凡函数依赖
设关系模式R(U), X、 Y⊆ U;
如果X→Y, 且Y ⊆ X, 则称X→Y为平凡的函数依赖。
如果X→Y, 且Y不是X的子集, 则称X→Y为非平凡的函数依赖。
例:
在学生课程关系(学生号,课程号,成绩)中,若存在函数依赖:
(1)(学生号,课程号)→成绩;
(2)(学生号,课程号)→ 课程号;
(1)为非平凡函数依赖(2)为平凡函数依赖
2、完全函数依赖和部分函数依赖
定义:设关系模式R(U),X,Y⊆U;
如果X→Y, 并且对于X的任何一个真子集Z, Z→Y都不成立, 则称Y完全函数依赖于X。
若X→Y, 但对于X的某一个真子集Z, 有Z→Y成立, 则称Y部分函数依赖于X。
例:在学生课程关系(学号,课程号,成绩)中,主码为(学号,课程号)。
因为学号→成绩不成立,课程号→成绩也不成立,所以(学号,课程号)→成绩为完全函数依赖。
又例:在选课关系(学号,课程号,姓名,成绩)中,(学号,课程号)是主码。
由于:学号→姓名成立,因此:姓名部分函数依赖于(学号,课程号)。
3、 传递函数依赖

四、 关系规范化

关系模式规范化的目的是解决关系模式中存在的数据冗余、插入和删除异常以及更新异常等问题。
基本思想:消除数据依赖中的不合适部分,即模式分解。
关系数据库中的关系必须满足一定的规范化要求,对于不同的规范化程度可用范式来衡量。
1、 第一范式
每个属性的值域都是不可分的简单数据项(原子)的集合
2、 第二范式
在第一范式基础上,且每个非主属性都完全函数依赖于码(不存在真子集)
(1)主关键字只有一个属性的关系一定是第二范式。
例如:关系R(学号,姓名,性别,出生日期,成绩)首先要确定此关系中的最小函数依赖集。什么是最小函数依赖集F?
①F中任何一个函数依赖的右部仅含有一个属性(非主属性)。
②F中的所有函数依赖的左边都没有冗余属性。
③F中不存在冗余的函数依赖。
(2)主关键字是属性的组合,这样的关系模式可能不是第二范式。
(3)存在非主属性部分函数依赖于码,故关系S不属于2NF
3、 第三范式
在第二范式的基础上,且没有一个非主属性是传递函数依赖于码(不存在非主属性)
在这里插入图片描述
推论1:
如果关系模式R∈1NF,且它的每一个非主属性既不部分依赖、 也不传递依赖于码 ,则R∈3NF。
推论2:
不存在非主属性的关系模式一定为3NF。
4、 规范化过程
关系模式规范化的基本步骤总结:
(1) 对1NF关系进行投影,消除原关系中非主属性对码的部分函数依赖,从而产生若干个2NF的关系。
(2) 对2NF关系进行投影,消除原关系中非主属性对码的传递函数依赖,从而产生若干个3NF的关系。
(3) 对3NF关系进行投影,消除原关系中主属性对码的部分函数依赖和传递函数依赖,得到一组BCNF的关系。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值