数据库规范化

数据库

    基础知识   函数依赖

        设R(U)是属性集U上的关系模式,x,y是u的子集,若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在x上的属性值相等,而在y上的属性值不等则

      称x函数确定y或者y依赖于函数x,记做x->y.

       在R(U)中,如果x->y,并且对于x的任何一个真子集x‘,都有x‘不确定y,则y对x为完全函数依赖

        记记作X→f(f在箭头上面)Y

       在R(U)中,如果x->y,但是y不完全依赖于x

        记做x->p(p在箭头上面)Y

        比如一个表为(学号,课程号,成绩)   (学号,课程号)->(成绩)为完全函数依赖

        (学号,课程号,所属院系)    (学号,课程号)->(院系)为部分函数依赖

       在R(U)中,如果x->y  y不属于x,y不确定x y->z,z不属于y则称z对x传递函数依赖。记做x->传递(传递在箭头上面)z

        比如  学号->院系 , 院系->系主任名字  所以称 学号->传递 系主任名字

   范式

   1 第一范式(1NF)无重复的列

  所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。简而言之,第一范式就是无重复的列。

  说明:在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。

2 第二范式(2NF) 消除非主属性得码部分函数依赖

   定义 若R属于第一范式,且每一个非主属性完全函数依赖于任何一个候选码,称为第二范式

  第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。简而言之,第二范式就是属性完全依赖于主键

  比如 (学号,课程号,成绩)  (学号,课程号)->(成绩)    满足2NF

     (学号,课程号,院系)  (学号,课程号)->(院系)    不满足2NF 因为 学号->院系   (学号,课程号)是(院系)的部分函数依赖

  不满足回导致

    a.数据冗余,假设同一门课由40个学生选修,学分就 重复40次。

    b.更新异常,若调整了某课程的学分,相应的元组CREDIT值都要更新,有可能会出现同一门课学分不同。

    c.插入异常,如计划开新课,由于没人选修,没有学号关键字,只能等有人选修才能把课程和学分存入。

    d.删除异常,若学生已经结业,从当前数据库删除选修记录。某些门课程新生尚未选修,则此门课程及学分记录无法保存。

3 第三范式  消除非主属性对码传递依赖

  直接来例子

    就是比如(学号,院系,院系地址)      学号->院系  ,院系->院系地址 这样就不是一个满足第三范式的表结构

    会产生跟二范式一样的问题

4BCNF范式   消除主属性对码的部分和函数传递依赖

    比如(课程号,课程名,任课老师)  课程号是唯一码 符合3范式也满足BCNF范式

    (学生,教师,课程)  (学生,课程)-》教师  (学生,教师)-》课程    教师-》课程  因为教师决定课程所以就是部分函数依赖所以满足3nf但是不满足bcnf

  

时间: 2024-07-28 14:33:07

数据库规范化的相关文章

数据库规范化与经典三范式

数据库规范化与经典三范式 冗余导致多种更新异常,也就是插入.更新和删除行的操作困难. 规范化(normalization)是通过修改表以减少冗余和矛盾的一系列步骤. 在每一步之后,数据库都达到一个特定的范式(normal form) . 关系模型定义了三种范式,以著名的序数命名. 第一范式(1NF) 第二范式(2NF) 第三范式(3NF) 每一种范式都比前一种更健壮.符合3NF的数据库也符合2NF和1NF.规范化水平越高,表的数量也越多. 无损分解(lossless decomposition)

[总结]关系型数据库规范化

摘要:关系数据库设计理论的核心是数据间的函数依赖,衡量的标准之一是关系规范化的程度.数据库的冗余和异常往往是来自属性间的函数依赖. 一.关系模式定义 关系型数据的关系模式是一个五元组: R(U,D,DOM,F) R —— 关系名: U —— 属性名的集合,即属性组: D —— U中属性所来自的域(相同类型的值的集合): DOM —— 属性(U)到域(D)的映射: F —— 属性组U上的一组数据依赖. 由于D和DOM对模式设计关系不大,本文把关系模式化简成为一个三元组,即:R(U, F). 二.函

数据库 规范化

