zoukankan      html  css  js  c++  java
  • 聊聊和关系型数据库相关的一些概念

    本文对关系型数据库的相关概念做些解析。

    关系型数据库(Relational Database)

    由 Edgar.F.Codd 教授于 1969 年提出,是使用遵循一阶逻辑的语言和结构来管理数据的模型。

    1970 年,Prof.Codd 提出第一范式(1NF,First Normal Form);

    1971 年,Prof.Codd 提出第二范式(2NF,Second Normal Form)、第三范式(3NF,Third Normal Form)。

    之后,陆续有人提出了 BCNF(3.5NF)、4NF、5NF 等。

    范式之间的关系是递进(accumulative)的。即第二范式必须满足第一范式,依次类推。

    范式(Normal Form)

    第一范式:属性不可拆分。

    第二范式:主键必须最小。

      所有非主属性(主键外的属性)必须完全依赖主键,不能只依赖主键的某个子集。

      如果存在这样的情况,就有冗余,需要拆分表。

    第三范式:必须直接依赖主键。

      所有非主属性必须直接依赖主键,不容许间接依赖。

      如果存在这样的情况,就有冗余,需要拆分表。

    这些范式的目的:消除冗余(eliminate redundancy),保证数据一致性(consistency)。

    方式:通过外键(reference)来构建关系(relationship)。

    缺点:一个业务逻辑很简单的操作,可能会涉及多个表,所以出现了反范式(Denormalization)。

       反范式增加了冗余,但方便了业务开发。

    Wikipedia 上对关系型数据库满足 normalized 的描述:

    Informally, a relational database relation is often described as "normalized" if it meets third normal form.[7] Most 3NF relations are free of insertion, update, and deletion anomalies.

     一般而言,一个关系型数据库只要满足 3NF,那么它就是规范化的(normalized)。

    Normalized Data Models

    由 reference 来描述 relationship。

    使用外键来消除冗余和保持数据的一致性。

    Replica Set

    增加 redundancy,保证数据库的高可用性(high availability)。

    OLTP,OLAP

    OLTP(Online Transaction Processing):侧重交易,实时性要求高,处理少量数据。

    OLAP(Online Analysis Processing):侧重分析,实时性要求不高,处理大量数据(通常是 BI 处理,对规范化要求不高)。

  • 相关阅读:
    CodeForces Gym 100500A A. Poetry Challenge DFS
    CDOJ 486 Good Morning 傻逼题
    CDOJ 483 Data Structure Problem DFS
    CDOJ 482 Charitable Exchange bfs
    CDOJ 481 Apparent Magnitude 水题
    Codeforces Gym 100637G G. #TheDress 暴力
    Gym 100637F F. The Pool for Lucky Ones 暴力
    Codeforces Gym 100637B B. Lunch 找规律
    Codeforces Gym 100637A A. Nano alarm-clocks 前缀和
    TC SRM 663 div2 B AABB 逆推
  • 原文地址:https://www.cnblogs.com/huangzejun/p/8690106.html
Copyright © 2011-2022 走看看