Chapter 1 Introduction 引言

参考书目:《数据库系统概念》第7版,机械工程出版社

Reference: Database System Concepts, 7th Edition

  • 数据库管理系统(DataBase Management System, DBMS)
  • 互相关联的数据集合和一组用以访问这些数据的程序组成。
  • 提供方便,高效的存取数据信息。

1.1 应用

  • 联机事务处理。(online transaction processing)

    • 大量用户使用数据库,每个用户检索相对少量的数据进行小的更新。
  • 数据分析。(data analytics)
    • 审阅数据,得出结论,推导规则和决策程序驱动业务决策。
  • 数据挖掘。(data mining)

1.2 目标

  • 原先处理大量数据的方式是采用文件处理系统(file processing system)。将数据记录存储在多个不同的文件中,需要有不同的应用程序来记录或取出数据。
  • 造成了以下的弊端
    • 数据冗余和不一致性(data redundancy and inconsistency)
    • 数据访问困难(accessing difficulty)
    • 数据孤立。(data isolation)
    • 完整性问题(integrity problem)
    • 一致性约束(consistency constraint)
    • 原子性问题(atomicity problem)
    • 并发访问异常(concurrent anomaly)
    • 安全性问题(security problem)

1.3 数据视图

  • 数据库是一些互相关联的数据和一组用户可以访问和修改这些数据的程序的集合。
  • 主要目的:提供给用户数据的抽象视图

1.3.1 数据模型

  • 关系模型(relational model)。表的集合来表示数据和数据之间的关系。列名唯一,表称为关系

    • 基于记录的模型。
    • 数据库由若干固定格式的记录构成,每个表包含某种特定类型的记录。
    • 记录类型确定了固定数目的字段或者属性。
    • 表的列对应于记录类型的属性
  • 实体-联系模型(entity-relationship model)
    • 实体的基本对象集合,以及对象之间的联系。
  • 半结构化数据模型(semi-structured data model)
    • 允许定义相同类型数据项的不同属性集合。
    • Json和XML都是半结构化。
  • 基于对象的数据模型(object-based data model)
    • 对象数据集。

1.3.2 关系数据模型

  • 表的形式表示数据。
  • 每个表具有多个列,每个列具有唯一的名字。
  • 表的每一行表示一条信息。

1.3.3 数据抽象

  • 层次划分如下,用于屏蔽复杂性,简化交互。

    • 物理层(physical level), 描述数据如何存储。详细描述复杂底层数据结构。
    • 逻辑层(logical level)。描述了存储什么数据,以及存储数据的相互关系。逻辑层不需要了解物理层的具体实现,称为物理数据独立性(physical data independence)
    • 视图层(view level)。最高层次的抽象,只描述数据库的某个部分。

1.3.4 实例和模式

  • 特定时刻存储在数据库中的信息的集合称为实例(instance), 数据库的整体设计称为数据库模式(schema)
  • 时刻 -> 实例,模式 -> 类型
  • 物理模式:在物理层描述数据库的设计。逻辑模式:在逻辑层描述数据库的格式。子模式:描述不同视图。

1.4 数据库语言

  • DDL:Data Definition Language,数据定义语言。
  • DML:Data Manipulation Language,数据操纵语言。

1.4.1 DDL

  • 实现对数据的存储结构和访问方式的说明,定义数据库的细节。

    • 域约束(domain constraint):每个属性必须对应于一个所有的可能的取值对应的域。声明一个属性相当于约束它可以取的值。完整性约束的最基本方式。
    • 引用完整性(refrential integrity):在某些给定属性集上的取值在另一个关系的某一属性集的取值中出现。对于破坏引用完整性的操作,一般拒绝执行。
    • 授权(authorization):对用户进行区别,允许不同操作。
      • 读入权限(Read authorization),仅允许读取数据。
      • 插入权限(Insert authorization),允许插入+读取,不允许修改。
      • 更新权限(Update authorization),允许修改+读取,不允许删除。
      • 删除权限(Delete authorization),允许删除数据。
  • DDL语句处理具有输出,存档在数据字典(data dictionary)中。数据字典包含元数据(metadata)。字典是一个特殊的表。

