引言

数据库系统的应用

数据库管理系统(DataBase-Management System,DBMS):由一个互相关联的数据的集合和一组用以访问这些数据的程序组成。这个数据集合称作数据库
数据库应用:数据库的应用十分广泛,比如在企业中,数据库用于记录客户,产品,员工,账单等信息。

数据库系统的目标

**数据库管理系统(DBMS)出现之前,各组织通常采用文件处理系统(file-processing system)来存储信息。文件处理系统:将永久记录存储在多个不同的文件中,人们编写不同的应用程序来将记录从有关文件中取出来或加入到合适的文件中。可能会因为需要编写新的应用程序来处理新的数据,所以随着时间的推移,会有越来越多的文件和应用程序加入到系统中。引入数据库管理系统(DBMS)**的目的就是为了克服文件处理系统的一些主要弊端。主要弊端如下:
数据的冗余与不一致:文件和程序在很长一段时间内由不同程序员创建,所以不同文件可能有不同结构,不同不同程序可能由不同程序语言设计,此外相同的信息可能在几个地方(文件)重复存储。
访问数据困难:原始系统中没有编写满足特定访问需求的程序,如需获取居住在某个地区的学生的姓名,但原始的系统并没有预料到这样的需求,所以不存在对应的程序。只能通过手动筛选或者是特意编写对应的程序。
数据孤立:由于数据分散在不同文件中,这些文件又可能具有不同的格式,因此编写新的应用程序来检索适当数据是很困难的。
原子性问题:在传统的文件处理系统中保持原子性是很困难的。一些操作必须是原子的,要么完全实现,要么完全没实现,如果只实现了其中一部分会导致数据库的状态不一致。
并发访问异常:为了提高系统的总体性能以及加快响应速度,许多系统允许多个用户同时进行数据更新。而并发的更新操作可能会互相影响,导致数据的不一致性,所以需要某种形式进行管理。但是数据可能会被不同应用程序访问,这种管理就很难进行。
安全性问题:并非数据库系统的所有用户都可以访问所有数据。但是由于应用系统总是即席地加入到文件处理系统中来,这样安全性约束难以实现。

数据视图

数据系统一个主要目的是给用户提供数据的抽象视图,也就是说,系统隐藏关于数据存储与维护的某些细节。

数据抽象

一个系统必须高效地检索数据,需要使用复杂的数据结构才表示数据。系统开发人员通过如下几个层次的抽象来对用户屏蔽复杂性。
下面展示一些 代码。

