• [读书笔记]规范化


    规范化的对象:

    目的:将数据转变成一个有逻辑的、无重复的格式,可以很容易将此格式再重新组合成一个整体。

         就是减少表的数据冗余,减少数据存储空间,使每个表的用途更加明确,各表之间的关系更加科学。

    范式种类:6种

    但实际上只需要做到3种范式就可以,后面三种只是有学术讨论的意义

    规范化总结:

    规范化就是键,整个键,只是键。

    (分别对应第一范式,第二范式,第三范式)

    前提:

    1.表只描述一个实体(不要简化或组合);

    2.所有行必须唯一,而且必须有一个主键;

    3.列和行的顺序必须是无关的。

    第一范式:消除重复数组和保证原子性(数据是自包含和独立的)

      原子性:每一列都单独记录一个数据,而不记录过多的数据。比如一个列里,包含了数量,单价和总价。那么就要拆成三列。

    第二范式:在第一范式的基础上,每列必须依赖于整个键

      如果一个行是组合键,有一列只依赖于其中一个键,那么就要把这个列单独分在一张表中。比如一行:班级,学号,班主任,座位号。组合键为班级和学号,班主任只依赖于班级。

    第三范式:在第二范式的基础上,任何列都不能依赖于非键列,不能有派生的列

       不能有派生列,比如,有两个列:单价和总量,还有另外一个列为总价。可以看出,总价是根据单价和总量派生出来的,应该删掉。

      mark:有时需要反规范化——添加派生列,比如用户需要经常查询总价,如果进行第三范式,那么用户每次查询总价都要查询另外两列,并进行运算,加大了查询时间。通过反规范化,这里牺牲点存储空间,提高查询效率,是值得的。

    反规范化

    要记住数据库的设计的原则应该是具有适用性,要根据实际情况灵活设计表格,而不是一味地进行规范化

    比如,添加派生列,可以提高搜索速度,降低查询时间。

  • 相关阅读:
    SQL Server 的事务和锁(一)
    Sql server脏读、更新丢失、不可重复读、幻象读问题及解决方案
    Sql server锁机制
    Windows系统变量列表
    windows运行命令大全
    C# 捕获数据库自定义异常
    sql日期函数
    C# ado.net 操作存储过程(二)
    C# ado.net 操作(一)
    url传参特殊字符问题(+、%、#等)
  • 原文地址:https://www.cnblogs.com/lsr-flying/p/4313455.html
Copyright © 2020-2023  润新知