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

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

 

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

 

posted @ 2018-04-02 09:26  赫尔修斯  阅读(252)  评论(0编辑  收藏  举报