2031数据库概述

第1章  数据库概述

•     1.1数据管理技术

•     1.2 大数据分析与管理技术

•     1.3 数据库系统概述

•     1.4数据模型

•     1.5 概念模型的描述

1.1 数据管理技术

1.1.1 数据管理的概念

1. 信息与数据

Ø  信息是现实世界中对客观事物的反映。这种反映主要体现为事物属性的表现形式,是对事物存在方式或运动状态的刻画。

Ø 信息的主要特征

•       可传递性:信息是可以传递的,但其传递的前提是必须有载体,且传递过程消耗能量。

•       可感知性:信息可以被人类“感觉”得到的,但感觉的方式可能由于信息源的不同而呈现多样性。

•       可管理性:信息是可以被管理的,我们可以通过一定的方法对信息进行加工、存储、传播、再生和增值等。

Ø  数据是描述事务的符号记录,是信息的符号化表示,是信息的载体。

•                数据是信息表示的一种符号形式。这种符号形式可以是语言、图表、数字、声音等。但不管用什么样的符号形式,其目的只有一个,那就是客观地反映信息的内容。信息的内容不会随着数据表现形式的不同而改变。

Ø  信息和数据的区分和联系:

•                数据是信息的载体,可以有多种表现形式,其目的都是为了揭示信息的内容;

•                信息是数据的内涵,它仅由客观事物的属性来确定,而与数据形式无关。

    但在实际应用中,如果不需要特别强调信息和数据的差异,这两个概念往往是互换的。例如,“信息处理”和“数据处理”通常意指有相同内涵的两个概念。

2.  数据处理和数据管理

   数据处理

Ø 数据处理也称信息处理,它泛指用计算机对各种类型数据进行的处理操作。

Ø 这些操作包括对数据进行采集、转换、分类、存储、排序、加工、维护、统计和传输等系列活动。

Ø 数据处理的目的是从原始数据中提取有价值的、可作决策依据的信息。

   数据管理

Ø 数据管理指在复杂的数据处理过程中的一些基本操作,如数据存储、分类、统计和检索等。

Ø 数据管理是数据处理的任务之一,是数据处理的核心内容,数据库系统的基本功能就是数据管理。

1.1.2 数据管理技术的发展过程

1.人工管理阶段(1946.2-1955左右)

  这一阶段主要指是从计算机诞生到20世纪50年代中期的这一个时期。世界上第一台计算机ENIAC于1946年2月14日在美国宾夕法尼亚大学诞生,在随后的近十年中计算机的主要应用是科学计算,处理的是数字数据,数据量不大。

  计算机没有操作系统(实际上当时根本没有操作系统的概念),也没有数据的管理软件,是以批处理方式对数据进行计算。

  计算机硬件本身也没有磁盘,所使用的“存储设备”是磁带、卡片等。

  人工处理阶段数据管理技术的特点体现在:

Ø 数据不保存一是当时计算机所处理的数据量很小,不需要保存;二是计算机本身就没有有效的存储设备。

Ø 数据缺乏独立性和有效的组织方式这体现在数据依赖于应用程序,缺乏共享性。其原因在于,数据的逻辑结构跟程序是紧密联系在一起的,程序A处理的数据,对程序B而言可能就无法识别,更谈不上处理。解决的办法是修改数据的逻辑结构,或者修改应用程序。显然,这种数据管理方法仅适用于小量数据,对大量数据则是低效的。

Ø 数据为程序所拥有,冗余度高由于数据缺乏独立性,一组数据只能为一个程序所拥有,而不能同时为多个程序所共享,这就造成了一份数据的多个拷贝,各程序之间存在大量重复的数据,从而产生大量的冗余数据。

2. 文件系统阶段(1955-1965)

   这一阶段是从50年代后期到60年代中期的这一段时间。这个时期,计算机除了用于科学计算以外,还大量用于数据的管理。

  计算机已经有了操作系统,并且在操作系统之上已经开发了一种专门用于数据管理的软件——文件管理系统。在文件管理系统中,数据的批处理方法发展到了文件的批处理方式,且还可以实现了一定程度的联机实时处理。

  计算机硬件本身已经出现了磁盘、磁鼓等外部存储设备计算机硬件经出现了磁盘、磁鼓等外部存储设备
 

  文件系统阶段特点

Ø 计算机的应用从单纯的科学计算逐步转移到数据处理,特别是在该阶段的后期,数据处理已经成为计算机应用的主要目的。主要限于对文件的插入、删除、修改和查询等基本操作。

Ø 数据按照一定的逻辑结构组成文件,并通过文件实现数据的外部存储。即数据是以文件的方式存储在外部存储设备中,如磁盘、磁鼓等。

Ø 数据具有一定的独立性。由于数据是以文件的方式存储,文件的逻辑结构与存储结构可以自由地进行转换,所以多个程序可以通过文件系统对同一数据进行访问,实现了一定程度的数据共享。

Ø 文件形式具有多样化,除了数据文件以外还产生了索引文件、链接文件、顺序文件、直接存取文件和倒排文件等。

Ø 基本上以记录为单位实现数据的存取
 

  缺点:

Ø 数据和程序并不相互独立数据冗余度仍然比较大一个程序基本上是对应着一个或一组文件,即数据还是面向应用的,不同的程序还需建立自己的数据文件,能真正实现数据共享的情况并不多。原因在于,文件中数据的逻辑结构与其对应的程序密切相关,而且没有统一标准的逻辑结构。

