为什么需要数据库? 1 我们知道,如果使用csv来存储的话,会存在很多痛点。无法高效的对数据进行格式校验、数据的范式、查询效率、多线程的一致性,持久化等进行控制。所以就需要出现数据库。
DBMS的提出
分离逻辑层和物理层
在计算机的设计中,有个很重要的原则,就是基于接口编程,不依赖具体的实现,这样就很容易替换实现层。而不进行强耦合。
数据库的设计,很多也是这个思想。比如在mysql中,存在很多存储引擎,而不用关心具体的实现。系统的开发者,只需要关系逻辑层,而不用关系底层数据是如何存储的,如何保证recovery等具体实现。
codd 提出了关系型数据库,以及几个主要思想
- 数据库使用简单的数据结构
- 使用高级语言来处理数据。如SQL语言
- 逻辑和物理层分离
数据模型
在系统开发者使用时,需要根据所需存储的数据进行建模。这里主要涉及到数据模型。主要包含关系型数据库、NoSQL(键值数据库—redis、图数据库— neo4j、文档数据库— monogodb、列族数据库 — hbase)、矩阵数据库—机器学习所用。
关系模型
在关系数据库中,表的本质就是关系。tuple,元组,可以简单认为数据库的一行数据。
主键
在关系数据库中,会使用主键(peimary key)来唯一标识一个tuple,即表示一行记录。有些数据库会自动生成,如果在定义表的时候没有指定。如mysql中的row_key.生成规则是,表定义主键 —> 如果没有,取唯一主键 —> 如果没有,数据自动生成。
在数据库中,也自动递增。
- Auto_increment mysql
- sequence sql:2003
外键,某一个属性是其它表的主键,即为外键。
外键约束,即外键的值需要其对应的主表存在数据
数据操作语言(DML ) data manipulation languages
Procedural(过程化) 与 NonProcedural(非程序性 或者 声明式)