关系模式设计的问题

一.关系模式设计的问题 张表
1.假设有描述学生选课及住宿情况的关系模式
S-L-C CSno,Sname,Ssex,Sdept,Slol,Cno,Grade)
主键(Sno,Cno)
2.问题
1.数据冗余问题
数据重复        空间浪费,数据不一致
2.数据更新问题
繁琐,信息不一致
3.数据插入问题
例:新成立一个系,但未召生,Sno.Cno为空,而主键不能为空
4.数据删除问题
例列:一名同学选了一门课,之后放弃,删除时会删除该同学其余基本信息
3.数据的增,删改都称为操作异常.
原因:这个关系没有设计好,某些属性之间存在“不良”的函攻依赖关系

解决方法:关系规范理访是要改造这个关系模式,并避免上述问题
进行模式分解 即把一个关系模式分解成两个或多个关系模式在分解中都那些“不良”的时依赖,从而获得良好的关系模式

函数依赖
1 基本概念
在关系数据库中讨论函数成函教依确性重的是样受上的要.例如:省=f(城市)
只要给出一个具体的城市值,就会有唯一的“省”值和它对应 如 '衡阳市”在“湖南省”,这里“城市”是自变量X,“省”是因变量或函数值Y。一般把X函数决定Y,或Y函数依赖与X表示为 X--->Y
根据以上讨论可以写出较直观的函数依赖定义,即如果有一个关系模式R(A1.A2    An),X和Y为{A1,A2,.....An}的子集,r是R的任一具体关系,那么对于关系r中任意一个x值,都只有一个Y值与之对应,则称X函数决定Y或y函数依赖于x。

例如,对学生关系模式Student (Sno, Sname,Sdept, Sage) 有以下函数依赖关系Sno→ Sname.
Sno → Sdept, Sno→ Sage 
对学生选课关系模式SC(Sno, Cno,Grade)有以下函数依赖关系:
(Sno, Cno)→ Grade
下面给出函数依赖的形式化定义
定义 9.1    设有关系模式( A1  A2 …,An),X和Y均为{A1,A2,......An}的子集 ,是R的任一具体关系t1,t2是r中的任意两个元组。如果由t1[X]=t2[X]可以推导出t1[Y]=t2[Y],则称X函数决定Y,或Y函数依赖于X,记为X→Y。
在以上定义中特别要注意,只要t1[X]=t2[X],t1和[Y]=t2[Y]成立,就有X--->Y。
2 一些术语和符号
设有关系模式R(A,A,…,A,),X和Y均为A,4,…,A. 的子集,则有以下结论:
(1)如果X→Y,但Y不包含于X,则称X一Y是非平凡的函数依赖。如不做特别说明,我们讨论的都是非平凡的函数依赖。
(2)如果y不函数依赖于X,则记作X---->/Y。
(3)如果X→Y,则称X为决定因子。
(4)如果X一>Y,并且Y一X,则记作X<--->Y
(5)如果,并且对于X的一个任意子集X"都有X"--->/Y,则称Y完全函数依赖于X,记作X—f>Y;如果x'一>Y成立,则称Y部分函数依赖于X,记作X一p>Y
(6)如果X→Y(非平凡函数依赖,并且Y---/>X)、Y→Z,则称Z传递函数依赖于X
(7)设K为关系模式R的一个属性或属性组,若满足:
K→fA1  K---f>A2 .........K---f>An
则称K为关系模式R的候选键(或候选码)。称包含在候选键中的属性为主属性,不包含在 若任何候选码中的属性称为非主属性。

例9.1 设有关系模式SC(Sno, Sname, Cno, Credit, Grade),其中各属性分别为:学号、姓名、课程号、学分和成绩,主键为(Sno,Cno),则有如下函数依赖:
Sno→ Sname                姓名函数依赖于学号
(Sno, Cno)—p>Sname       姓名部分函数依赖于学号和课程号 
(Sno,Cno)----f>Grade             成绩完全函数依赖于学号和课程号
例9.2 设有关系模式S(Sno, Sname, Sdept, Dept_master),其中各属性分别为:学号、姓名、所在系和系主任(假设一个系只有一个主任),主键为Sno,则有如下函数依赖关系:
Sno —→f Sname                 姓名完全函数依赖于学号
由于有:
Sno--->fSdept                         所在系完全函数依赖于学号
Sdept —f>Dept_master           系主任完全函数依赖于所在系
因此:
Sno ---传递>Dept_master                系主任传递函数依赖于学号

函数依赖的推理规则
1.Amstrong 公理
(1)自反律(reflexivity)
若YXU 则X一Y在R上成立。即一组属性函数决定它的所有子集
例如,对关系模式SC(Sno, Sname, Cno, Credi,Grade)

有:(Sno, Cno)→Cno和 (Sno, Cno)→ Sno
(2)增广律(augmentation)。
著X一Y在R上成立,且Z U,则XZ→YZ在R上也成立。
(3)传递律(transitivity)。
若X一Y和Y→Z在R上成立,则X→Z在R上也成立。
2. Armstrong 公理推论
(1)合并规则(union rule)。
若x→Y和X→Z在R上成立,则X→YZ在R上也成立。
例如,对关系模式Student (Sno, Sname, Sdept, Sage),有Sno→(Sname, Sdept),Smo-age

则有 Sno→(Sname, Sdept, Sage)成立。
(2)分解规则(decomposition rule)。
若X→Y和ZY在R上成立,则X→Z在R上也成立。
从合并规则和分解规则可得到如下重要结论:
如果A1 …An,是关系模式R的属性集,那么X→A1…An成立的充分必要条件是X一Ai(i=1,2,…,n)成立。
(3)伪传递规则(pseudo-transitivity rule)。
若X→Y和YW→Z在R上成立,则XWZ在R上也成立。
(4)复合规则(composition rule)。
若X→Y和W→Z在R上成立,则XW→YZ在R上也成立。
例如,对关系模式SC(Sno, Sname,Cno, Credit, Grade)