Ø 难以保证数据一致性由于文件之间没有关联机制,所以当对一个数据进行更改时难以保证对该数据的其他副本进行同样的更改。

Ø 文件的数据表达能力十分有限这主要体现在,文件中的数据结构比较单一,也比较简单,还难以表示复杂的数据结构。

3. 数据库系统阶段(1965-至今)

  数据库系统阶段始于20世纪60中后期,一直到现在。这时计算机除了用于科学计算以外,更多时候是用于数据管理,而且数据的量已经很大,管理功能也越来越强大。

   计算机硬件本身也发生了深刻的变化,出现了大容量磁盘和高主频的CPU等。

  在软件上,数据的管理软件已经由原来的文件系统上升到了数据库管理系统(DBMS)。

  数据管理的主要特点是数据集中存放在一个地方,这个地方就是所谓的数据库。应用程序要实现对数据库中的数据进行访问,则必须通过数据库管理系统来完成。

  数据库技术是基于数据库的数据管理技术。其特点:

•        数据组织的结构化从总体上看,文件系统中的数据是“涣散”的,而数据库中的数据是结构化的,具有统一的逻辑结构。数据的结构化是数据库的主要特征之一,是数据库和文件系统的最大和根本的区别。

•        减少数据冗余度增强数据共享性从整个系统上看,数据不再面向某一个特定的应用程序,而是面向由所有应用程序组成的系统。所以一个数据可以为多个应用程序所共享,一个应用程序也可以同时访问多个数据。

•        保证数据的一致性通过建立文件间的关联,使得在对某一个数据进行更新时,与之相关的数据也得到相应更改。

•        具有较高的数据独立性在数据库系统中,数据独立性包含两个方面,一个是数据的物理独立性,另一个是数据的逻辑独立性。

  数据的物理独立性是指在数据的物理存储结构发生改变时,数据的逻辑结构可以不变的特性;

  数据的逻辑独立性是指在总体逻辑结构改变时,应用程序可以不变的一种特性。

  数据库之所以具有较好的数据独立性,主要是因为数据库提供了两个映象功能:数据的存储结构和逻辑结构之间的映象或转换功能以及数据的总体逻辑结构和局部逻辑结构之间的映象功能。前者保证了数据的物理独立性,后者则保证了数据的逻辑独立性。

•       以数据项为单位进行数据存取相对文件系统而言,数据库可以实现更小粒度的数据处理,满足更多的应用需求。

•       具有统一的数据控制功能这些功能包括数据的安全性控制、完整性控制、并发控制和一致性控制等功能。

  数据管理技术发展的这三个阶段是一个渐进的过程,它们的区别主要体现在应用程序和数据的关系上:

Ø 在人工管理阶段,应用程序和数据是“混合”在一起;

Ø 在文件系统阶段,应用程序则通过文件系统完成对数据的访问,实现了数据和程序一定程度的分离;

Ø 在数据库系统阶段,应用程序是通过数据库管理系统(DBMS)对数据进行访问,实现了数据和程序的高度分离。

三个阶段之间的关系表示:

 

1.2 大数据分析与管理技术

1.2.1 关于大数据

  2008年,英国著名学术杂志《Nature》上推出了大数据的专刊。

  美国一些知名数据管理领域的专家从专业角度出发联合发布了一份名为《大数据的机遇与挑战》(Challenges and opportunities with big data)的白皮书,从学术角度介绍了大数据的产生、处理流程和所面临的若干挑战。

  在工业界,全球知名的咨询公司麦肯锡公司(McKinsey)2011年也发表了一份名为《大数据:下一个创新、竞争和生产力的前沿》(Big Data: the next frontier for innovation, competition and productivity)的详尽报告,对大数据带来的巨大影响、关键技术和应用领域进行了详尽阐述和分析。

  美国奥巴马政府更是在2012年发布了“大数据研究和发展倡议”(Big data research and development initiative),斥资2亿多美元计划在科研、环境、生物医学等领域利用大数据分析管理技术取得新的突破。我国政府也于2015年发布了《中共中央关于制定国民经济和社会发展第十三个五年规划的建议》提出实施国家大数据战略,超前布局下一代互联网。

  目前“大数据”(Big data)已成为一个炙手可热的名词。从表面上看,其表示数据规模的庞大,但仅仅从数据规模上无法区分“大数据”这一概念和以往的“海量数据”(Massive data)和“超大规模数据”(Very large data)等概念的区别。然而,至今仍没有一个对“大数据”公认的准确定义。

   根据维基百科的解释,大数据指的是数据规模巨大到无法通过目前主流的软件工具在合理时间内完成处理的数据集。由此可见,随着时间的推移,计算机的计算能力、存储能力会不断提升,因此大数据的含义也会不断演化。

   今天所说的大数据在未来可能就不算“大”了,但那时也一定仍会存在更大的数据是当时的技术处理不了的,因而仍会被称为大数据。可见,如何驾驭大数据将会成为人们长期需要面对的数据常态。

  大数据的“4V”特性:

(1)体量大(Volume)。大数据体现在数据量极为庞大,其计量单位可以是TB级、PB级甚至更大的计量单位。

(2)速度快(Velocity)。大数据呈现出高速增长的态势,而且产生速度仍在不断加快。

(3)多样化(Variety)。大数据包含多种多样的数据类型,既可以是存储在二维表中的结构化数据,也可以是文本、视频、图像、语音、图(Graph)、文件等非结构化数据。

