• 数据库的范式模型


    • 特别说明
      本文中的出现的‘对象’,可以理解为数据库中的一条记录。
      本文中的出现的‘属性’,可以理解为数据库中的一条记录中的字段。
      主属性可以理解为数据库中的一条记录的主键。
      非主属性可以理解为数据库中的一条记录的主键以外的字段。

    函数依赖

    定义一:Method(x)=y,x、y是一个对象,x在经过一个函数后会得到y。
    我们就说:x函数确定y,y函数依赖x。x值决定y值,记成:x->y
    例如:

    (学号,课程号)->(成绩)
    (学号,课程号)->(姓名)
    (学号,课程号)->(学号)
    (学号)->(姓名)

    上面的都是x->y模型。

    定义二:x->y,x、y是一个对象,x在经过一个函数后会得到y,y不是x的子集
    我们就说:x->y是非平凡函数,否则为平凡函数
    例如:

    (学号,课程号)->(成绩)是非平凡函数
    (学号,课程号)->(姓名)是非平凡函数
    (学号,课程号)->(学号)是平凡函数
    (学号)->(姓名)是非平凡函数

    任何对象都存在平凡函数,一般我们就只讨论非平凡函数的情况。

    定义三:x->y,x、y是一个对象,x的任何真子集x'都不能x'->y。
    我们就说:x完全属性函数确定y,y完全函数依赖x。完全x对象值决定y值,记成:(full)x->y
    x存在一个真子集x'能得到x'->y。
    我们就说:x非完全属性函数确定y,y非完全函数依赖x。非完全x对象值决定y值,记成:(part)x->y
    例如:

    (学号,课程号)->(成绩)是(full)x->y
    (学号,课程号)->(姓名)是(part)x->y,因为存在(学号)->(姓名)
    (学号)->(姓名)是(full)x->y

    定义四:x->y,y->z,且y->x不成立。
    我们就说:x传递函数确定z。
    例如:
    (学号)->(系别),(系别)->(系主任)

    范式和规范化

    第一范式
    定义:一个对象的所有属性不可再分,符合第一范式,记:1NF
    例如:

    (员工编号,姓名,(基本工资、职务工资)),其中的一个属性可以再分,就不符合第一范式。改成:
    (员工编号,姓名,基本工资,职务工资),符合第一范式

    第二范式
    定义:符合第一范式后,一个对象的非主属性完全函数依赖主属性,符合第二范式,记:2NF
    例如:

    (学号,课程号,姓名,成绩)

    其中的主属性是学号和课程号,应该(full)(学号,课程号)->(姓名,成绩)必须成立才行,

    可惜存在(学号)->(姓名),即存在就不符合第二范式。

    改成:
    (学号,课程号,成绩)和(学号,姓名),符合第二范式

    第三范式
    定义:符合第二范式后,一个对象的非主属性不传递依赖主属性,符合第三范式,记:3NF
    例如:

    (员工编号,宿舍编号,宿舍费用),

    其中存在一个依赖关系:

    (员工编号)->(宿舍编号),(宿舍编号)->(宿舍费用),就不符合第三范式。改成:
    (员工编号,宿舍编号)和(宿舍编号,宿舍费用),符合第三范式

  • 相关阅读:
    Windows下IIS+PHP 5.2的安装与配置
    windows下安装、卸载mysql服务
    电脑变绿色
    libmysql.dll是否真的要拷贝到c:\windows目录下呢?
    用PHPnow搭建PHP+MYSQL网站开发环境
    VPS初始化及Nginx+MySQL+PHP/PHPMyAdmin安装优化cnblogs
    二级域名三级域名设置方法
    一句简单命令重启nginx
    上海世博会门票
    无法载入 mysql 扩展
  • 原文地址:https://www.cnblogs.com/lmfeng/p/2399899.html
Copyright © 2020-2023  润新知