热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

开发笔记:数据库设计范式的理解

篇首语:本文由编程笔记#小编为大家整理,主要介绍了数据库设计--范式的理解相关的知识,希望对你有一定的参考价值。原创:转载需注

篇首语:本文由编程笔记#小编为大家整理,主要介绍了数据库设计--范式的理解相关的知识,希望对你有一定的参考价值。



原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11706874.html

 

  关系型数据库的设计范式。

  1?? 第一范式 : (基础NF)每一个列都不能再拆分。

    例子:“身高体重”列, 还能拆分为“身高”和“体重”两列!

  2?? 第二范式: (在1NF的基础上)非主键列对主键完全依赖。(在1NF的基础上消除非主键列对主键(联合主键)的部分依赖)

    例子:“订单号”列和“商品号”列为联合主键,该行应该显示的是对应订单号中的商品号对应的具体商品的信息,假设有“订单金额”列,那么“订单金额”列就只依赖于“订单号”,属于对主键的部分依赖,这种情况可以拆分副表,将“订单金额”列放入副表中。

  3?? 第三范式: (在2NF的基础上)非主键列不依赖于其他非主键列。(在2NF的基础上消除非主键列的传递依赖)

    例子: 列和主键直接关联,而不是间接关联。“订单号”列为主键,“下单用户id”,“下单用户名称”,“下单用户性别”为非主键列,“下单用户名称”和“下单用户性别”都依赖于“下单用户id”列,所以存在传递依赖,应该分一个副表出来。

  4?? 第四范式: (在BC范式基础上)消除非主属性的多值。

    例子: 有一个用户表有“id”和“iphone”和“tel”三个列,id为1的用户有2列,分别为

    1 ;188xxxx0000;0796-xx0000

    2; 199xxxx0000;0796-00xxxx

    需要建立一个副表,消除这种情况才符合第四范式。

  5?? 第五范式: (在4NF的基础上)消除连接依赖。

    例子:略。

  6?? BC范式: (在3NF的基础上)组成主键列的所有主属性列其中任意的列对主键完全依赖,消除组成主键列的所有主属性列其中任意的列对部分主属性的传递依赖。

    例子: “A”和“B”和“C”为联合主键,“A”或者“B”或者“C”都为组成主键列的所有主属性列其中任意的列,所以它们必须完全依赖于主键,而且之间不能存在部分依赖。


推荐阅读
author-avatar
_快樂Smile_903
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有