(4)价值高(Value)。大数据中蕴藏着巨大价值,但价值密度低。通过对大数据进行合理的分析,能够从中挖掘出很多有价值的信息,这些信息将有助于提高社会生产效率,提升人们生活质量,或者创造更大商业价值。

1.2.2 大数据存储技术

     随着大数据时代的到来,传统关系型数据库的发展面对大数据时代的数据管理需求越来越力不从心,主要体现在:

•        无法保证对大数据的查询效率:在大数据时代,短短的1分钟时间内新浪微博可以产生2万条微博,苹果可以产生4.7万次应用下载记录,淘宝则可以卖出6万件商品,百度可以产生90万次搜索记录。可见对于上述公司而言很快就会积累超过10亿的数据量。然而,由于关系模型严谨得过于死板,例如复杂的事务处理机制就成为了阻碍其性能提升的桎梏,使得传统关系型数据库在一张包含10亿条记录的数据表之上进行SQL查询时效率极低。

•        无法应对繁多的数据类型关系型数据库存储的是清洁规整的结构化数据,然而在大数据时代,数据种类繁多,包括文本、图片、音频和视频在内的非结构化数据所占比重更是超过了90%,这无疑是关系型数据库所不能应对的。

•        横向可扩展能力不足传统关系型数据库由于自身设计机理的原因,通常很难实现性价比较高的“横向扩展”,即基于普通廉价的服务器扩充现有分布式计算系统,使系统的处理能力和存储能力得到提升。而“横向扩展”是大数据时代计算和存储的重要需求。

•        很难满足数据高并发访问需求大数据时代诸如购物记录、搜索记录、朋友圈消息等信息都需要实时更新,这就会导致高并发的数据访问,可能产生每秒高达上万次的读写请求。在这种情况下,传统关系型数据库引以为傲的事务处理机制和包括语法分析和性能优化在内的查询优化机制却阻碍了其在并发性能方面的表现。

  在以上大数据时代的数据管理需求的推动下,各种新型的NoSQL数据库不断涌现,一方面弥补了关系型数据库存在的各种缺陷,另一方面也撼动了关系型数据库的传统垄断地位。

  NoSQL(Not only SQL)不是指某个具体的数据库,是对非关系型数据库的统称。

  NoSQL数据库采用类似键/值、列族、文档和图(Graph)等非关系数据模型,通常没有固定的表结构,没有复杂的查询优化机制,也没有严格的事务ACID特性的约束,因此和关系型数据库相比,NoSQL数据库具有更优秀的查询效率,更灵活的横向可扩展性和更高并发处理性,并能够存储和处理非结构化数据。

  根据所采用的数据模型的不同,NoSQL数据库具体又可以分为以下四类:

•     键值(Key-Value)存储数据库。这一类数据库主要使用哈希表作为数据索引,哈希表中有一个特定的键和一个指针指向特定的数据。这种数据库的优势是简单、易部署、查询速度快;缺点是数据无结构,通常只被当作字符串或者二进制数据。Tokyo Cabinet/Tyrant、Redi、Voldemort、Oracle BDB等都属于这一类数据库。

•     列存储数据库。这类数据库通常用来应对分布式存储海量数据的存储需求。在列存储数据库中,数据以列簇式存储,将同一列数据存在一起。这种数据库的优点是查找速度快,可扩展性强,更容易进行分布式扩展;缺点是功能相对局限。Cassandra、HBase、Riak等属于这一类数据库。

•      文档型数据库。这类数据库与键值存储数据库类似,数据按键值(Key-Value)存对的形式进行存储,但与键值存储数据库不同的是,Value为结构化数据。这类数据库适用于Web应用。文档型数据库的优点是对数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构;缺点是查询性能不高,缺乏统一的查询语法。uCouchDB、MongoDB等属于这一类数据库。

•      图(Graph)数据库。这类数据库专注于构建关系图谱,存储图结构数据,适用于社交网络、推荐系统等。图数据库的优点是能够直接利用图结构相关算法,如最短路径寻址、N度关系查找等;缺点是很多时候需要对整个图做计算才能得出需要的信息。Neo4J、InfoGrid、Infinite Graph等属于这一类数据库。

  NoSQL数据库不受关系模型约束,具有较好的扩展性,很好地弥补了传统关系型数据库的缺陷。但NoSQL数据库并没有一个统一的架构,每一类NoSQL数据库都有各自适用的场景。同时,NoSQL数据库不能严格保证事务的ACID特性,导致数据的一致性和正确性没法保证。而且NoSQL数据库缺乏完备系统的查询优化机制,在复杂查询方面的效率不如关系型数据库。为此,业界又提出了NewSQL数据库。

  NewSQL 数据库是对各种新的可扩展、高性能数据库的简称,这类数据库不仅具有NoSQL对海量数据的存储管理能力,还保持了传统数据库支持事务ACID和SQL等特性。

  不同NewSQL数据库的内部架构差异较大,但是有两个共同的特点:都支持关系数据模型;都是用SQL作为其主要的访问接口。

  目前市面上已有的NewSQL数据库有Spanner、PostgreSQL、SAP HANA、VoltDB、MemSQL等。

Ø  Spanner是谷歌公司研发的、可扩展的、多版本、全球分布式、同步复制数据库,是谷歌公司第一个可以全球扩展并支持数据外部一致性的数据库。

Ø  PostgreSQL是很受欢迎的开源数据库,稳定性强,有大量的几何、字典、数组等数据类型,在地理信息系统领域处于优势地位。

