在教学中,大多实例都是主键由一列构成,所以也可以简单地说主属性与主键没有什么区别。

第三范式的定义:如果关系模式R中的所有非主属性对任何候选关键字都不存在传递依赖,则称关系R是属于第三范式的。记作R 3NF。

如:学生关系模式S1(学号,姓名,系号,系名,系地址)

(学号)为关键字,因是单属性关键字,不存在部份依赖问题,应属于第二范式。但因为:学号—>系号,系号—\>学号,系号—>系地址,因此:学号—>系地址 是通过传递依赖实现的。即候选关键字“学号”不直接函数决定于非主属性“系地址”。所以此关系不属于第三范式。应将其分解为:

SC(学号,姓名,系号)

D(系号,系名,系地址)

C(课程号,课程名,学分)

S(学号,课程号,成绩)

设计原则:“一事一地”,即一个关系反映一个实体或一个联系,不应把几样东西混合放在一起。基本关系模式切忌“大而全”,在若干个基本关系模式组成的关系模型上,根据需要可以通过自然联接导出所需要的关系。

BCNF的定义:如果一个关系R中的所有属性都不传递依赖于R的任何候选关键字,或者说关系R中的每个决定因数都是候选关键字时,则称关系R属于BCNF范式,记作R BCNF。

一个满足BCNF的关系模式有

1.所有非主属性对每一个码都是完全函数依赖。

2.所有的主属性对每一个不包含它的码,也是完全函数依赖。

3.没有任何属性完全函数依赖于非码的任何一组属性。

由于RBCNF,按定义排除了任何属性对码的传递依赖与部分依赖,所以R3NF。但是若R3NF,则R未必属于BCNF。

下面用几个例子说明属于3NF的关系模式有的属于BCNF,但有的不属于BCNF。

详细信息...

例l 关系模式SJP(S,J,P)中,S是学生,J表示课程,P表示名次。每一个学生选修每门课程的成绩有一定的名次,每门课程中每一名次只有一个学生(即没有并列名次)。由语义可得到下面的函数依赖:

(S,J)→P ,(J,P)→S

所以(S,J)与(J,P)都可以作为候选码。这两个码各由两个属性组成,而且它们是相交的。这个关系模式中显然没有属性对码传递依赖或部分依赖。所以SJP3NF,而且除(S,J)与(J,P)以外没有其它决定因素,所以SJPBCNF。

例2 关系模式STJ(S,T,J)中,S表示学生,T表示教师,J表示课程。每一教师只教一门课。每门课有若干教师,某一学生选定某门课,就对应一个固定的教师。由语义可得到如下的函数依赖。

(S,J)→T;(S,T)→J;T→J。

这里(S,J),(S,T)都是候选码。

STJ是3NF,因为没有任何非主属性对码传递依赖或部分依赖。但STJ不是BCNF关系,因为T是决定因素,而T不包含码。

3NF的“不彻底”性表现在可能存在主属性对码的部分依赖和传递依赖。非BCNF的关系模式也可以通过分解成为BCNF。例如STJ可分解为ST(S,T)与TJ(T,J),它们都是BCNF。

一个模式中的关系模式如果都属于BCNF,那么在函数依赖范畴内,它已实现了彻底的分离,已消除了插入和删除的异常。

关系模式规范化小结

目的:规范化的目的是使结构合理,消除存储异常,使数据冗余尽量小,便于插入、删除和更新。

原则:遵从概念单一化“一事一地”的原则,即一个关系模式描述一个实体或实体间的一种联系。规范的实质就是概念单一化。

方法:将关系模式投影分解成两个或两个以上的关系模式。

要求:分解后的关系模式集合应当与原关系模式“等价”,即经过自然联接可以恢复原关系而不丢失信息,并保持属性间合理的联系。

