zoukankan      html  css  js  c++  java
  • 数据库的范式

    数据库的范式

    这是我写博客的第一篇短文,也是关系数据库相关的第一个知识点。谈起关系型数据库,我个人喜欢先了解数据库的几范式,在关系型数据库中有6种范式,但是日常工作常见的有三种,即1NF 、2NF、3NF。后面的4NF--6NF用的比较少;学习关系型数据库必须了解数据库的范式,虽然有的同事朋友在工作过程在不知不觉的有应用到,但是不一定对其很理解,但是这个问题在面试中 经常问到,以测试你对数据库基础知识了解的踏实不踏实。因为数据库的范式在IT基础课程中把她定义得文ZuZu的,狠令人费解。今天用个人的语言理解下数据库常用的三范式。若有不正确请大家指正,谢谢!

    1. 1NF即表的列的具有原子性,不可再分解,即列的信息不能分解; 也就是数据库中没有重复的列,相同的内容不会记录到两个列中。
    2. 2NF表中的记录是唯一的,也就是一个表中必须有一个primary key,不能有相同的行。
    3. 3NF即表中的数据不要有冗余数据,YE也就是一个表中非主键的信息不要在其他表中出现。

    反3NF(或逆3NF) : 但是,没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是: 在概念数据模型设计时尽量遵守第三 范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,允许冗余。 程序设计、数据库开发也象日常生活与工作一样没有千篇一律的标准,没有死的定性的东西,有时要根据实际的案例进行灵活进行反3NF。

    反3NF的例子:
    在如今火热的电子商城网城,如查询某一商品的点击率我们可以利用反3NF的方法,将点击率的字段从业务表中拿到商品的master table中,这样可以极大的提高查询统计速度。其实很多业务案例是可以进行反3NF的。

    另外数据库的4NF、5NF或6NF在关系数据库中也有用到,但没有1NF、2NF或3NF常见,一般情况遵循前面3个NF基本可以满足日常需要,后面的几个NF可自行研究。


    Thank you for your time! 

    REMARK: IT随笔,若转载请注明出去,谢谢!

    TerryXia

  • 相关阅读:
    Leetcode 121. Best Time to Buy and Sell Stock
    Leetcode 120. Triangle
    Leetcode 26. Remove Duplicates from Sorted Array
    Leetcode 767. Reorganize String
    Leetcode 6. ZigZag Conversion
    KMP HDU 1686 Oulipo
    多重背包 HDU 2844 Coins
    Line belt 三分嵌套
    三分板子 zoj 3203
    二分板子 poj 3122 pie
  • 原文地址:https://www.cnblogs.com/TerryX168/p/5595415.html
Copyright © 2011-2022 走看看