Ø  SAP HANA基于内存计算技术,是面向企业分析性应用的产品,主要包括内存计算引擎和HANA建模工具两部分。

Ø  VoltDB是基于内存的关系型数据库,其采用NewSQL体系架构,既追求与NoSQL体系架构系统具有相匹配的系统可展性,又维护了传统关系型数据库系统的事务特性和SQL语言访问特性,在执行高速并发事务时比传统的关系型数据库系统快45倍。

Ø  MemSQL有符合ACID特性的事务处理功能、SQL兼容性以及高度优化的SQL存储引擎,提供了与MySQL相同的编程接口,但速度比MySQL快30倍。

Ø  还有一些在云端提供存取服务的NewSQL数据库(亦可称为云数据库),例如Amazon RDS和Microsoft SQL Azure。

1.2.3 大数据处理模式

  大数据具有数据体量大、产生速度快的特点,因而传统的单机串行处理模式往往难以完成对大数据的高效处理,必须借助并行分布式处理方法。根据大数据应用类型的不同,大数据处理模式分为批处理(Batch processing)和流处理(Stream processing)两种。下面以Apache的Hadoop和Storm为例分别介绍批处理和流处理的典型处理模式。

1. 分布式批处理模式的代表——Hadoop

  批处理则是对数据先存储后统一处理。Hadoop是一个由Apache基金会用Java语言开发的开源分布式批处理架构,其中实现了MapReduce批处理编程模型。Google公司在2004年提出的MapReduce编程模式是最具代表性的分布式数据批处理模式。

  MapReduce模型包含三种角色:Master进程、Map进程和Reduce进程,其中Master进程负责任务的划分与调度,Map进程用于执行Map任务,Reduce进程用于执行Reduce任务。该模型的主要思想是Master进程把大规模的数据划分成多个较小的部分,分别映射到多个Map进程进行并行处理得到中间结果,之后由Reduce进程对这些中间结果进行规约、整理,进而得到最终结果,如图1.4所示。

 

  一个MapReduce作业(MapReduce Job)的执行流程如下:

(1)首先从用户提交的程序创建出Master进程,Master进程启动后划分任务并根据输入文件所在位置和集群信息选择机器创建出Map进程或Reduce进程;

(2)Master进程将划分好的任务分配给Map进程和Reduce进程执行,任务划分和任务分配可以并行执行;

(3)Map进程执行Map任务,即读取相应的输入文件,根据指定的输入格式不断地读取<key, value>对,并对每一个<key, value>对执行用户自定义的Map函数;

(4)Map进程不断往本地内存缓冲区输出中间<key, value>对结果,等到缓冲区超过一定大小时写入到本地磁盘中,Map进程将中间结果组织成文件,便于后续Reduce进程获取;

(5)Map任务执行完成后向Master进程汇报,Master进程进一步将该消息通知Reduce进程。Reduce进程向Map进程请求传输生成的中间结果数据,当Reduce进程获取完所有的中间结果后,需要进行排序操作;

(6)Reduce进程执行Reduce任务,即对中间结果的每一个相同的key及value集合,执行用户自定义的Reduce函数,Reduce函数的输出结果被写入到最终的输出文件。

  除了使用MapReduce批处理编程框架,Hadoop的核心内容还包括HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)。

  HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,适合处理大规模数据集的应用程序。

  Hadoop的优点包含以下几个方面:

(1)方便部署。Hadoop可以方便部署在由一般商用机器构成的大型集群或者云计算服务之上。

(2)容错健壮。即使集群中的计算机硬件频繁出现失效,Hadoop也能够处理大多数此类故障。

(3)容易扩展。Hadoop通过增加集群节点,可以线性地扩展以处理更大的数据集。

(4)使用简单。Hadoop允许用户快速编写出高效的并行代码。

(5)免费、开源。Hadoop是一款开源批处理框架,可以免费使用。

      Hadoop的典型应用包括网络搜索、日志处理、推荐系统、数据分析、视频图像分析和数据集成等。

2. 分布式流处理模式的代表——Storm

  和先存储再处理的批处理模式不同,流处理将源源不断产生的数据视为数据流,每当新的数据到达系统时就立刻对数据进行处理并返回结果。可见,流处理适合包括网页点击数统计、股票交易数据分析和传感器网络事件检测等实时分析应用。Apache Storm是一个免费、开源的分布式实时流处理系统。Storm在流处理中的地位相当于Hadoop对于批处理的重要地位。

   Storm基于拓扑(Topology)实现对数据流的分布式实时处理。拓扑是一个有向无环图(Directed Acyclic Graph),一个典型的Storm的拓扑结构如图1.5所示。

  Topology中数据以元组(Tuple)的形式进行转发和处理。和Hadoop中的MapReduce作业不同,Storm的拓扑一经启动将永久运行,不断处理实时到达的数据元组。

 

  Storm拓扑由Spout和Bolt两类组件构成。Spout作为数据产生者,从一个外部源(例如Kafka)读取数据并并向Storm拓扑中喷射数据元组。Bolt作为数据消费者,对所接收的数据元组进行处理和转发。

  一个复杂的Storm拓扑可由多个Spout和多个Bolt组成,且可以为每个Spout或Bolt设置其任务(Task)并行度,由多个任务并行完成其处理逻辑。Storm提供多种组件间的数据分发策略,例如随机分组(Shuffle grouping)、按字段分组(Field grouping)、全局分组(Global grouping)和广播发送(All grouping),用以完成Storm拓扑中上游组件的各个任务向下游组件的各个任务的数据分发.

  Storm的优点包含以下几个方面:

