(1)引言(上)

2019-07-14  本文已影响0人  古剑诛仙

首先解释如下名词:

数据(data)

数据是数据库中存储的基本对象,它是描述事物的符号记录,有多种表现形式,它们都可以经过数字化后存入计算机。描述事物的符号可以是数字、文字、图形、图像、音频等。
数据的解释是指对数据含义的说明,数据的含义称为数据的语义,数据与其语义是不可分的。
记录是计算机中表示和存储数据的一种格式或一种方法。

DB(Database) 数据库

DB是长期存储在计算机内的,有组织的、统一管理的相关数据的集合。DB能为各种用户共享,具有较小的冗余度、数据间联系紧密而又有较高的数据独立性等特点。

DBMS(Database Management System) 数据库管理系统

DBMS是位于用户与操作系统(OS)之间的一层数据管理软件,它为用户或应用程序提供访问DB的方法,包括DB的建立、查询、更新等各种数据控制。DBMS总是基于某种模型,可以分为层次型、网状型、关系型和面向对象型等。它的主要功能:

  1. 数据定义:提供数据定义语言(Data Definition Language,DDL),用户通过它可以方便地对数据库中的数据对象的组成与结构进行定义。
  2. 数据组织、存储和管理:数据库管理系统要分类组织、存储和管理各种数据,包括数据字典、用户数据、数据的存取路径等。
    数据组织和存储的基本目标是提高存储控件利用率和方便存取,提供多种存取方法来提高存取效率。
  3. 数据操纵:提供数据操纵语言(Data Manipultion Language,DML),使用它对数据库的基本操作(增删改查等)。
  4. 数据库的事务管理和运行管理:数据库在建立、运用和维护时由数据库管理系统统一管理和控制,以保证事务的正确运行,保证数据的安全性、完整性、多用户对数据的并发和使用及发生故障后的系统恢复。
  5. 数据库的建立和维护:该功能包括数据库初始数据的输入、转换功能,数据库的转储、恢复功能,数据库的重组织功能和性能监视、分析功能。
  6. 其他:包括数据库管理系统与网络中其他软件系统的通信;一个数据库管理系统与另一个数据库管理系统或文件系统的数据转换功能;异构数据之间的互访和互操作功能等。

DBS(Database System) 数据库系统

DBS是实现有组织地、动态地存储大量关联数据、方便多用户访问的计算机硬件、软件和数据资源组成的系统,即它是采用数据库技术的计算机系统,通常由软件、数据库和数据管理员组成。其软件主要包括操作系统、各种宿主语言、实用程序以及数据库管理系统。

image.png

1.数据管理技术的产生和发展

数据技术是应数据管理任务的需要而产生的。数据库管理是指对数据进行分类、组织、编码、存储、检索和维护,它是数据处理的中心问题。而数据的处理是指对各种数据进行收集、存储、加工和传播的一系列活动的总和。

数据库管理技术经历了人工管理、文件系统、数据库系统三个阶段。从文件系统到数据库系统标志着数据管理技术的飞跃。

一、人工管理阶段

20世纪50年代中期以前,计算机主要用于科学计算,硬件:没有磁盘、硬盘等直接存取的存储设备;软件:没有操作系统,没有管理数据的专门软件;数据处理方式是批处理。

特点:

二、文件系统阶段

20世纪50年代后期到60年代中期,硬件:有直接存取存储设备;软件:有专门的数据管理软件(文件系统);处理方式上不仅有批处理,还有联机实时处理。

特点:

综述:使用文件系统时,程序员要关注记录的结构和不同文件中记录之间的联系,使用文件系统提供的fopen(打开)、fread(读)、fwrite(写)、fseek(移动读写位置)、fclose(关闭)等操作来编程,工作量大、编程复杂,且开发速度较慢。

三、数据库系统阶段

20世纪60年代后期以来,出现了统一管理数据的专门软件系统–数据库管理系统。

特点:

image.png