1.4.2 SQL DDL

create table dept
(
dept_name char(20),
building char(15).
budget numeric(12,2)
);

上述DDL语句创建了department表格,具有三列,每列具有与之相关联的数据类型。

1.4.3 DML

  • DDL具有以下几种访问类型

    • 对信息进行检索。
    • 插入新的信息。
    • 删除信息。
    • 修改数据库中存储的信息。
  • 存在两种类型的数据操纵语言:

    • 过程化(procedual DML),指定需要什么数据,如何获得这些数据。
    • 声明式(declarative DML),非过程话DML,不必之名如何获得。

1.4.4 SQL DML

select instructor.name
from instructor
where instructor.dept_name = 'history';

进行查询,执行结果返回一个表,包含单个列name。有若干行,每一行均为符合要求的结果。

1.5 数据库设计

  • 概念框架 -> 模式选择 -> 概念设计 -> 规范化 -> 功能需求说明 -> 逻辑设计 -> 物理设计(自顶向下)

1.6 数据库引擎

  • 存储管理器
  • 查询处理器
  • 事务管理部件

1.6.1 存储管理器

  • 负责在数据库中存储的底层数据与应用程序以及向系统提交的查询之间提供接口的部件。

  • 部件包括:

    • 权限及完整性管理器:完整性约束与用户权限检查。
    • 事务管理器:一致性保证和并发管理。
    • 文件管理器:磁盘存储空间分配。
    • 缓冲区管理器:决定数据是否缓冲存储。
  • 实现了数据结构:

    • 数据文件
    • 数据字典:数据库结构的元数据,特别是数据库模式。
    • 索引:对数据项的快速访问。

1.6.2 查询处理器

  • DDL interpreter: 解释DDL并存储定义。
  • DML compiler: 翻译DML成一系列能执行的低级指令执行方案。也会进行查询优化。
  • 查询执行引擎:执行经过DML翻译后的语句。

1.6.3 事务管理

  • 事务(transaction):数据库中完成单一逻辑功能的操作集合。

    • 要求事务的原子性,即不能同时发生。
    • 要求事务的一致性,即要维护逻辑约束完整性。
    • 要求事务的持久性,能够从故障/错误中恢复。

1.7 数据库和应用体系结构

  • 进行并行/分布式部署。
  • 二层和三层体系结构,现在一般为三级体系结构。

