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. 智力大冲浪 C++

    题目描述 小伟报名参加中央电视台的智力大冲浪节目.本次挑战赛吸引了众多参赛者,主持人为了表彰大家的勇气,先奖励每个参赛者 m 元.先不要太高兴!因为这些钱还不一定都是你的?!接下来主持人宣布了比赛规则 ...

  2. 开发工具系列005-Hexo + gitub搭建个人博客教程

    1.0 说明 其实,搭建个人博客的技术方案有很多. 其实,你能找到的使用Hexo + Github搭建个人博客的教程也有很多. 所以,其实这是一篇没必要的文章,但因为种种原因我还是写了这篇简单的教程. ...

  3. 自动安装依赖的 ubuntu dpkg 的竞品gdebi

    简介 dpkg 安装的时候总会出现缺少依赖的情况要自己可能手动安装,但是有了gdebi就可以帮你轻松搞定. 例如坚果云的安装 使用gdebi安装,自动安装依赖 sudo gdebi nautilus_ ...

  4. java 代理类

    简介 理解不透彻 简而言之,就是在程序运行过程中创建的类 一个代理类只有一个实例域--调用处理器.invoke? 总而言之 reflect 的理解都不是特别透彻 code package cn; im ...

  5. 有哪些值得推荐的ESB厂商

    国内比较好的esb厂商有哪些 企业要想追求创新性转型,就必须要实现企业内部系统的互联互通以及与外部合作伙伴的高效协作,而企业服务总线(ESB)作为实现系统集成的关键技术,是企业发展路径上不可多得的助力 ...

  6. tauri学习(5)-Splashscreen启动界面

    接上节继续,本文将研究splashscreen,也就是程序的启动界面,通常有2二种应用场景: 1.程序太复杂,主界面完成加载需要很长时间,为了优化用户体验,可以先放一个启动图片,缓解用户等待的焦虑. ...

  7. win10专业版插耳机没声音怎么设置的问题

    有很多深度官网的小伙伴,在用Windows 10电脑时,遇到插上耳机后却没有声音的问题.这个问题很多小伙伴都遇到过,接下来,深度技术小编就为大家带来具体的解决方法,有需要的用户,可以参考一下. win ...

  8. MSDN 我告诉你官方原版系统下载方法教程

    有很多喜欢MSDN 我告诉你,I Tell You官方原版ISO系统的小伙伴,但是都不太清楚如何才能下载里面的系统,下面msdn123就来分享一下具体的方法教程.方法如下:我们先打开msdn官网:ww ...

  9. 从Mono脚本生成Entity:深入理解Unity DOTS中的Archetype、Chunk与Entity结构设计

    Unity 的 DOTS(Data-Oriented Technology Stack)是面向性能极致优化的一种架构范式,其底层结构设计并非偶然,而是深思熟虑的结果.本篇文章将从开发者最熟悉的入口-- ...

  10. Unity Inspector 绘制备注信息 多语言辅助

    属性 using System; using System.Collections; using System.Collections.Generic; using UnityEngine; [Att ...