2.数据库系统对文件系统的改进与数据库管理系统的发展

文件系统与数据库系统的比较

首先看一下文件系统的简单原理图:


image.png

然后是数据库系统的


image.png

以下是对两种系统的简单介绍

  1. 文件系统是操作系统的子系统,用于操作系统明确存储设备或分区上的文件的方法和数据结构。
    文件系统由三部分组成:文件系统的接口,对对象操纵和管理的软件集合,对象及属性。从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,它负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,当用户不再使用时撤销文件等。

  2. 数据库系统DBS通常由软件、数据库和数据管理员组成。其软件主要包括操作系统、各种宿主语言、实用程序以及数据库管理系统。
    数据库由数据库管理系统统一管理,数据的插入、修改和检索均要通过数据库管理系统进行。数据管理员负责创建、监控和维护整个数据库,使数据能被任何有权使用的人有效使用。

文件系统和数据库系统的对比

  1. 管理对象不同:
    两者最显而易见的区别就是,文件系统是以文件为载体记录数据的,管理的也是记载着这些数据的文件,而非数据本身,文件的各种形式对应着不同的数据结构。(非常浅显的对比就是给一个文件重命名并不会造成文件内记录的数据发生改变)
    而数据库系统管理的是数据本身,在数据库内的任何操作都会立刻影响到数据。

  2. 存储数据方式不同:
    文件系统用文件将数据长期保存在外存上。(这里的文件可以有很多不同的形式,不同后缀的文件就相当于不同的数据结构)
    数据库系统用数据库统一存储数据。(有统一的数据结构)

  3. 程序与数据的关系不同:
    文件系统中,程序访问数据是直接访问的,对数据的查询修改必须在程序内完成,而这依赖于开发者对文件的逻辑及物理结构非常清楚。
    数据库系统中,数据不再仅服务于某个程序或用户,而是以单位的形式共享出来,统一由DBMS软件管理。由于程序对数据的操作都是通过DBMS实现的,因此程序和数据彻底独立开,可以在更高的抽象级别观察和访问数据。

文件系统的的缺点与数据库系统的改进

传统的操作系统所支持的是文件处理系统,所有数据被永久记录被存储在多个不同的文件中,人们编写不同的应用程序来将所需数据从有关文件中取出或加入到适当的文件中。但是逐渐发现文件系统有如下缺点:

  1. 数据的冗余和不一致 :文件系统由于文件的格式和结构以及创建的时间先后的不同,相同的信息在几份文件中存储。数据的重复存储造成冗余,同时因为冗余,一份数据有多个副本。当修改数据后引起同一数据的不同副本内容不一致。
    数据库系统采用数据模型表示复杂的数据结构,减少了数据冗余的可能性,从而避免了不一致的情况。
  2. 数据访问困难:文件系统中的文件是为某一特定应用服务的,当需要的服务超出应用程序的范围外(比如查询的特定条件是应用程序要求之外的),必须修改应用程序,通过应用程序达成条件,这就导致了数据和程序之间缺乏独立性,它们紧密关系在一起。
    数据库系统提供很高的数据独立性,通过DBMS的两级映象实现了数据的物理独立性和逻辑独立性,把数据的定义和操控从程序中分离出去,减少了应用程序的维护和修改。具体见下:
    image.png
  3. 数据孤立:由于数据分散在不同文件中,文件又具有不同的格式,检索和共享数据很复杂。
    数据库系统是数据共享的,这里的共享是指多用户、多种应用、多种语言互相覆盖地共享数据集合,所有用户可同时存取数据库中的数据。数据库是面向整个系统的,以最优的方式服务于一个或多个应用程序(用户),实现数据共享。
  4. 完整性问题:数据库的完整性是指数据的正确性,有效性和相容性。比如存储数据的值必须满足某些特定的一致性约束(例如在银行系统中个人存款余额必须非负)。但这些约束涉及到多个文件中的多个数据时,更改和增加新的约束很困难。
    而数据库系统完整性由各种各样的完整性约束来保证,因此可以说数据库完整性设计就是数据库完整性约束的设计。
    image.png
  5. 原子性问题:对传统的文件系统,保证数据操作的原子性很难实现。
    数据库系统中事务具有原子性,原子性是指事务是一个不可再分割的工作单元,事务中的操作要么都发生,要么都不发生。同时数据库系统也提供了数据恢复功能,当数据库被破坏或者数据不可靠时,又能力从错误状态恢复到某一时刻的一次正常状态,比如事务的回滚。更加保证了事务的原子性。
  6. 并发访问异常:为了提升系统总体性能和响应速度,系统允许多个用户同时更新数据。当数据访问量过多时,并发的更新操作可能相互影响,导致数据不一致。为了消除这样的可能性,系统必须进行某种形式管理,而文件系统是很难做到的。
    数据库系统提供了并发控制,使得多用户同时存取或修改数据库,防止相互干扰而提供给用户错误的数据,并使数据库遭到破坏。
  7. 安全性问题:文件系统访问数据的控制很简单,数据库的所有用户都可以访问数据,有潜在的安全隐患。
    而数据库系统提供了以下功能:
    image.png

