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张表只描述一件事情

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

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

  • 相关阅读:
    购买绝版书的好地方——淘宝
    ASP.NET MVC轻教程 Step By Step 1 ——入门
    ASP.NET MVC轻教程 Step By Step 2 ——View初探
    快速启动WebDev.WebServer的方法
    Surface RT使用手记
    ASP.NET MVC轻教程 Step By Step 3 ——使用ViewBag
    Asp.net MVC分页实例
    图示近四年来国外主流编程语言发展趋势
    ASP.NET MVC轻教程 Step By Step 4——Model、View和Controller
    Asp.net MVC使用KindEditor4
  • 原文地址:https://www.cnblogs.com/z-sm/p/10634896.html
Copyright © 2011-2022 走看看