java数据库规范化,数据库关系模式规范化相关推荐

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

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

  2. 【数据库理论】关系模式的规范化与查询优化

    本系列为<数据库系统原理与应用(刘先锋等著)>的读书笔记. 一,问题的提出 1,关系模式 关系模式定义:一个关系模式是一个系统,它是有一个五元组R(U,D,DOM,I,F)R(U, D, ...

  3. 数据库原理(关系的规范化及数据库设计)

    复习函数依赖,数据规范化,范式的基本概念以及各级范式的判别标准. 判断给定的表满足哪级范式的条件. 将给定的表转换成满足特定等级范式条件的表. 根据需求确定实体,属性和联系. 将实体,属性和联系转化为 ...

  4. 关系模式规范化(设计范式)

    目录 数据库之六大范式详解 1. 第一范式 1NF 规范化: 2. 第二范式 2NF 候选码: 主属性: 函数依赖: 判断一个关系是否属于第二范式: 改进: 3. 第三范式 3NF 改进 结论 4. ...

  5. 关系模式规范化举例理解:第一范式、第二范式、第三范式

    参考:http://wenku.baidu.com/link?url=KzN3v3voao4ovz_izsiujMN8vMZMiArzgYbrue8tVL5L_ydc1B_6_1eEy7vfoSiO2 ...

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

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

  7. 数据库题目之关系数据理论

    一.选择题 1.关系规范化中的删除操作异常是指①  ,插入操作异常是指② . A.不该删除的数据被删除 B.不该插入的数据被插入 C.应该删除的数据未被删除 D.应该插入的数据未被插入[答案:]①A ...

  8. 数据库基础 数据库设计三大范式

    转载自: http://www.cnblogs.com/knowledgesea/p/3667395.html 数据库设计范式 什么是范式:简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的 ...

  9. 第4章 数据库设计---数据库原理及应用

    目录 一.数据库设计方案 1. 数据库应用架构设计:单用户.集中.CS.分布 2. 数据库结构设计:概念.逻辑.物理 3. 数据库应用访问方式设计:访问方式 数据库结构设计模型 概念数据模型:概念,不 ...

最新文章

  1. 喜欢把代码写一行的人_我最喜欢的代码行
  2. HTML与XML总结
  3. 动态代理机制之查看一个类或接口中有哪些方法
  4. 连你的免疫系统都拒绝996:半夜吃东西更容易拉肚子 | Cell
  5. #研发解决方案介绍#基于StatsD+Graphite的智能监控解决方案
  6. spring中的依赖注入——构造函数注入、set方法注入( 更常用的方式)、复杂类型的注入/集合类型的注入
  7. 自由自在休闲食品意式手工冰淇淋 百变不离健康
  8. SQL语言实现金额小写转大写完整案例代码
  9. 导轨式网管型工业交换机优势具体在哪里呢?
  10. Anaconda 国内镜像源整理
  11. 编程java 格式_Java代码的基本格式
  12. java8 stream流操作
  13. Python2.7学习笔记-定义函数、filter/map/reduce/lambda
  14. Word中英语音标出现乱码情况,解决办法
  15. win10,在proe/creo中鼠标中键不能放大缩小
  16. 数据分析训练营-pandas
  17. oracle增加分区时报ora14036,增加分区表2009年的分区报ORA-14074错误
  18. 软考:头脑风暴与德尔菲法的区别(转)
  19. 梆梆安全:做以结果为导向的安全服务商
  20. GitHub上的各大高校计算机学习资源

热门文章

  1. Tennessee Eastman(TE过程)简介
  2. Inventor冲压加强筋_inventor 加强筋教程
  3. STM32之中断的使用
  4. subclipse 下载地址
  5. UVA-10115 Automatic Editing
  6. Eigen零零散散的一些总结
  7. MOSFet 的类型和区别:NP沟道,增强耗尽
  8. jquery end()用法
  9. nomad 服务编排_Nomad微服务的容器模式
  10. 噪声和信噪比的转换(如何在数据集中添加噪声)