安全性和完整性的区别

image.png

综上有如下总结:
文件系统的缺点:

① 文件系统编写应用程序不方便,往往程序需要随着文件的变化而修改。

② 文件系统中的文件不能满足各种程序的需要,因此同一数据往往会以不同的文件形式储存,造成数据的冗余和不一致性。

③ 文件系统不支持对文件的并发访问。

④ 文件系统中的数据缺少统一的管理,表现在数据的结构,编码,表示格式,命名以及输出格式等不容易做到规范化、标准化,因此数据的安全和保密面临更大的挑战。

文件系统的优点:

① 由于数据的冗余,因此在高可用方面的表现远远优于数据库系统。且在海量存储方面,大量的冗余带来了更大的容错能力。

② 分布式方案的出现让文件系统能够在海量数据面前大显身手,极强的可扩展性带来极好的数据存储能力。

数据库系统的缺点:

① 由于DBMS的存在,在简单的不需要数据共享的场景下,性能不如文件系统。

② 由于数据没有冗余,在高可用方面有一定的隐患,只能通过备份解决。

③ 面对海量数据的应用场景很被动,表现不佳。

数据库系统的优点:

① 由于DBMS的存在,用户不再需要了解数据存储和其他实现的细节,直接通过DBMS就能获取数据,为数据的使用带来极大便利。

② 具有以数据为单位的共享性,具有数据的并发访问能力。DBMS保证了在并发访问时数据的一致性。

③ 低延时访问,典型例子就是线下支付系统的应用,支付规模巨大的时候,数据库系统的表现远远优于文件系统。

④ 能够较为频繁的对数据进行修改,在需要频繁修改数据的场景下,数据库系统可以依赖DBMS来对数据进行操作且对性能的消耗相比文件系统比较小。

⑤ 对事务的支持。DBMS支持事务,即一系列对数据的操作集合要么都完成,要么都不完成。在DBMS上对数据的各种操作都是原子级的。

数据库管理系统的发展历史
image.png image.png

3. 数据视图

数据抽象的几个层次

系统开发人员通过如下几个层次上的抽象对用户屏蔽复杂性,以简化用户与系统的交互。

  1. 物理层(pthsical level)
    最低层次的抽象,详细描述复杂的底层数据结构。每条数据记录可能被描述为连续存储位置组成的存储块。程序设计人员可以忽略,但数据库管理员可能需要了解部分被屏蔽的细节。
  2. 逻辑层(logical level)
    比物理层层次稍高的抽象,描述数据库中存储什么数据及这些数据间存在什么关系,其具体内容就是一张张表和一行行数据记录。值得注意的是虽然逻辑层的简单结构的实现可能涉及复杂的物理层结构,但逻辑层的用户不必知道这样的复杂性。这称作物理数据独立性。详细见上文数据独立性部分。程序设计人员和数据库管理员在这一层工作。
  3. 视图层(view level)
    最高层次的的抽象,只描述整个数据库的某个部分。系统可以为同一数据库提供多个视图。这一层面向的是用户,除了屏蔽掉逻辑层的相关细节之外,还有通过用户权限防止用户访问数据库部分信息的机制。
  4. 存储引擎:在上面三个层面之外的存储引擎,作用是使逻辑层中sql语句转换成能在磁盘上存储的物理形式,连接逻辑层与物理层。
    如图示:


    image.png

