zoukankan      html  css  js  c++  java
  • 数据库设计理论

    第一范式标准:

    1)无重复的数据

    2)每一列中的数据是都是原子数据

    如下图的表中就不满足这两个条件,Customer数据重复了,ItemsOrderd 中不是原子数据(一列中有多组数据)。 

    优化方法:

    1)新建Customer表和order表做主外键关联。

    2)分拆ItemOrdered列,将有多组数据的行分成多行,并新建主键列,因为分拆多行后原OrderNo列已不能唯一标识一行数据了。

    第二范式标准:

    1. 符合第一范式

    2.每列必须依赖于整个键

    如下表中 CustomerNo、PartNo 只依赖与 OrderNo 而不依赖于LineIitem. 像这种情况就需要将下面的订单表拆成订单主表(表头)与订单明细表。

    通常明细表以表头名开头来名字,如这里的主表命名为Order,明细表命名为OrderDetails。

    第三范式标准:

    1.符合第二范式。

    2.任何列都不能依赖与非键列。

    3.不可以有派生数据。

    以上图中的表为例,其中Description Wt 列就依赖于PartNo列。为解决此问题,应再拆表,新一个Product表(包含PartNo、Wt、Description、UnitPrice)。

    注意这里出于业务考虑原表中的UnitPrice列应保留。

    上图中Total Price为派生数据,因为此数据是可以通过Unit Price 与 Qty 计算而得到。(需要注意的是:有时候为了性能考虑应违反此规则,

    特别是有时候需要以此列建立索引时。)

  • 相关阅读:
    【CCPC2020网络赛11】Convolution
    【CCPC2020网络赛02】Graph Theory Class
    全国中学生网安竞赛出题总结
    XDU2020ACM校赛总结
    CTF错误集合
    【洛谷2916】图的遍历
    20200420(ABC)题解 by 辛晓东
    20200402(ABC)题解 by 孙晨曦
    20200406(ABC)题解 by 徐光旭
    20200407(DE)题解 by 孙晨曦
  • 原文地址:https://www.cnblogs.com/topwill/p/4482728.html
Copyright © 2011-2022 走看看