前言

在学完诸多Java框架之后,深感自己基础不牢。打算从头开始学习计算机的基本知识,为后续的发展做准备。在诸多计算机基础知识中,我选择了与我关联最大的数据库开始学习。数据库系统是一门非常抽象的学科,期望在完成这一系列文章之后,能结合自己的实践对数据库加入自己更深的理解

为什么要学数据库

  • Everything Over DB:传统社会的业务工作已经无法满足现代社会的需求,我们需要计算机的帮助
  • 信息积累运用的基础:帮助人们从繁重的数据管理中解脱出来
  • 基于数据库的应用——大数据。一切以数据说话。

    学习数据库重要的不是技术,而是思维。

对“表”的抽象

数据起源于表——人们对日常生活信息的整理。在数据库中,表也作为最重要的主体部分。表也不是胡乱选取的,需要我们对表做出正确的抽象:理解-区分-命名-表达。

我们需要对生活中的信息有着足够的理解,并从中抽取出需要的信息

表(Table)的常用术语

表由表名、表标题(格式)、表内容(值)组成。

其中表内容包括行(row)列(column),行又可以称为元组(tuple)记录(record),列又可以称为字段(field)属性(attribute)数据项(data item)

Table中描述了一批互相有关联关系的数据的集合。

数据库与表的关系

数据库是有关联关系的若干个table的集合。

数据库系统

基本术语

  • 数据库(DB):DataBase。一组数据的集合
  • 数据库管理系统(DBMS):DataBase Management System。数据库管理软件
  • 数据库应用(DBAP):DataBase Application。基于数据库开发的应用
  • 数据库管理员(DBA):DataBase Administrator。通过数据库管理系统管理数据库。

数据库管理系统(DBMS)

DBMS的功能

对于用户来说,对DBMS的要求有:

  1. 数据库定义:DBMS为用户提供一套数据定义语言(DDL,Data Definition Language),用户使用DDL创建数据库及其中的Table;
  2. 数据库操作:DBMS为用户提供一套数据操纵语言(DML,Data Manipulation Language),用户使用DML来实现数据库的CRUD(增删改查)操作;
  3. 数据库控制:DBMS为用户提供一套数据控制语言(DCL,Data Control Language),用户使用DCL描述其对数据库所要实施的控制(包括且不限于控制哪些用户能够访问哪些字段);
  4. 数据库维护:DBMS提供一系列程序(使用程序/例行程序)给用户,用户使用这些程序来实现数据库的转储、恢复、重组、性能检测和分析等功能。

    上述1、2、3点综合起来,形成了我们操作数据库的SQL语言(结构化的数据库语言)

    对于系统,DBMS的实现要求:形式->构造->自动化,实现解析语言并执行。

    DBMS为了完成数据库的管理,在后台运行这一系列程序:

  • 语言编译器:将用数据库语言书写的内容,翻译成DBMS可执行的命令。例如:DDL编译器、DML编译器、DCL编译器等;
  • 查询优化(执行引擎)与查询实现(基本命令的不同执行算法):提高数据库检索速度的手段。例如穿插于数据存取各个阶段的优化程序;
  • 数据存取与索引:提供数据在磁盘、磁带上高效存取的手段。例如:存储管理器、缓冲区管理器、索引/文件和记录管理器等;
  • 通信控制:因为数据库与数据库应用的通信要求,且现代大型项目的数据库通常是分布式管理。所以提供网络环境下数据库操作和数据传输的手段是必要的;
  • 事务管理:提高可靠性避免并发操作错误。如脏读…
  • 是数据库 自动恢复到故障发生前正确状态的手段,例如提供了运行日志操控等实用程序
  • 安全性控制:提供合法性检验,避免非授权非法用户访问数据库
  • 完整性控制:提供数据及数据操作正确性检查的手段
  • 数据字典管理:管理用户已经定义的信息
  • 应用程序接口(API):提供应用程序使用DBMS特定功能的手段‘
  • 数据库数据装载、重组等使用程序
  • 数据库性能分析:统计在运行过程中数据库的各种性能数据,便于优化运行

数据库语言

数据库与高级语言

1.一条数据库语言语句相当于高级语言的一个或多个循环程序。

例如:

select id, name 名字 from table where id = 1;

相当于Java中的:

for(int i=0; i<n; ++i) {
    if (user[i].id == id) {
        return user[i];
    }
}
2.数据库可以嵌入到高级语言(宿主语言)中使用

总结

本文是基于哈工大在慕课网发的《数据库系统》,待补充...


孑立
27 声望1 粉丝

在校读书的一个蒟蒻。未来方向是后端开发,业余学了一点python与c++QT