• 聊聊和关系型数据库相关的一些概念


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

    关系型数据库(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 处理,对规范化要求不高)。

  • 相关阅读:
    Go标准库之tar
    redis必知必会
    GORM CRUD指南
    GORM入门指南
    MUI中tap点击事件点击一次连续申请两次
    Go代码启动默认浏览器
    Go实现JWT
    Go Micro
    protobuf初识
    英语作文
  • 原文地址:https://www.cnblogs.com/huangzejun/p/8690106.html
Copyright © 2020-2023  润新知