为什么需要数据库? 1 我们知道,如果使用csv来存储的话,会存在很多痛点。无法高效的对数据进行格式校验、数据的范式、查询效率、多线程的一致性,持久化等进行控制。所以就需要出现数据库。

DBMS的提出

分离逻辑层和物理层

在计算机的设计中,有个很重要的原则,就是基于接口编程,不依赖具体的实现,这样就很容易替换实现层。而不进行强耦合。
数据库的设计,很多也是这个思想。比如在mysql中,存在很多存储引擎,而不用关心具体的实现。系统的开发者,只需要关系逻辑层,而不用关系底层数据是如何存储的,如何保证recovery等具体实现。

codd 提出了关系型数据库,以及几个主要思想

  1. 数据库使用简单的数据结构
  2. 使用高级语言来处理数据。如SQL语言
  3. 逻辑和物理层分离

数据模型

在系统开发者使用时,需要根据所需存储的数据进行建模。这里主要涉及到数据模型。主要包含关系型数据库NoSQL键值数据库redis图数据库neo4j文档数据库monogodb列族数据库hbase)、矩阵数据库—机器学习所用。

关系模型

在关系数据库中,表的本质就是关系。tuple,元组,可以简单认为数据库的一行数据。

主键

在关系数据库中,会使用主键(peimary key)来唯一标识一个tuple,即表示一行记录。有些数据库会自动生成,如果在定义表的时候没有指定。如mysql中的row_key.生成规则是,表定义主键 —> 如果没有,取唯一主键 —> 如果没有,数据自动生成。
在数据库中,也自动递增。

  • Auto_increment mysql
  • sequence sql:2003

外键,某一个属性是其它表的主键,即为外键。

外键约束,即外键的值需要其对应的主表存在数据

数据操作语言(DML ) data manipulation languages

Procedural(过程化) 与 NonProcedural(非程序性 或者 声明式)

DDL,对数据定义语言

Footnotes

  1. Relational Data Model - open-courses