实例和模式

信息在插入删除和修改过程中,数据库的内容也会发生变化,把特定时刻存储在数据库中的信息的集合称为数据库的一个实例,而数据库的总体设计称为模式,一般来说模式不经常变化。类比于程序设计语言可以把模式理解为变量的声明,而实例理解为这个变量某时刻的具体的值。

在数据模型中有“型”和“值”的概念,型是指对某一类数据的结构和属性的说明,值是型的一个具体赋值。
模式是数据库中全体数据的逻辑结构和特征的描述,它仅仅涉及型的描述,不涉及具体的值。模式的一个具体值称为模式的一个实例,同一个模式可以有很多实例。
模式是相对稳定的,而实例是相对变动的,因为数据库中的数据是不断更新的,模式反映的是数据的结构及其联系,而实例反映的是数据库某一时刻的状态。

根据三个抽象层次, 数据库系统可以分为对应以下三种模式:

  1. 物理模式:物理层描述数据库设计
  2. 逻辑模式:逻辑层描述数据库设计,程序开发人员最重要的模式
  3. 子模式:视图层描述用户看到的各种视图
    在不同模式间,通过相互映射完成转换:


    image.png

这里更详细讲解一下图中的模式相关概念:

1:外模式

外模式又称子模式或用户模式,对应于用户级。它是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。 外模式是从模式导出的一个子集,包含模式中允许特定用户使用的那部分数据。用户可以通过外模式描述语言来描述、定义对应于用户的数据记录(外模式),也可以利用数据操纵语言(Data Manipulation Language,DML)对这些数据记录进行操作。外模式反映了数据库的用户观。
重点: ① 一个数据库可以有多个外模式; ② 外模式就是用户视图; ③ 外模式是保证数据安全性的一个有力措施。

2:模式
模式/逻辑模式/概念模式:是由数据库设计者综合所有用户的数据,按照统一的观点构造的全局逻辑结构,是对数据库中全部数据的逻辑结构和特征的总体描述,是所有用户的公共数据视图。它是数据库吸引模式结构的中间层,既不涉及数据的物理存储细节和硬件环境,又与具体的应用程序、所使用的应用开发工具及高级程序设计语言无关。 是由数据库管理系统提供的数据模式描述语言(Data Description Language,DDL)来描述、定义的,体现、反映了数据库系统的整体观。
关系数据库中的模式一定是关系的。

重点: ① 一个数据库只有一个模式; ② 是数据库数据在逻辑级上的视图; ③ 数据库模式以某一种数据模型为基础; ④ 定义模式时不仅要定义数据的逻辑结构(如数据记录由哪些数据项构成,数据项的名字、类型、取值范围等),而且要定义与数据有关的安全性、完整性要求,定义这些数据之间的联系。

3:内模式
内模式又称存储模式或物理模式,对应于物理级,它是数据库中全体数据的内部表示或底层描述,是数据库最低一级的逻辑描述,它描述了数据在存储介质上的存储方式和物理结构,对应着实际存储在外存储介质上的数据库(例如,记录的存储方式是顺序存储、按照B树结构存储还是按hash方法存储;索引按照什么方式组织;数据是否压缩存储,是否加密;数据的存储记录结构有何规定)。内模式由内模式描述语言来描述、定义,它是数据库的存储观。一个数据库只有一个内模式。
内模式不是关系的,它是数据的物理存储方式。事实上,关系模型与内模式无关。

