• 数据库之范式


    • 第一范式(1NF)

           属性不可分。

           例如存在一个表:【联系人】(姓名、性别、电话)

           这个表中,属性“电话”可以分为手机号和座机号,这样就不满足1NF要求。

    • 第二范式(2NF)

           1. 表必须有主键

           2. 没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分

           例如存在一个表:【OrderDetail】(OrderID,ProductID,UnitPrice,Discount,Quantity,ProductName)

           该表的主键应该是(OrderID,ProductID),然而 UnitPrice,ProductName 只依赖于 ProductID。违反了2NF的必须完全依赖于主键,而不能只依赖于主键的一部分,所以不满足2NF。

           为了满足2NF,可以将该表分解成两个表:1) 【OrderDetail】(OrderID,ProductID,Discount,Quantity); 2) 【Product】(ProductID,UnitPrice,ProductName)

    • 第三范式(3NF)

           1. 符合2NF

           2. 非主键列必须直接依赖于主键,不能存在传递依赖。即不能存在,非主键列A依赖于非主键列B,非主键列B依赖于主键的情况

           例如存在一个表:【Order】(OrderID,OrderDate,CustomerID,CustomerName,CustomerAddr,CustomerCity)

           该表主键应该是OrderID,其中 OrderDate,CustomerID,CustomerName,CustomerAddr,CustomerCity 等非主键列都完全依赖于主键(OrderID),所以符合 2NF。不过问题是 CustomerName,CustomerAddr,CustomerCity 直接依赖的是 CustomerID(非主键列),而不是直接依赖于主键,它是通过传递才依赖于主键,所以不满足3NF。

           为了满足3NF,可以将表拆分为:1) 【Order】(OrderID,OrderDate,CustomerID); 2) 【Customer】(CustomerID,CustomerName,CustomerAddr,CustomerCity)

    • BC范式(BCNF)

           1. 符合3NF

           2. 主键不依赖于主键

  • 相关阅读:
    C#学习笔记(28)——委托排序(2)自定义排序
    C#学习笔记(27)——委托排序(1)
    C#学习笔记(26)——委托计算器
    C#学习笔记(25)——用刻盘器批量从U盘删除添加文件
    ABBYY FineReader Pro for Mac系统要求
    ABBYY FineReader错误代码142和55
    哪些因素影响ABBYY FineReader 12的识别质量
    ABBYY FineReader 12没你想得那么简单
    超强OCR文字识别软件首选ABBYY FineReader
    详解ABBYY FineReader 12扫描亮度设置
  • 原文地址:https://www.cnblogs.com/jiqianqian/p/6610536.html
Copyright © 2020-2023  润新知