zoukankan      html  css  js  c++  java
  • 数据库的范式

    为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。

    范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。实际上,数据库范式就是我们在数据库中创建表的规则

    数据库范式一共有6种范式:第一范式,第二范式,第三范式,BC范式,第四范式,第五范式

    第一范式(确保每列保持原子性)

    第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。

     

    第二范式(确保表中的每列都和主键相关,且主键唯一相关)

    第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。

    也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。

    第三范式(确保每列都和主键列直接相关,而不是间接相关)

    第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相;如下表通过订单编号知道项目编号,负责人和客户编号;通过客户编号知道客户名称和客户联系电话

    订单编号 项目编号 负责人 客户编号
    客户编号 客户名称 客户联系电话

    BC范式

    所有的非主属性对每一个码都是完全函数依赖 (暗含 主关键字里面可能有多个码可以将实体区分)
    所有的主属性对每一个不包含它的码也是完全函数依赖(即所选码与未选择的码之间也是完全函数依赖的)
    没有任何属性完全函数依赖于非码的任何一组属性(即非主属性之间不能函数依赖)
    解释:
    例如关系模式 S(Sno,Sname,Sdept,Sage) 假设 Sname具有唯一性
    1:非主属性 (Sdept,Sage) 不仅依赖于Sno,而且依赖于Sname,因为不仅可以通过学号知道学生的信息,还可以通过姓名知道学生的信息。
    2:Sno 与Sname之间也是完全函数依赖关系
    3:没有任何一个属性函数依赖于Sdept和Sage

    第四范式

    多值依赖的概念:表中一对多关系,幽囚只有一个主键,对应表中其他非主属性

    第四范式即在满足巴斯-科德范式(BCNF)的基础上,消除非平凡且非函数依赖的多值依赖(即把同一表内的多对多关系删除)。

    第五范式

    满足第四范式(4NF)的基础上,消除不是由候选码所蕴含的连接依赖。如果关系模式R中的每一个连接依赖均由R的候选码所隐含,则称此关系模式符合第五范式。

  • 相关阅读:
    微信公众平台开发教程(一) 微信公众账号注册流程
    DNS----域名解析系统
    C#编程总结(九)字符编码
    向大神学习
    C# 正则表达式
    js 正则表达式 取反
    H5 打开App
    Fiddler 过滤器的使用
    Fiddler 默认不能抓取页面信息的问题
    js 元素Dom新建并插入页面createElement
  • 原文地址:https://www.cnblogs.com/zzm0619/p/13229974.html
Copyright © 2011-2022 走看看