重点:
① 一个数据库只有一个内模式;
② 一个表可能由多个文件组成,如:数据文件、索引文件。
它是数据库管理系统(DBMS)对数据库中数据进行有效组织和管理的方法
其目的有:
② 为了减少数据冗余,实现数据共享;
② 为了提高存取效率,改善性能。

通过以上三种模式的定义,讨论一下模式映像以及物理和逻辑独立性的特点:

为了能够在系统内部实现这三个抽象层次的联系和转换,数据库管理系统在这三级模式之间提供了两层映像:外模式/模式映像和模式/内模式映像。它们保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。


image.png

1)、外模式/模式映像

模式描述的是数据的全局逻辑结构,外模式描述的是数据的局部逻辑结构。对应于同一个模式可以有任意多个外模式。对于每一个外模式,数据库系统都有一个外模式/模式映像,它定义了该外模式与模式之间的对应关系,这些映像定义通常包含在各自外模式的描述中。
数据的逻辑独立性:当模式改变时,由数据库管理员对各个外模式/模式的映像作相应改变,可以使外模式保持不变,应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性。

2)、模式/内模式映像

模式/内模式映像是唯一的,它定义了数据全局逻辑结构与存储结构之间的对应关系。该映像定义通常包含在模式描述中。
数据的物理独立性:当数据库的存储结构改变时,由数据库管理员对模式/内模式作相应改变,可以使模式保持不变,从而应用程序也不必改变,保证了数据与程序的物理独立性。

综述
数据库模式即全局逻辑结构是数据据库的中心与关键,它独立于数据库的其他层次;数据库的内模式依赖于它的全局逻辑结构,但独立于数据库的用户视图,即外模式,也独立于具体的存储设备;数据库的外模式面向具体的应用程序,定义在逻辑模式之上,但独立于存储模式和存储设备。、
数据库的二级映像保证了数据库外模式的稳定性,从而从底层保证了应用程序的稳定性。
数据与程序之间的独立性使得数据的定义和描述可以从应用程序中分离出去,由于数据的存取由数据库管理系统管理,从而简化了应用程序的编制,大大减少了应用程序的维护和修改。

image.png
数据模型(data model)

为了能够描述物理层、逻辑层以及视图层数据库设计的方式,我们提出了数据模型的概念。数据库结构的基础是就是数据模型。

数据模型的内容包括三个方面:数据结构、数据操作、完整性约束。

  1. 数据结构
    数据结构是描述数据库组成对象以及对象之间的联系,它是所描述的对象类型的集合,是对系统静态特性的描述。
    数据结构描述的内容:一是与对象的类型、内容、性质有关;二是与数据之间联系有关的对象。

  2. 数据操作
    数据操作是指对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关规则。它是对系统动态特性的描述。

  3. 数据的完整性约束条件
    数据的完整性约束条件是一组完整性规则。数据模型应该反映和规定其必须遵守的基本的和通用的完整性约束条件。
    完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效和相容。

数据模型是对现实世界数据特征的抽象,是数据库系统的核心和基础。在数据库领域中,数据模型用于表达现实世界中的对象,即将现实世界中杂乱的信息用一种规范的、形象化的方式表达出来。数据模型不仅要面向现实世界,还要面向机器世界,因此,需满足三个要求:能够真实地模拟现实世界、容易被人们理解、能够方便的在计算机上实现。数据模型是使数据和信息模型化的工具,根据模型应用的不同目的,将模型分为三大类:概念模型、逻辑模型,物理模型。

1.概念数据模型(CDM)

概念数据模型是现实世界到信息世界的第一层抽象,主要是在高水平和面向业务的角度对信息的一种描述,通常作为业务人员和技术人员之间沟通的桥梁。作为现实世界的概念化结构,这种数据模型使得数据库的设计人员在最初的数据库设计阶段将精力集中在数据之间的联系上,而不用同时关注数据的底层细节(如所用的计算机系统的特性以及数据库管理系统---DBMS的特性)。