(1)易整合:Storm可以方便与数据库系统进行整合。

(2)易使用:Storm提供丰富的API,方便用户的使用。

(3)易扩展:Storm可以方便部署和运行在大规模分布式集群中。

(4)易纠错:Storm可以自行重启故障节点,并完成对故障节点任务的重新分配。

(5)可靠的消息处理:Storm保证每个消息都能被系统完整处理。

(6)免费、开源:Storm是一款开源流处理框架,可以免费使用。

1.2.4 大数据处理的基本流程

1. 数据集成

       大数据的一个重要特性就是多样化(Variety),这意味着产生大数据的来源广泛、类型庞杂、并经常存在数据冗余和错漏现象,给数据处理带来了巨大挑战。要想处理大数据,首要任务就是对数据源抽取的数据进行合理的集成。

       数据集成是指通过访问、解析、规范化、标准化、整合、清洗、抽取、匹配、分类、修饰和数据交付等功能把不同来源、格式、特点、性质的数据在逻辑上或物理上有机地集中,从而为后期数据处理提供保障。数据集成的目的是保证数据的质量和可信性。如果数据集成工作没有做好,会导致整个大数据项目的延期甚至失败。因此,在大数据给人们带来价值之前,必须对其进行合理的集成。

2. 数据分析

        数据分析是整个大数据处理流程中的核心环节,因为大数据所蕴含的价值需要通过数据分析得以实现。传统的数据分析技术包括数据挖掘、机器学习、统计分析等在用于处理大数据时可能需要进行必要的调整,因为这些技术在处理大数据时面临一些新的挑战,体现在以下几个方面:

  大数据价值大(Value)的特性虽然意味着大数据蕴含了巨大价值,但是大数据同时也存在价值密度低的特点,体现在大数据中存在大量的冗余数据、噪音数据、遗漏数据和错误数据。因此,在进行数据分析之前,需要对大数据进行数据清洗、整合等集成工作。然而,对如此大规模的数据进行清洗和整合无疑会对硬件环境和算法性能提出新的要求。

3. 数据解释

        虽然数据分析是大数据处理的核心,但是用户更关注对分析结果的展示。即使分析过程高效、分析结果正确,如果没有通过容易理解的方式给用户展示大数据的分析结果将会大大降低分析结果的实际价值,极端情况下甚至会误导用户。

       传统的数据解释方法是在电脑终端上打印显示分析结果或以文本的形式向用户呈现分析结果。然而,大数据的分析结果往往规模大而且结果之间的关系错综复杂,因而传统的数据解释方法不适用于解释大数据的分析结果。

       目前,业界推出了很多数据可视化技术,用图表等形象的方式向用户展现大数据的分析结果。常见的数据可视化技术包括标签云(Tag cloud)、历史流(History flow)和空间信息流(Spatial information flow)等。

1.3.1 数据库系统

  数据库系统是以数据库技术为核心的计算机应用系统,其主要目的是处理生产和实践过程中产生的数据和信息,实现生产过程管理的自动化和信息化,提高信息管理效率。

数据库系统一般包含四个部分

1.数据库

  定义:是数据库系统存放结构化数据的地方,是长期存储的、有组织的、可共享的数据的集合。

Ø 数据最终是以文件的形式存储在磁盘上,只有数据库管理系统才能对这些文件进行存取操作。

Ø 每一个数据库都至少有一个这样文件,称为数据文件。

Ø SQL Server数据库的数据文件以.mdf或.ndf为扩展名。

2.数据库管理系统(DBMS)

  定义: DBMS是数据库的管理软件,是应用程序和数据库之间桥梁,即应用程序必须通过DBMS才能存取数据库中的数据。

Ø DBMS对数据的存取操作最终体现为对数据文件的更新和修改,但应用程序不能直接执行这种更新和修改操作。

Ø SQL Server 2014就是SQL Server数据库系统的一种DBMS。

3. 应用程序

定义: 是指通过访问数据库来完成用户操作的程序。

Ø 它介于系统用户和DBMS之间,用户通过操作应用程序来获取他们的需求,而应用程序则通过DBMS访问数据库来实现用户提出的需求。

Ø 应用程序可以用Java、JSP、.NET等技术开发。

4.系统用户

  定义:是大致分为两类——系统用户和系统管理员。

Ø 系统用户是指应用程序的用户,他们是整个数据库系统的最终使用者;

Ø 系统管理员可以分为不同级别类型的管理人员,他们主要负责数据库的管理和维护工作。

数据库系统各部分之间的关系:

 


 

1.3.2 数据库系统的模式结构

  现在数据库系统软件产品非常多,它们可能基于不同的操作系统,支持不同的数据库语言,采用不同的数据结构,等等。但是,它们的体系结构却基本相同,那就是三级模式结构。

  三级模式结构是由美国国家标准学会(ANSI, American National Standards Institute)所属的标准计划和要求委员会(SPARC, Standards Planning And Requirements Committee)于1975年提出的,称为SPARC分级结构。

  三级模式结构将数据库系统抽象为三个层次,分别为内模式、概念模式和外模式。

1.内模式

  定义:又称存储模式,它是数据在数据库系统中最底层的表示,描述了数据的物理结构和存储方式,即定义了存储记录的类型、存贮域的表示、存储记录的物理顺序、索引等。

  一个数据库仅有一个内模式。

