• [数据库]四种范式


    前提知识


    • 什么是键码?
      如果一个属性或多个属性的集合{A,B,C,D….}满足下面的条件,称为关系R的键码。
      1、这些属性函数决定该关系的所有其它属性
      2、{A,B,C,D….}的任何真子集都不能函数决定R的其它属性,也就是说{A,B,C,D….}必须是最小的

    • 什么是主属性?
      键码所在的属性成为主属性。

    • 什么是非主属性?
      非键码所在的属性称为非主属性。

      例子:
      这里写图片描述
      比如上图中,SnoCname就是主属性,其他的为非主属性。{Sno,Cname}为键码。


    关于函数依赖


    部分函数依赖:设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。
    举个例子:学生基本信息表R中(学号,身份证号,姓名)当然学号属性取值是唯一的,在R关系中,(学号,身份证号)->(姓名),(学号)->(姓名),(身份证号)->(姓名);所以姓名部分函数依赖与(学号,身份证号);

    完全函数依赖:设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。
    例子:学生基本信息表R(学号,班级,姓名)假设不同的班级学号有相同的,班级内学号不能相同,在R关系中,(学号,班级)->(姓名),但是(学号)->(姓名)不成立,(班级)->(姓名)不成立,所以姓名完全函数依赖与(学号,班级);

    传递函数依赖:设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。
    例子:在关系R(学号 ,宿舍, 费用)中,(学号)->(宿舍),宿舍!=学号,(宿舍)->(费用),费用!=宿舍,所以符合传递函数的要求;

    来自 https://blog.csdn.net/rl529014/article/details/48391465





    四种范式


    • 第一范式

    如果一个关系模式中所有属性都是不可分割的基本属性,则这个关系模式属于第一范式

    • 第二范式

    如果一个关系模式属于第一范式,其中所有非主属性都完全函数依赖于键码,则属于第二范式

    • 第三范式

    如果一个关系模式属于第一范式,其中所有非主属性都不传递依赖于键码,则属于第三范式

    • BC范式

    如果一个关系模式属于第一范式,其中所有属性都不传递依赖于键码,则属于BC范式

    一张图总结:

    这里写图片描述

    https://github.com/li-zheng-hao
  • 相关阅读:
    DIV+CSS笔记(二)
    DIV+CSS笔记(一)
    HTML基础笔记
    面向对象—封装—重载
    面向对象—封装
    面向对象—封装—people
    面向对象—封装—三角形
    权限修饰符—1
    权限修饰符—2(Father、Son)
    权限修饰符—3
  • 原文地址:https://www.cnblogs.com/lizhenghao126/p/11053682.html
Copyright © 2020-2023  润新知