type instructor = recordID:char(5);name:char(20);dept_name:char(20);salary:number(8,2`);end;```

物理层:最低层次的抽象,描述数据实际上是怎样存储的。物理层详细描述复杂的底层逻辑,一个Instructor,department可能被描述为连续存储位置组成的存储块。数据库系统为程序设计人员屏蔽许多最底层的存储细节,数据库管理员可能需要了解数据物理组织的某些代码。
逻辑层:描述数据库中存储什么数据以及这些数据间存在什么关系。虽然逻辑层的简单结构的实现可能涉及复杂的物理层结构,但逻辑层的用户不必知道这样的复杂性。这称作物理独立性。在逻辑层中,数据正如前面的代码段表示,每个记录通过类型定义进行描述,并且还要定义数据之间的关系。程序设计人员正是在这个抽象层次上设计程序,数据库管理员往往也在这个层次上工作。
视图层;最高层次的抽象,只描述整个数据库的某个部分。逻辑层虽然以及使用了较简单的结构,但由于一个数据库中存在信息的多样性,仍存在一定复杂性。系统可以为同一个数据库提供多个视图。在视图层,用户看到的是屏蔽了数据类型细节的一组应用程序。同时视图也能提供部分安全性,比如大学注册办公室的职员只能看见数据库中关于学生的那部分信息,而不能访问设计教师工资的信息。

实例和模式

实例:特定时刻存储在数据库中的信息的集合称作数据库的一个实例。
模式:数据库的总体设计模式称作数据库模式(schema)。模式可以分为物理模式(physical schema)与逻辑模式(logical schema),物理模式在物理层描述的数据库的设计,而逻辑模式(也称子模式)则在逻辑层描述数据库的设计。

数据模型

数据库的基础是数据模型(data model)。数据模型是一个描述数据,数据联系,数据语义以及一致性约束的概念工具的集合。数据模型提供了一种描述物理层,逻辑层以及视图层数据库设计的方式。
数据模型可划分为四类:
关系模型(relational model):关系模用表的集合来表示数据与数据间的联系。
实体-联系模型(entity-relationship model):实体-联系(E-R)数据模型基于对现实世界的这样一种认识:现实世界由一组称作实体的基本对象以及这些对象间的联系构成。
基于对象的数据模型(object-based data model):可以看成是E-R模型增加了封装,方法(函数)和对象标识等概念后的扩展。对象-关系数据模型结合了面向对象和关系数据模型的特征。
半结构化数据模型(semistructured data model):半结构化数据模型允许那些相同类型的数据项含有不同属性的数据定义。先前提到的数据模型,相同的数据项必须有相同的属性集。可扩展标记语言(eXtensible Markup language,XML)被广泛拿来表示半结构化数据。
此外还要**网状数据模型(network data model)层次数据模型(hierarchical data model)**先于关系模型出现,与底层的实现十分紧密。

数据库语言

数据库操作语言

**数据操纵语言(Data-Manipulation Language,DML)**是这样一种语言,它使得用户可以访问或操作那些按照某种适当的数据模型组织起来的数据。主要访问类型如:对存储在数据库中的信息进行检索,向数据库中插入新的信息,或者删除信息,修改数据库中存储的信息。
通常有两类基本的数据库操作语言:
过程化DML(procedural DML):要求用户指定需要什么数据以及如何获取这些数据。
声明化DML(declarative DML):只要求用户指定需要什么数据,而不指明如何获取这些数据。

查询(query)是要求对信息进行检索的语句。DML中涉及信息检索的部分称为查询语言(query language)

数据库定义语言

数据库模式是通过一系列定义来说明的,这些定义由一种称作数据定义语言(Data-Definition Language,DDL)
数据库系统所使用的存储结构和访问方式是通过一系列特殊的DDL语句来说明的,这种特殊的DDL称为数据存储与定义语言(data storage and definition)

关系数据库

每个表有多个列,每个列有唯一的名字。

ID name dept_name salary
2222 Einstein physics 95000
12121 Wu Finance 90000
32343 El Said History 60000

数据操作语言

sql查询语句是非过程化的,它由一个或者几个表作为输入,总是仅返回一个表。以下有一个查询出历史系所以教师名字的例子:

slect instructor.ID,department.dpet_name
from insrtuctor
where instructor
where instructor.dept_name = 'History';

查询涉及的信息可能不仅来自一个表。例如以下将预算超过95000美元的系相关联的所有教员的ID和系名。

select instructor.ID,department.dept_name
from insrtuctor,department
where instructor.dept_name = department.dept_name and department.budget > 95000

数据定义语言

sql提供了丰富的DDL语言,例如以下SQL DDL语句定义了department表

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

DDL的输出放在放在数据字典中(data dictionary)中,数据字典包括了元数据(metadata),元数据是关于数据的数据,表就是元数据的一个例子

数据库设计

设计过程

第一步,高层的数据模型为数据库设计者提供一个概念框架,去说明数据库用户的数据需求,以及如何构造数据库结构满足这些需求。该阶段得出的成果是指定出用户需求的规格文档。功能需求说明
第二步,概念设计阶段,设计者选择一个数据模型,并运用该选定的数据模型的概念,将这些需求转化成一个数据库的概念模型。这阶段的重点是秒速数据以及它们之间的关系,而不是指定物理的存储系统。如何将这些属性组织到多个表中,可以通过实体-联系模型或是引入一套算法(通称为规范化)。
第三步逻辑设计阶段,将高层的数据模型转换到要使用的数据库系统的实现数据模型上。比如将E-R 图转换为多张表,进行逻辑设计,确认各表的主外键,并应用数据库设计的三大范式进行审核,对其优化 。
第四部物理设计阶段,在这个阶段中指定数据库的物理特性,这些特征包括文件组织形式以及内部的存储结构。

实体-联系模型

实体-联系(E-R)数据模型使用一组称作实体的基本对象,以及对象间的联系。

规范化

设计关系数据库所用的另一种方法是通常被称为规范化的过程。它的目的是生成一个关系数据模式集合,使我们存储信息没有不必要的冗余,同时又能轻易检索数据。这种方式是设计一种符合适当的范式(normal form)的模式,为确定一个关系模式是否符合想要的范式,我们需要额外的关于用数据库建模的现实世界中机构的信息。最常用的就是函数依赖(functional dependency)

数据存储和查询

数据库系统划分为不同模块,每个模块完成整个系统的一个功能。数据库系统的功能部件大致可分为存储管理器和查询处理部件

存储管理器

存储管理器是数据库系统中负责在数据库中存储的底层数据与应用程序以及向系统提交的查询部件之间提供接口的部件。存储管理器负责与文件管理器进行交互,原始数据通过操作系统提供的文件系统存储在磁盘上。存储管理器将各种DML语句翻译为底层文件系统命令。因此存储管理器负责数据库中数据的存储,检索和更新。
存储管理部件包括:
权限以及完整性管理器(authorization and integrity manager),它检测是否满足完整性约束,并检查试图访问数据的用户的权限。
事务管理器(transaction manager),它保证即使发生了故障,数据库也保持在一致的(正确的)状态,并保证并发事务的执行不发生冲突。
文件管理器(file manager),它管理磁盘存储空间的分配,管理用于表示磁盘上所存储信息的数据结构。
缓冲区管理器(buffer manager),它负责把数据从磁盘上取到内存中来,并决定哪些数据应该被缓存储在内存中。
存储管理器实现了几种数据结构,作为系统物理实现的一部分:
数据文件(data files),存储数据本身。
数据字典(data dictionary),存储关于数据库结构的元数据,尤其是数据库模式。
索引(index),提供对数据项的快速访问。和书中的索引一样,数据库索引提供了指向包含特定值的数据的指针。

查询处理器

DDL解释器(DDL interpreter),它解释DDL语句并将这些定义记录在数据字典。
DML编译器(DML compiler),将查询语句中的DML语句翻译成一个执行方案,包括一系列查询执行引擎能理解的低级指令。
一个查询通常可以被翻译成多种等价的具有相同结果的执行方案的一种,DML编译器还进行查询优化(query optimization),也就是从几种选择中选出代价最小的一种。
查询执行引擎(query evaluation engine),执行由DML编译器产生的低级指令。

事务管理

事务(transaction)是数据库应用中完成单一逻辑功能的操作集合。比如说转账,从A账户进行取出操作,对B账户进行存入操作,这两个操作必须保证一起发生或者都不发生,两个操作可以称为一个事务。
原子性(Atomicity):单个事务,为一个不可分割的最小工作单元,整个事务中的所有操作要么全部commit成功,要么全部失败rollback,对于一个事务来说,不可能只执行其中的一部分SQL操作,这就是事务的原子性。

一致性(Consistency):数据库总是从一个一致性的状态转换到另外一个一致性的状态。在前面的例子中, 一致性确保了,即使在执行第三、四条语句之间时系统崩潰,信用卡账户也不会损 失100块,因为事务最终没有提交,所以事务中所做的修改也不会保存到数据库中,保证数据一致性。

隔离性(Isolation):通常来说,一个事务所做的修改在最终提交以前,对其他事务是不可见的。在前面 的例子中,当执行完第三条语句、第四条语句还未开始时,此时有另外一个账户查询余额SQL开始运行,则其看到的信用卡账户的余额并没有被减去100元。后面我们讨论隔离级别(Isolation level)的时候,会发现为什么我们要说事务通常来说是不可见的。

持久性(Durability):一旦事务提交,则其所做的修改就会永久保存到数据库中。此时即使系统崩溃,修改的数据也不会丢失。

适当定义各个事务是程序员的职责,事务的定义应使之能保持数据库的一致性。原子性和持久性的保证是数据库系统自身的职责,确切的说,是恢复管理器(recovery manager)的职责。如果发生故障,事务没有成功执行完,那么数据库必须被恢复到该事务开始执行以前的状态,需进行故障恢复(failure recovery),即检测系统故障并将数据库恢复到故障发生以前的状态。
当多个事务同时对数据库进行更新时,即使每个事务单独执行都是正确的,数据的一致性也可能被破坏。并发控制管理器(concurrency-control manager)控制并发事务间的相互影响,保证数据库的一致性。事务管理器(transaction manager)包括并发控制管理器和恢复管理器。

数据库体系结构



今天数据库系统的大部分用户并不直接面对数据库系统,而是通过网络与其相连。我们可以区分远程数据库用户工作用的客户机(client)和运行数据库系统的服务机(server)。
数据库系统通常可以分为两个或者三个部分。在一个**两层体系结构(two-tier architecture)**中,应用程序驻留在客户机上,通过查询语言表达式来调用服务器上的数据库系统功能。三层体系结构(three-tier architecture)中,客户机只作为一个前端并且不包含任何直接的数据库调用。客户端通常通过一个表单界面与应用服务器(application server)进行通信。而应用程序与数据库系统通信以访问数据。应用程序的业务逻辑(business logic),是嵌入到应用服务器上的而不是分布在多个客户机上,该结构更适合大型应用与互联网上的应用。

数据挖掘与信息检索

数据挖掘(data mining)这个术语指半自动化地分析大型数据库并从中找出有用的模式的过程。和人工智能中的知识发现(也称为机器学习(machine learning))或者统计分析一样,数据挖掘试图从数据中寻找规则和模式。但是数据挖掘与机器学习,统计分析的不同之处在于,它处理大量主要存储在磁盘上的数据。也就是说,数据挖掘就是在数据库中发现知识。
大型企业有各种不同的可用于帮助做决策的数据来源。要在这些各种各样的数据上高效地执行查询,企业建立了数据仓库(data warehouse)。数据仓库从多个来源收集数据,建立统一的模式,驻留在单个节点上。
查询非结构化的文本数据被称为信息检索(information retrieval)

特种数据库

基于对象的数据模型

这导致面向对象**数据模型(object-based data model)**的发展,面向对象模型可以看作E-R模型的扩展,增加了封装、方法(函数)和对象标识。

半结构化数据模型

半结构化数据模型允许那些相同类型的数据项有不同的属性集的数据说明。

数据库用户与管理员

数据库用户和用户界面

数据库用户可以分为四种不同类型。
无经验的用户(naive user):是默认经验的用户,他们通过激活事先已经写好的应用程序同系统进行交互。
应用程序员(application programmer):是编写应用程序的计算机专业人员。
老练的用户(sophisticated user):不通过编写程序来同系统交互,而是用数据库查询语言或者数据分析软件这样的工具来表达他们的要求。
专门的用户(specialized user):是编写专门的、不适合于传统数据处理框架的数据库应用的富有经验的用户。

数据库管理员

对系统进行集中控制的人称作数据库管理员(DataBase Administrator,DBA)。DBA作用包括:
模式定义(schema definition):通过DDL书写的一系列定义来创建最初的数据库模式。
存储结构及存取方法定义(storage structrue and access-method definition)
模式及物理组织的修改(schema and physical-organization modification)
数据访问授权(granting of authorization for data access)
日常维护(routine maintenance)

数据库系统的历史

数据库的发展历史经历了人工管理、文件系统和数据库系统三个发展阶段。
人工管理数据具有如下特点:
1、数据不保存
2、数据需要由应用程序自己管理,没有相应的软件系统负责数据的管理工作
3、数据不共享
4、数据不具有独立性,数据的逻辑结构或物理结构发生变化后,必须对应用程序做相应的修改,这就进一步加重了程序员的负担。
文件系统阶段特点为:

1、数据可以长期保存

2、由专门的软件即文件系统进行数据管理,程序和数据之间由软件提供的存取方法进行转换,使应用程序与数据之间有了一定的独立性,程序员可以不必过多地考虑物理细节,将精力集中于算法。

3、数据共享性差

4、数据独立性低

数据库系统阶段特点为:

1、数据结构化

2、数据的共享性好,冗余度低

3、数据独立性高

4、数据由DBMS统一管理和控制

数据库系统概念 引言(一)相关推荐

  1. 数据库系统概念笔记-引言

    转载自 数据库系统概念笔记-引言  作者 CyninMa 数据库系统概念笔记-引言 数据库管理系统(DBMS)由一个互相关联的数据的集合和一组用以访问这些数据的程序组成.这个数据集合通常称作数据库,其 ...

  2. 《数据库系统概念》第一章:引言

    数据库(database):一个互相关联的数据的集合. 数据库管理系统(DataBase-Management System,DBMS):由数据库和一组用以访问这些数据的程序组成. 数据视图 数据抽象 ...

  3. 数据库系统概念读书笔记-引言

    学习数据库的基本的概念,采用了原书第6版的数据库系统概念,该书的Web站点为http://www.db-book.com.参考内容来自卡内基梅隆 数据库导论 2018,讲师:Andy Pavlo,课程 ...

  4. 《数据库系统概念》一二章学习笔记

    书上的例子以及练习题都是用 Mysql 实现的,操作系统使用的 macOS.在使用 Mysql 遇到问题时,推荐查看官方文档 Mysql Reference Manual. 第一章 引言 第一章就是综 ...

  5. 《数据库系统概念》——关系数据库

    文章目录 一.引言 二.关系数据库 1. 关系模型介绍 1.1. 关系数据库的结构 1.2. 数据库模式 1.3. 码 △1.4. 模式图 1.5. 关系查询语言 1.6. 关系运算 1.7. 关系代 ...

  6. 《数据库系统概念》——实体-联系模型

    文章目录 一.引言 二.学习 1. 实体-联系模型 1.1. 实体集 1.2. 联系集 1.3. 属性 2. 约束 2.1. 映射基数 2.2. 参与约束 2.3. 码 2.4. 从实体集中删除冗余属 ...

  7. 数据库系统概念 复习总结

    数据库系统概念 Database Systems Concepts 第六版 来源:https://blog.csdn.net/qq_39326472/article/details/88420916 ...

  8. 数据库书籍-数据库系统概念(原书第6版)

    数据库书籍-数据库系统概念(原书第6版) 基本信息 原书名: Database System Concepts,Sixth Edition 原出版社: McGraw-Hill 作者: (美)Abrah ...

  9. 实体 联系 模型mysql_数据库系统概念读书笔记――实体-联系模型_MySQL

    bitsCN.com 数据库系统概念读书笔记--实体-联系模型 前言 为了重新回顾我写的消息系统架构,我需要重新读一下数据库系统概念的前三章,这里简单的做一个笔记,方便自己回顾 基本概念 实体-联系( ...

最新文章

  1. mybatis mysql crud_Mybatis的CRUD操作
  2. AI将成科学家“高级定制”工具
  3. WP老杨解迷:可知评论系统还能勾搭用户呢
  4. 如何通过牛顿方法解决Logistic回归问题 By 机器之心2017年8月09日 16:30 本文介绍了牛顿方法(Newton's Method),以及如何用它来解决 logistic 回归。log
  5. PHP----------线程安全和非线程安全的介绍
  6. aspen plus大小_AspenPlus
  7. Python教程分享:Python Cookie HTTP获取cookie并处理
  8. C++基础 (1) 常见的易错问题
  9. JavaScript GetAbsoultURl
  10. java面向对象多态特性
  11. linux中负载值为多少正常_Linux系统中load average平均负载
  12. java regex详解
  13. Funcode游戏设计C语言小飞虫
  14. Axure| 旋转控件或者图片
  15. mysql批量生成随机姓名、手机号等数据
  16. 根据浏览器获取经纬度
  17. Kubernetes Secrets
  18. FPS射击游戏透视自瞄之搞定数据逆向csgo(一)-(三)
  19. 为什么建议大家使用 Linux 开发?爽++
  20. 零基础前端入门系列(八)

热门文章

  1. java数据容器_Java容器概览
  2. Java的反编译工具提供官网下载
  3. 能够1年涨薪2次的软件测试工程师,他到底强在哪里?
  4. 一文了解深度学习实战——预测篇
  5. C中strchr()函数用法
  6. 本地Vmware_Centos虚拟与Pnet网络互联互通
  7. JAVA_HOME指的是什么内容?
  8. sql 盲注 (web渗透)
  9. 用flutter_html_view打开大成的cdsn的web网页详细操作
  10. 数据库分类,市场上常见数据库