有:Sno→ Sname 和 Cno→ Credit 成立
则有:(Sno, Cno)→(Sname, Credit)

关系模式设计的问题 函数依赖相关推荐

  1. 数据关系模式设计的标准化

    把关系模式R分解成p以后,如何测试分解p是否为有损分解方法: 1.根据分解模式和属性列表 列:分解模式 行:属性 比如R(ABC) 分为p=(AB,AC)  满足F(A->C) 列表 A B C ...

  2. 关系模式设计优化(数据库学习重点,难点)

    关系模型潜在的问题 1.添加异常(当在关系中添加数据时可能会导致数据的不一致) 2.修改异常(随意的修改关系中的一行记录也可能导致数据的不一致) 3.删除异常(当删除一定数量的记录时可能会导致一些其他 ...

  3. DBMS-数据库设计与E-R模型:E-R模型、约束、E-R图、E-R扩展特性、E-R图转换为关系模式、UML建模...

    设计过程概览 1. 设计阶段 ·最初阶段:刻画未来数据库用户的数据需求,产品为用户需求规格说明: ·概念设计阶段(conceptual-design phase):(关注描述抽象数据及其联系,通常使用 ...

  4. 数据库关系模式的函数依赖习题讲解

    这种问题直接看定义容易一脸懵逼,很难懂,举例子很容易理解,所谓我们直接做题,做完这几道题目相信你就会了. 注:这种类型的题目是 数据库系统概论 课程的必考题. 例1 第一题会讲解的非常详细,请一定认真 ...

  5. 【数据库】 关系模式的规范化理论----一文让你轻松理解其中奥秘

    文章目录 关系模式设计中存在的问题 关系的形式化定义 数据依赖的基本概念 函数依赖 非平凡函数依赖.平凡函数依赖 完全函数依赖和部分函数依赖 传递函数依赖 关键字和超关键字 数据依赖的公理系统 函数依 ...

  6. 学习关系模式并了解如何辨别范式

    1. 什么是关系模式? 关系模式:关系模式相当于一张二维表的框架,在这个框架下填入数据,称为关系模式的一个实例,或者叫关系(R) R(A1,A2,A3-Ai):R是关系名,Ai是关系的属性名.一个关系 ...

  7. 关系模式(关系模式必须遵循)

    关系模式和关系是什么意思? 关系模式和关系:描述模式描述关系的静态结构,由模式名.关系模式所包含的属性及属性值所满足的条件组成模式定义. 委托代理关系有哪些内涵及模式? 委托代理关系有5种模式 (1) ...

  8. 关系数据库理论----如何判断关系模式规范化达到第几范式

    文章目录 求关系模式最高达到第几范式的步骤 通俗理解1NF,2NF,3NF. 如何求关系模式的候选码 如何求闭包 函数依赖 求关系模式最高达到第几范式的步骤 根据给定的U和F,首先求它的候选码 根据候 ...

  9. 如何确定关系模式属于第几范式

    问题 假定某商业集团数据库中有一个关系模式R如下: R(商店编号,商品编号,数量,部门编号,负责人),且有如下规定 每个商店的每种商品只在一个部门销售 每个商店的每个部门只有一个负责人 每个商店的每种 ...

最新文章

  1. VSCode 搭建Vue开发环境之Vue CLI
  2. 【Deep Learning笔记】卷积神经网络必须要掌握的知识(看不懂你来打我)
  3. import java.awt.event.;是什么意思,。import java.awt.*;import java.awt.event.*;import...
  4. 修改SQL Service数据库排序规则
  5. 无人出价!贾跃亭所持2210万股乐视网股票首次拍卖流拍
  6. SSH框架和Redis的整合(1)
  7. 64位linux下的gns3网络模拟器配置
  8. @程序员,敏捷开发防坑指南请查收!
  9. C语言:某班有N名同学,每个学生的信息包括学号、姓名、三门课的成绩,从键盘输入名学生的信息,打印出N名学生三门课的平均成绩,以及最高分学生的信息(包括学号,姓名,三门课的成绩,平均分)
  10. java odbc timesten_TimesTen ODBC 链接库差异及相关命令行工具的使用注意事项
  11. 咪咕音乐播放器 ubuntu 安装详解
  12. html+css+js制作520表白网页,全屏的爱心和表白语网页动画代码,浪漫的520爱心表白动画特效。...
  13. html页脚固定,jQuery实现页脚永远固定在页面底部
  14. 微信接口第三方php原理,微信第三方登录原理
  15. 【转载】上帝粒子证实存在宇宙末日来临?(图)
  16. 网络游戏行业不能说的秘密
  17. 远程办公那些事儿 大Boss最担心的是什么?
  18. led手电筒烧灯珠_浅谈务优LED手电筒灯珠型号与区别技巧
  19. linux的tar命令之-N参数详解
  20. 《Python知识手册》.pdf

热门文章

  1. “英制长度单位”的由来
  2. ASR 混合高斯模型GMM的理解
  3. 现代交换技术学习笔记
  4. vue练手小项目--眼镜在线试戴
  5. js实现html搜索关键词高亮显示(标红)
  6. Nature Genetics:华中农业大学严建兵团队合作揭示玉米和玉米的“父辈”如何适应环境进化...
  7. 酉变换 matlab,量子计算原理 Theory of Quantum Computing
  8. Android Studio 类微信界面的制作
  9. 安卓开发— —仿微信界面(一)
  10. tushare更新,get_k_data支持分时k线数据,可替代以前的get_hist_data