zoukankan      html  css  js  c++  java
  • 关系数据库(RDBMS)小记

    关系数据库三个范式

    三个范式:

    第一范式(1NF):数据表中的每一列(每个字段)必须是不可拆分的最小单元,也就是确保每一列的原子性

    这里说的不可拆分通常是放在业务背景下而言的,是否可拆分视业务需求而定。如一张student表的adress表存省市县时,如果业务需要针对更细粒度地址如市、县做些CRUD操作则需要adress字段拆成province、city等字段。

    第二范式(2NF):满足1NF后,要求表中的所有列,都必须依赖于主键,而不能有任何一列与主键没有关系,也就是说一个表只描述一件事情

    如包含school_name、school_address字段的student表中,school_address是依赖于school而非student的,故应将school信息抽离到单独的表中。

     第三范式(3NF):必须先满足第二范式(2NF),要求:表中的每一列只与主键直接相关而不是间接相关,(表中的每一列只能依赖于主键)

    上述school信息抽离到单独表后,student表中只需有school_id(外键)来关联school即可,而不需要其他school相关属性,因为其他school属性直接依赖于school_id而非student_id

     

    区别:

    第 一范式和第二范式在于有没有分出两张表,第二范式是说一张表中包含了多种不同的实体属性,那么要必须分成多张表, 第三范式是要求已经分成了多张表,那么一张表中只能有另一张表中的id(主键),而不能有其他的任何信息(其他的信息一律用主键在另一表查询)

    总结:

    第一范式:每个表中都有1列,并且该列是不可拆分的最小单元

    第二范式:1张表只描述一件事情

    第三范式:用外键做表的关联

    数据库范式只是理论上建议这样设计,实际中结合业务需要可视情况稍有违背,而不是死脑筋一味地按该范式来。

  • 相关阅读:
    10-JS的函数学习
    Servlet(生命周期)
    09-js数组常用方法
    08-计算器案例
    07-js数组
    06-js的逻辑结构
    使用css设置三角形
    关于background-size 的一点小坑
    a 标签实现分享功能
    关于页面缩放时css错乱的处理方法---之一
  • 原文地址:https://www.cnblogs.com/z-sm/p/10634896.html
Copyright © 2011-2022 走看看