概念数据模型主要的贡献在于分析数据之间的联系,它是用户对数据存储的一种高度抽象,反应的是用户的一种业务层面的综合信息需求。

在这个阶段一般会形成整个数据模型或者是软件系统中的实体的概念以及实体之间的联系,为构建逻辑数据模型奠定基础。下图中描述了现实世界和信息世界以及最终转换成计算机世界信息的转换流程。


image.png

设计概念数据模型的主要工具是E-R图,扩展的E-R图。

总结:\color{red} {概念数据模型的重点是建立实体及实体之间的关系 。}在概念数据模型中,\color{red}{不包括实体的属性 ,也不用定义实体的主键} 。这是概念数据模型和逻辑数据模型的主要区别。

2.逻辑数据模型(LDM)

逻辑数据模型是对概念数据模型进一步具体化,在概念数据模型定义实体的基础上定义了各个实体的属性,是用户从数据库的角度能够看到的数据的模型,是所使用的数据库管理系统(Database Management System,DBMS)所支持的数据类型(网状数据模型、层次数据模型、关系数据模型)。这种数据模型架起了用户和系统之间的桥梁,\color{red}{既要面向用户,同时也考虑到了所用的DBMS所支持的特性。}

逻辑数据模型反映了系统分析设计人员针对数据在特定的存储系统(如MySQL)的观点,是对概念数据模型的进一步细化和划分。逻辑数据模型是根据业务之间的规则产生的,是关于业务对象、业务对象数据以及业务对象彼此之间关系的蓝图。

逻辑数据模型的内容包括所有的实体、实体的属性、实体之间的关系以及每个实体的主键、实体的外键(用于维护数据完整性)。其主要目标是尽可能详细的描述数据,但是并不涉及这些数据的具体物理实现。逻辑数据模型不仅会最终影响数据库的设计方向,并最终会影响到数据库的性能(如主键设计、外键等都会最终影响数据库的查询性能)。

逻辑数据模型是开发物理数据库的完整文档,逻辑数据模型主要采用的是层次模型、网状模型、关系模型,其中最常用的是关系模型,对应的数据库称之为关系型数据库,如MySQL。

总结:逻辑数据模型 反映的是系统分析设计人员对数据存储的观点,是对概念数据模型进一步的分解和细化。 逻辑数据模型是根据业务规则确定的,关于业务对象、业务对象的数据项及业务对象之间关系的基本蓝图。其内容包括:
\color{red}{所有的实体和关系,确定每个实体的属性,定义每个实体的主键,指定实体的外键},需要进行范式化处理。

3.物理数据模型(PDM)

物理数据模型,又称为物理模型,是概念数据模型和逻辑数据模型在计算机中的具体表示。该模型描述了数据在物理存储介质上的具体组织结构,不但与具体的数据库管理系统相关,同时还与具体的操作系统以及硬件有关,但是很多工作都是由DBMS自动完成的,设计者只需要设计索引、聚集等特殊结构。

总结:物理数据模型是在逻辑数据模型的基础上,综合考虑各种存储条件的限制,进行数据库的设计,\color{red}{从而真正实现数据在数据库中的存放}。其主要的工作是根据逻辑数据模型中的实体、属性、联系转换成对应的物理模型中的元素,包括定义所有的表和列,定义外键以维持表之间的联系等,具体例子如下:

image.png
常见的数据模型

了解以上知识后,看一下常见的数据模型有哪些:


image.png

这些模式应用在数据库设计中:

image.png
层次模型和网状模型已经不再是主流,这里就不做介绍了,详细见层次、网状、关系模型 image.png image.png
image.png

在ER模型基础上,就可以构建出关系模式来


image.png
image.png
image.png

在逻辑层基础上,视图层上可以组合出一张新表:


image.png
上一篇下一篇

猜你喜欢

热点阅读