2.概念模式

  定义:又称逻辑模式,简称模式,它用于对整个数据库中数据的逻辑结构和特征、实体及其性质与联系进行描述。但这种描述并不涉及具体的物理存储方式和硬件环境,也不涉及任何特定的应用程序及其开发工具。

  一个数据库也只有一个概念模式。

3.外模式

  定义:外模式是概念模式的一个子集,这个子集是为某一个特定用户所使用的。从这个角度看,外模式是面向用户的,所以外模式又称子模式或用户模式。本质上,外模式是应用程序所使用的局部数据的逻辑结构和特征的描述,是使用该应用程序的用户所看到的数据视图

 

总结

   以上三个模式分别从三个不同层次的级别对数据库进行抽象,即分别抽象为用户级、概念级、物理级数据库

Ø 用户级数据库对应于外模式,是从用户的角度对数据库进行抽象,是用户看到和使用的用户视图的集合。

Ø 概念级数据库对应于概念模式,介于用户级和物理级之间,是程序开发人员看到和使用的数据库。。

Ø 物理级数据库对应于内模式,是从数据的物理存储结构的角度对数据库进行抽象。

总之,外模式是概念模式的子集,概念模式是内模式的逻辑表示,而内模式则是概念模式的物理表示。

  三级模式结构将数据库系统抽象为三个层次,分别为内模式、概念模式和外模式。各模式的关系如图1.7所示。

 

1.3.3 数据库管理系统(DBMS)

  DBMS的功能主要包括以下几个方面:

   1.数据库定义功能

  DBMS一般都提供数据定义语言(DDL, Data Definition Language),可以分别用于定义外模式、概念模式和内模式。用DDL编写的外模式、概念模式和内模式分别称为源外模式、源概念模式和源内模式。它们经过模式翻译程序翻译后将形成相应的内部表示,分别称为目标外模式、目标概念模式和目标内模式。

  这些目标模式被保存在数据字典中(又称系统目录),它们是用于刻画数据库的框架结构,是对数据库(而不是数据)的一种描述,也是DBMS存取和管理数据的基本依据。

2.数据操纵功能

  DBMS还提供数据操作语言(DML, Data Manipulation Language)用于实现对数据库的查询、添加、修改和删除等基本操作。

  DML分为宿主型的和自主型的(或自含型的)的DML。

Ø 宿主型的DML用于嵌入到其他语言(称为主语言)当中,例如把它嵌入到PASCAL、FORTRAN,C等高级语言中。这类DML语言本身不能独立使用,这也就是它之所以称为宿主型DML的原因。

Ø 自主型的(或自含型)DML则是交互式命令语言,其语法简单,每条语句都可以独立执行。

Ø 如今,DBMS一般既提供宿主型的DML也提供自主型的DML,或者提供集宿主型和自主型于一体的DML,其典型的代表就是著名的SQL(Structured Query Language)语言。SQL语句既可以嵌入到其他的高级语言,也可以单独交互执行。

  用户或者应用程序对数据库的操作实际上是通过DBMS控制并执行DML语句来实现的。

  自主型的DML是交互式命令语言,DBMS通常以解释执行的方式运行它们。

  对于宿主型的DML,DBMS提供两种执行方法:

Ø  预编译方法。这种方法的原理是,由DBMS提供的预编译程序对包含DML的主语言进行扫描,识别出DML,然后把这些DML转换成合法的主语言代码,以便主语言的编译程序能够接受和执行它们。

Ø  修改、扩充主语言编译程序的方法。这种方法又称为增强编译方法,增强后的编译程序既可以编译主语言代码,也可以编译和执行嵌入的DML语句。

 

3.数据库运行管理功能

  数据库运行管理是DBMS提供的重要功能之一,它是数据系统能够正确、有效运行的基本保证。这种管理功能主要包括存取控制、安全性检测、并发控制、完整性约束条件的检查和执行、数据库内部的维护和管理等。

4.数据库的建立和维护功能

  这包括数据库初试数据的装载和转换、数据库的转储和恢复、数据库的重组织功能和性能监视、分析功能等。这些功能主要是由DBMS提供的实用程序来完成。

 

1.4 数据模型

  数据模型三种类型

Ø 概念模型又称信息模型,是从用户观方面来对数据和信息进行建模的结果,主要用于数据库的设计

Ø 逻辑模型是对客观事物及其联系的数据描述,包括网状模型、层次模型、关系模型和面向对象模型等,它是从计算机系统观方面来进行建模,主要用于DBMS的实现

Ø 物理模型是对数据最底层的抽象,用于描述数据在计算机系统内部的表示方式和存取方法,其实现由DBMS完成。

  数据模型的两大主要功能是用于描述数据及其关联。它包含三个基本要素,即数据结构、数据操作和数据的约束条件。

1.4.1数据模型的基本要素

1.数据结构

定义:用于描述数据的静态特性,它是所研究对象类型的集合。

分类:

Ø 数据描述对象

•      定义:用于描述数据的性质、内容和类型等相关的对象

•      指出对象所包含的项,并对项进行命名,指出项的数据类型和取值范围等。

Ø 数据关系描述对象

•      定义:是用于描述数据间关系信息的对象

•      指明各种不同对象类型之间的关系及关系的性质,并对这些关系进行命名。


 

2.数据操作