Chapter 1 数据库简介的更多相关文章

  1. MongoDB数据库简介及安装

    一.MongoDB数据库简介 简介 MongoDB是一个高性能,开源,无模式的,基于分布式文件存储的文档型数据库,由C++语言编写,其名称来源取自"humongous",是一种开源 ...

  2. Oracle数据库简介

    Oracle数据库简介 一.介绍 Oracle数据库系统是美国Oracle(甲骨文)公司提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(Client/Server,C/S)或浏览 ...

  3. 数据库 简介 升级 SQLite 总结 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  4. MongoDB,无模式文档型数据库简介

    MongoDB的名字源自一个形容词humongous(巨大无比的),在向上扩展和快速处理大数据量方面,它会损失一些精度,在旧金山举行的MondoDB大会上,Merriman说:“你不适宜用它来处理复杂 ...

  5. 全球第一开源ERP Odoo操作手册 数据库简介

    1.3 数据库简介 每一个独立核算的企业都有一套相互关联的账簿体系, 把这一套完整的账簿体系建立在计算机系统中就称为一个数据库. 一般一个企业只用一个数据库. 如果企业有几个下属的独立核算的实体,也可 ...

  6. MySql数据库基础之数据库简介及安装

    MySql数据库简介: 众所周知,MySql数据库是一款开源的关系型数据库,在Web应用方面,MySql是最好的.最流行的RDBMS(Relational Database Management Sy ...

  7. Scopus数据库简介

    ScienceDirect数据库1. Elsevier简介荷兰Elsevier 是全球最大的科学文献出版发行商,已有180多年的历史.其产品涵盖科学.技术和医学等各个领域,包括1800多种学术期刊(大 ...

  8. 数据库----ORACLE和MYSQL数据库简介

    一.什么是数据库? 数据库(Database---DB)按照组织.储存和管理数据的仓库.(理解以下三个概念)   数据(Data)用来描述事物的记录都可称数据,如文字音乐图像.   数据库系统(Dat ...

  9. 数据库之一、数据库简介及SQL概要

    1.数据库简介: 数据库(Database,DB)是一个长期存储在计算机内的.有组织的.有共享的.统一管理的数据集合.简单来讲就是可以放大量数据的地方.管理数据库的计算机系统称为数据库管理系统(Dat ...

  10. 1.Oracle数据库简介

    Oracle数据库简介 Oracle Database,又名Oracle RDBMS,或简称Oracle.是甲骨文公司的一款关系数据库管理系统.它是在数据库领域一直处于领先地位的产品.可以说Oracl ...

随机推荐

  1. nsw与mock 模拟分页接口

    安装依赖 项目中使用到一下依赖,请提前安装 npm install msw lodash axios 开启mock 定义mock,创建 src/mock/index.ts import _ from ...

  2. AtCoder Beginner Contest 214 ABCDE 题解

    A - New Generation ABC 思路:分段讨论 view code #include<iostream> #include<string> #include< ...

  3. ETL的全量和增量模式

    在当今信息爆炸的时代,数据管理已经成为各行各业必不可少的一环.而在数据管理中,全量与增量模式作为两种主要的策略,各自具有独特的优势和适用场景,巧妙地灵活运用二者不仅能提升数据处理效率,更能保障数据的准 ...

  4. 【原创工具】文件清单生成器 By怜渠客

    [原创工具]文件清单生成器 By怜渠客 刚在论坛看到了一个文件列表生成器 https://www.52pojie.cn/thread-2008605-1-1.html ,和我去年写的一个软件很像,当时 ...

  5. SciTech-Chemistry(化学)-电解: 电化学之"Electroplating(电镀)"工艺及应用 + Switching Power(开关电源 可软件控制波形)

    Electroplating(电镀): Electroplating(电镀)是 "镀液的金属离子" 在外电场作用, 经 "电极反应" 还原成"金属原子 ...

  6. Linguistics-English-对比Resolve(决心意志)与Determination(决心勇气) + 对于“multiple objects”的“优(advantages)缺(disadvantages)点”的对比的English template(英文模板)

    Address from the speech of president Regan: Can anyway still doubt their single-minded(乐此不疲的) determ ...

  7. shardingsphere从4.4.1升级至5.5.5注意事项

    为方便讨论,假设有下面2张订单表:t_order_vip(用于存放VIP的订单),t_order_normal(用于存放普通用户的订单)  -- 注:为了演示自定义分片算法而设想的场景,大家不必太纠结 ...

  8. 深度解决win10专业版启动修复错误的问题

    有一位深度系统的用户,电脑不知道因为什么原因,不能进入桌面了.而且使用win10专业版系统启动修复也提示错误,无法修复的问题,这该怎么办?接下来,深度技术小编就来分享具体的处理方法,有需要的小伙伴可以 ...

  9. static和final的区别,抽象类和接口的区别

    Java中static和final的区别   static是静态修饰关键字,可以修饰变量和程序块以及类方法: 当定义一个static的变量的时候jvm会将将其分配在内存堆上,所有程序对它的引用都会指向 ...

  10. Java数组操作——2.数组排序

    目录 Java数组排序 排序的基本概念与重要性 经典排序算法:冒泡排序 冒泡排序的实现原理 代码实现:升序排列 Java标准库的排序方法:Arrays.sort() 基本用法 排序对数组的影响 对字符 ...