规范化理论把关系应满足的规范要求分为几级,满足最低要求的一级叫做第一范式(1NF),在第一范式的基础上提出了第二范式(2NF),在第二范式的基础上又提出了第三范式(3NF),以后又提出了BCNF范式,4NF,5NF.范式的等级越高,应满足的约束集条件也越严格. 第一范式(1NF)在关系模式R中中,如果每个属性值都是不可再分的原子属性,则称R是第一范式的关系.例如:关系R(职工号,姓名,电话号码)中一个人可能有一个办公室电话和一个住宅电话号码,规范成为1NF的方法一般是将电话号码分为单位电话和住宅

关系型数据库规范化

函数依赖: 对于关系模式 R(U) ·X-->Y  Y∈X 平凡函数依赖 A1,A2-->A2 ·X-->Y  Y∉X 非平凡函数依赖 A1,A2-->A3 ·X-->Y  X的任一真子集 X'-\->Y 完全函数依赖 A1,A2-->A3 A1-\->A3 A2-\->A3 ·X-->Y  Y不完全函数依赖X 部分函数依赖 A1,A2-->A3 A1-\->A3 A2-->A3 ·X-->Y Y-->Z Y-\-&

规范化-数据库设计原则

关系数据库设计的核心问题是关系模型的设计.本文将结合具体的实例,介绍数据库设计规范化的流程. 摘要 关系型数据库是当前广泛应用的数据库类型,关系数据库设计是对数据进行组织化和结构化的过程,核心问题是关系模型的设计.对于数据库规模较小的情况,我们可以比较轻松的处理数据库中的表结构.然而,随着项目规模的不断增长,相应的数据库也变得更加复杂,关系模型表结构更为庞杂,这时我们往往会发现我们写出来的SQL语句的是很笨拙并且效率低下的.更糟糕的是,由于表结构定义的不合理,会导致在更新数据时造成数据的不完整.

Postgres数据库基本介绍

最近一直在做一个和PostgreSQL数据库相关的项目,把自己在这个过程中学习的知识记录下来.关于PostgreSQL数据库网上已经有太多的相关介绍了,为了博文的系统性还是先看一下维基百科对PostgreSQL数据库的介绍吧. PostgreSQL是自由的对象-关系型数据库服务器(数据库管理系统),在灵活的BSD-风格许可证下发行.它在其他开放源代码数据库系统(比如MySQL和Firebird),和专有系统比如Oracle.Sybase.IBM的DB2和Microsoft SQL Server之

SQL Server数据库学习总结

经过一段时间的学习,也对数据库有了一些认识,数据库基本是由表,关系,操作组成:对于初学者首先要学的 一图胜"十"言:SQL Server 数据库总结 一个大概的总结 经过一段时间的学习,也对数据库有了一些认识.  数据库基本是由表,关系,操作组成:对于初学者首先要学的:  1.数据库是如何存储数据的  表,约束,触发器  2.数据库是如何操作数据的  insert,update,delete T-sql 函数 存储过程 触发器  3.数据库是如何显示数据的  select SQLSer

数据库 | SQL

SQL(结构化查询语言) 是用于访问和处理数据库的标准的计算机语言. 用于访问处理的数据库有 Mysql.Oracle.DB2等,Mysql 在 Web 中会常用到,而 Oracle.DB2 是目前大多数金融公司的首选. 第一步:简单了解数据库 数据库是由表.关系.操作组成 存储数据:表.约束.触发器 操作数据:insert.update.delete T-sql 函数 存储过程 触发器 查询数据:select 数据类型 整数:int, smallint, tinyint, bigint; 浮点

Mysql学习总结(16)——Mysql之数据库设计规范

一.三大范式 1.第一范式:消除一个字段包含多个数据库值,消除一个记录包含重复的组(单独的一列包含多个项目),即可满足1NF. 2.第二范式:消除部分依赖性即可转化为2NF.部分依赖性表示一个记录中包括的字段只依赖于主键的一部分.解决部分依赖性的最简单方法是将复合主键分成两部分,每一部分表示一个单独的表. 3.第三范式:消除可传递依赖性即可满足3NF.可传递依赖性表示记录中至少一个值不依赖主键,而是依赖于这个记录中的另一个字段. 4.数据库规范化: 1NF:删除重复的组,并确定一个主键或复合主键