定义:用于对数据动态特性的描述,它是对数据库中各种对象类型的实例允许执行的所有操作及相关操作规则的集合。

分类:

Ø 查询

Ø 更新

•      更新操作又包括插入、删除和修改。

  在数据模型中,要明确定义操作的各项属性,如操作符、操作规则以及实现操作的语言等。

 

3.数据的约束条件

   数据的约束条件是一组完整性规则的集合。完整性规则是指既定的数据模型中数据及其关系所具有的制约性规则和依存性规则。这些规则是通过限定符合数据模型的数据库状态及其变化的方法来保证数据的正确性、有效性和相容性。

4.三个要素的作用

  数据结构是基础,它确定着数据模型的性质。

  数据操作是关键,它确定着数据模型的动态特性。

  约束条件主要起辅助作用。

1.4.2 四种主要的逻辑模型

1.层次模型

  它的数据结构是根树

  特点:

Ø有且仅有一个节点没有父节点,这个节点就是根树的根节点。

Ø除了根节点外,其他节点有且仅有一个父节点,但可能由0个或者多个子节点。

  在层次模型中,具有相同父节点的子节点称为兄弟节点,没有子节点的节点称为叶节点。

  在根树的层次结构中,每个节点代表一个实体型。但由于层次模型中的实体型是用记录型来表示,所以根树中的每个节点实际上是代表着一个记录型。由于每个记录型节点有且仅有一个父节点(根节点除外),所以只要每个节点指出它的父节点,就可以表示出层次模型的数据结构。如果要访问某一个记录型节点,则可以运用相关的根树遍历方法从根节点开始查找该节点,然后对其访问。

 【例子】 一个学校包含多个学院,一个学院又包含多个系和研究所等。这样,学校、学院、系和研究所等实体非常自然地构成了现实世界中的层次关系。层次模型正是为了满足描述这种层次关系的需要而产生的。所以,它的表达方式自然、直观,但是其缺点也是明显。

 

层次模型缺点:

•        处理效率低

Ø  这是因为层次模型的数据结构是一种根树结构,对任何节点的访问都必须从根节点开始。这使得对底层节点的访问效率变低,并且难以进行反向查询。

•        不易进行更新操作

Ø  更新操作包括插入、修改和删除等操作。对某一个树节点进行这种更新操作时,都有可能导致整棵根树大面积的变动。对大数据集来说,这可是一个沉重。

•        安全性不好

Ø  这主要体现在,当删除一个节点时,则它的子节点和孙子节点都将被删除。所以,必须慎用删除操作。

•        数据独立性较差

Ø  当用层次命令操作数据的时候,它要求用户了解数据的物理结构,并需要显式地说明存取途径。

2.网状模型

  网状模型的数据结构是网状结构。网状模型反映着现实世界中实体间更为复杂的联系。由以下特点可以看出,节点间没有明确的从属关系,一个节点可以与其它多个节点有联系。

  特点

Ø 允许存在一个以上的节点没有父节点。

Ø 节点可以有多余一个的父节点。

  缺点:

Ø 由于在使用网状模型时,用户必须熟悉数据的逻辑结构,所以结构的复杂性增加了用户查询和定位的难度。

Ø 不支持对于层次结构的表达等。

Ø  与层次模型类似,网状结构中的每个节点代表一个实体型,而这种实体型是用记录型来表示。与层次结构不同的是:在层次结构中有且仅有一个根节点,而在网状结构中则允许同时存在多个“根节点”;在层次结构中每个节点有且仅有一个父节点(根节点除外),而在网状结构中则允许一个节点同时有多个“父节点”。

Ø  这种结构上的差异,也导致了节点对应的记录型结构的变化。网状模型中节点间联系的实现必须由节点同时指出其父节点和子节点的方法来完成。而在层次模型中,每个节点只需指定其父节点即可(根节点除外)。也正是由于这种差异的存在,使得网状模型在性质和功能上发生了重要的改变。这主要体现在:网状模型比层次模型具有更大的灵活性和更强的数据建模能力。

 

【例子】 图1.8表示了学生A、B和课程C、D、E之间的一种选修联系的网状结构图。

 

  对于小数据量而言,层次模型和网状模型的缺点可能不太明显,但是当作用于大数据量时,其缺点就显得非常突出。所以,这两种模型不适合用于当今以处理海量数据为特征的数据处理任务中。目前,它们基本上退出了市场,取而代之的是关系模型。

3.关系模型

  关系模型是当今最为流行的一种数据模型。在关系模型中,实体间的联系是通过二维关系(简称关系)来定义,其数据结构就是二维关系。每个一种二维关系都可以用一张二维表来表示,表达直观、明了。所以,很多时候是把二维表和关系直接等同起来,简称为(二维)关系表。关系模型就是若干张关系表的集合。

  

  关系模型的术语

Ø 关系:一张二维表。

Ø 记录(或元组):关系表中的一行。

Ø 字段(或属性):关系表中的一列。

Ø 域:即字段的值域,也就是字段的取值范围。

Ø 数据项(或分量):某一个记录中的一个字段值。

Ø 主关键字段(或主码):简称主键,是关系表中一个或者多个字段的集合,这些记录的值能够唯一标识每一个记录。

Ø 关系模式:是对关系的一种抽象的描述,其描述格式为“关系名(字段1,字段2,…,字段n)”,其中“字段1”带下划线,表示该字段是主关键字段。

 

  关系模型的特点:

