数据库设计二《函数依赖和三范式》
来源:互联网 发布:图表数据区域格式 编辑:程序博客网 时间:2024/06/04 22:46
函数依赖:
定义:R(U)是在属性集U上的关系模式,X,Y是U的子集。若对于R(U)的任意一个可能关系r,r中的不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y,或者Y函数依赖X,记作X--->Y。
单纯的概念有点难以理解,通过例子1:属性集U,关系模式R(U),子集X,Y,可能关系r1。
可以理解为X能唯一确定Y,则X--->Y。常用为主键------>其他属性
函数依赖和三范式
函数依赖的分类:完全依赖,部分依赖,传递依赖。
完全依赖和一范式
完全依赖:X--->Y。Y只能有X推到出来
例子2:选课关系(学号,课程号,成绩)
(学号,课程号)--->成绩
一范式:主要确定属性的原子性,每个属性不可再分。
例子3:职工号,姓名,电话号码组成一个表(电话号码有包括手机号,家庭号码)
修改方法:1、新建一个表,职工号为主键,添加手机号和家庭号码两个属性。
2、强制只能选择一个号码属性。
二范式消除部分依赖
部分依赖:X--->Y Y除了能有X推到出来外还可以有其他属性推到出来。
例子4:选课关系(学号,课程号,成绩,课程名)
(学号,课程号)--->课程名, 课程号--->课程名
二范式:非主键属性完全依赖主键,二范式的作用主要是消除部分依赖。
例子4可以改为两个关系模式:选课关系(学号,课程号,成绩,课程名)
课程关系(课程号,课程名)
主键是组合属性的时候容易出现部分依赖,主键是单个属性的时候只要符合第一范式就会符合第二范式。
三范式消除传递依赖
传递依赖:X--->Y 、Y--->Z 则X--->Z
例子5:选课关系(学号,姓名,专业号,专业名,所属学院号)
学号--->专业号,专业号--->专业名。
三范式:在符合二范式的基础上,没有非主属性传递依赖函数。
例子5解决方法:转换成两个关系模式,消除传递依赖。
选课关系(学号,姓名,成绩)
专业关系(专业号,专业名,所属学院号)
三范式作为数据库设计的一个标准,确保非主键属性都完全依赖主键属性。
- 数据库设计二《函数依赖和三范式》
- 函数依赖和数据库范式
- 数据库设计 第一范式 二 三 INF 2NF 3NF 区别 详解 传递依赖
- 数据库函数依赖和范式理论学习总结
- 数据库函数依赖、范式
- 关系数据库设计范式------第一,二,三范式
- 数据库,部分函数依赖,传递函数依赖,完全函数依赖,三种范式的区别
- 三范式数据库设计和反范式的思考(转)
- 三范式数据库设计和反范式的思考(转)
- 数据库设计三范式
- 数据库设计三范式
- 数据库设计三范式
- 数据库设计三范式
- 数据库设计 三范式
- 数据库设计 三范式
- 数据库设计三范式
- 数据库设计三范式
- 数据库设计三范式
- telnet命令行使用
- 黑马程序员——多线程
- App工程结构搭建:几种常见Android代码架构分析
- 何新生的英语史(一)—蹉跎岁月
- 我要驯服java
- 数据库设计二《函数依赖和三范式》
- Python 批量分析windows程序崩溃捕获的dump文件
- AMQP协议简介
- ubuntu linux 12.10 无线网络掉线 解决办法
- Transition的用法
- 机房收费系统重构(3)——未处理FileNotFoundException
- Regular Expression Matching Leetcode Java
- 用Java搭建微信公众号(一)构建基础请求框架
- 北航校赛2014 决赛 题解