•     具有严密的数学基础。关系代数、关系演算等都可以用于对关系模型进行定性或者定量的分析,探讨关系的分开和合并及其有关性质等。

•     概念单一化、表达直观,但又具有较强的数据表达和建模能力。一般来说,一个关系只表达一个主题,如果有多个主题在一起,则需要将它们分开,用多个关系来表示,这就是概念的单一化。

•     关系都已经规范化。即关系要满足一定的规范条件,这使得关系模型表现出特有的一些性质。

Ø  例如,在一个关系中数据项是最基本的数据单位,它不能再进行分解;同一个字段的字段值具有相同的数据类型;各字段的顺序是任意,记录的顺序也是任意的,等等。

•     在关系模型中,对数据的操作是集合操作,即操作的对象是记录的集合,操作所产生的结果也是记录的集合。这种操作不具有明显的方向性,不管如何操作,其难度都一样。而在层次模型和网状模型中,对数据的操作带有明显的方向性,在正反两个方向上操作的难度完全不一样。

  关系模型的缺点

Ø  对复杂问题的建模能力差。在对复杂问题建模时一般都会呈现出错综复杂的关系,而关系模型仅限于用二维关系来表示这些复杂关系,无法用递归和嵌套的方式来描述(因为它不允许嵌套记录和嵌套关系的存在)。所以,在许多时候关系模型显得力不从心。

Ø  对象语义的表达能力比较差。现实世界中,对象之间的关系往往不仅限于量的关系,而且还可能体现语义之间的联系,蕴涵着特定的内涵。但关系模型为了规范化这些关系,可能会强行拆开这种语义联系,造成不自然的分解,从而使得在查询等操作时出现语义不合理的结果。

Ø  可扩充性差。关系模式只支持记录的集合这一种数据结构,并且数据项不可再分,无法形成嵌套记录和嵌套关系,所以它无法扩充成层次模型或网状模型。且它不支持抽象数据类型,不能对多种类型数据对象进行管理。

4.面向对象模型

  面向对象方法(Object-Oriented Paradigm,简称OO)基本出发点就是按照人类认识世界的方法和思维方式来分析和解决问题。

  面向对象模型是由面向对象方法进行建模和表示而形成的数据模型。

  面向对象模型的相关理论和方法还不够成熟,主要是处于理论研究和实验阶段。

1.5.1 概念模型

  从数据模型的建模方法来看,一般是先将现实世界中的问题建模为信息世界中的概念模型,然后将信息世界中的概念模型转化为机器世界中的逻辑模型。

  当确认概念模型已经能够充分表达原问题(现实世界中)的时候,再将这种概念模型转化为数据库系统中某一个既定DBMS支持的数据模型,形成机器世界中的逻辑模型。

  从现实世界到机器世界的转换过程可以用图1.9来表示。

 

1.5.2 实体及其联系

1.概念

实体是客观存在的并可以相互区分的事物。

实体的属性是指实体所具有的特性。

Ø eg:学生是一个实体,如姓名、性别、成绩等是实体的属性。

又称关键字,它是一个或者多个属性的集合。

Ø eg:学号是学生实体的码。

属性的域是指一个属性的取值范围。

Ø eg:成绩是学生实体的域。

实体型是指用实体名和实体属性名的集合来共同刻画同一类实体。

Ø  eg:学生(学号,姓名,性别,籍贯,成绩)是一个实体型。

实体集就是实体的集合。

联系

Ø 定义

•         是指事物之间的关系(现实世界)在信息世界中的反映。

Ø 两种类型

•         实体内部的联系和实体之间的联系。

Ø 三种联系类型

假设A和B分别表示两个实体集

•         一对一联系记为(1:1)。

•         一对多联系记为(1:n)。

•         多对多联系记为(m:n)。

当将现实世界中的实际问题转化为信息世界中的概念模型时,用什么来描述这种概念模型呢?

当在数据库理论中,通常用E-R图来描述概念模型 ,它提供了表示实体型、属性和联系的方法。

1.5.3 E-R图

1.实体及其属性的表示

【例子】 对于一个实体型——学生(学号,姓名,成绩),其E-R图如图1.10所示。

 

2.实体型之间联系的表示

两个实体型之间联系的表示

 

  多个实体型(三个或三个以上)之间联系的表示

Ø 三个实体型A、B、C之间联系表示为(m:n:o),其中m,n,o > 0。

【例子】 对于供应商、仓库和零件,由于一个供应商可以提供多种零件并存放在不同仓库中,而一种零件也可以由多个供应商提供并存放在不同仓库中,同时一个仓库也可以存放不同供应商提供的多种零件。所以供应商、仓库和零件之间的联系是多对多联系,其E-R图可以用图1.12表示。

 


 

3.实体型内部联系的表示

  同一个实体型内部实体的三种联系对应的E-R图,分别如图1.13的(a)、(b)和(c)所示。

 

【例子】 职工实体型中的实体具有领导与被领导的联系,这种联系是一对多联系,可以用图1.14表示。

 

4.联系属性的表示

  联系的属性的表示方法与实体的类似

Ø 对于供应商和仓库之间的联系(库存),其属性(库存量),可以表示如图1.15所示。

 

总结

  利用实体、属性和联系及其之间关系的表示方法可以将现实世界中的复杂问题抽象成为信息世界中的概念模型。

  概念模型通常是用E-R图表示的,E-R图的设计过程就是对问题进行抽象和建模的过程。

猜你喜欢

转载自www.cnblogs.com/ZanderZhao/p/11056245.html