第1篇 数据库入门
第1章 SQL Server 2005数据库基础
数据库(Database)技术是按照数据结构来组织、存储和管理数据的仓库,它可以追溯到五十年前雷明顿兰德公司的Univac I计算机推出的一种一秒钟可以输入数百条记录的磁带驱动器。后来,随着信息技术的不断发展和数据膨胀引起的需要,数据库技术有了长足的发展。为了让大家更加深入地了解数据库技术,本书将介绍比较实用的数据库软件——SQL Server 2005。SQL Server 2005简单实用,市场占有率高,非常适合计算机初学者及数据库研究者深入学习。本章的主要内容如下:
❑ 走进数据库的世界,初步认识数据库。
❑ 数据库的成长历程,对数据库的发展大概了解。
❑ 数据库应用系统的开发步骤。
1.1 数据库的世界
数据库从诞生至今已经历经五十多年,在这段时间数据库发生了巨大变化。人们对数据库并没有统一的定义,在此我们仅列举两个比较著名的定义来阐述数据库的实质及功能。定义一, J.Martin曾经给数据库下了一个比较完整的定义,其表述如下:数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务;数据的存储独立于使用它的程序;对数据库插入新数据,修改和检索原有数据均能按一种公用的和可控制的方式进行。当某个系统中存在结构上完全分开的若干个数据库时,则该系统包含一个“数据库集合”。定义二,所有的信息,不论其是以印刷形式、计算机存储单元形式,还是其他形式存在,都应视为“数据库”(此定义为伯尼尔公约议定书专家委员会的观点)。数据库具有如下特点:
❑ 实现了数据共享:数据的共享包含所有用户可同时存取数据库中的数据,也包括用户通过接口使用数据库,数据的共享可以有效节省存储空间,避免数据间的不一致情况。
❑ 有效减少数据冗余:由于数据库实现了数据共享,从而并非每个用户各自建立文件,因此可以减少大量重复数据,减少了数据冗余,维护了数据的一致性。
❑ 数据的独立性比较高:数据的独立性包括数据库中数据库的逻辑结构和应用程序,彼此是相互独立的,并且数据物理结构变化并不影响数据逻辑结构。
❑ 数据实现了集中控制:在文件管理方式中,数据处于一种分散状态,不同用户或同一用户在处理不同文件时各文件毫无关系。但是数据库可以对数据进行集中控制和管理,并通过数据模型表示各数据的组织和其中的关系。
❑ 确保了数据的安全性和可靠性:数据的安全性和可靠性主要表现在如下几个方面:
可以防止数据丢失、错误更新等。
确保了数据的有效性、正确性。
数据库管理系统提供了一套成熟的方法,可以及时发现故障并且修复,从而保证数据免遭破坏。
下面简要介绍与数据库技术密切相关的几个概念。
1.1.1 信息
信息是信息论中的一个术语,常常把消息中有意义的内容称为信息。1948年,美国数学家、信息论的创始人香农在题为“通讯的数学理论”的论文中指出:“信息是用来消除随机不定性的东西”。1948年,美国著名数学家、控制论的创始人维纳在《控制论》一书中,指出:“信息就是信息,既非物质,也非能量。”信息是客观世界在人们头脑中的反映。
信息的特征主要包括以下几个方面:
❑ 信息的内容是关于客观事物或思想方面的知识。
❑ 信息是有用的。
❑ 信息能够在空间和时间上被传递。
❑ 信息需要一定的形式表示。
1.1.2 数据
数据是承担信息的物理符号,是数据库中存储的基本对象。数据包括“型”和“值”,“型”代表数据的结构,“值”代表数据的具体取值。因此,一条数据受数据类型和取值范围的约束。例如,在学生信息统计单中,我们普遍感兴趣的是学生的姓名、性别、年龄、联系方式等,因此我们在数据中可以存入如下信息:王明,男,24,13892843459。
这条数据向我们阐述了如下信息:学生姓名王明,性别男,年龄24岁,手机号为13892843459。前面的姓名,性别等为“型”,而后面的王明,男等数据表述了“值”。
1.1.3 数据管理
数据管理是数据处理的基础工作,是指利用计算机和软件技术对数据进行收集、存储、处理和应用的过程。数据管理的工作包括3个内容:组织和保存数据、进行数据维护、提供数据查询和数据统计功能。随着计算机技术的发展,数据管理经历了人工管理、文件系统、数据库系统3个发展阶段。在数据库系统中所建立的数据结构,更充分地描述了数据间的内在联系,便于数据修改、更新与扩充,同时保证了数据的独立性、可靠性、安全性与完整性,减少了数据冗余,近而提高了数据共享程度及数据管理效率。
1.1.4 数据库管理系统
数据库管理系统(Data Base Management System,DBMS)是提供数据库管理的软件系统,它由一组计算机程序组成,管理并控制数据资源的使用。数据库管理系统是数据库系统的核心,为用户提供组织和存储数据、获取和维护数据的功能。其具体功能如下。
❑ 数据库定义功能:数据库管理系统提供数据定义语言(DDL,Data Definition Language),用户可以方便地定义数据库结构,包括外模式、内模式等的定义,并且包括数据库、表等对象的定义。
❑ 数据操纵功能:数据库管理系统在提供数据定义语言的同时还提供了数据操纵语言(Data Manipulation Language,DML),用户可以通过数据操纵语言实现数据库的基本操纵,如实现对数据库的检索、插入、删除和修改等。
❑ 数据库的运行管理:数据库在建立、运行和维护时由DBMS进行管理、控制,以保证数据的安全性、完整性、多用户对数据的并发使用及发生故障后的系统恢复。
❑ 数据库的建立和维护功能:主要包括数据库数据批量载入、数据库的转储、介质故障的恢复、数据库的重组织、性能监视与分析等。
❑ 除此之外,数据库管理系统还包括DBMS与网络中其他软件系统的通信功能、数据库的重组织功能、性能监视和分析功能等。
1.1.5 数据库系统
数据库系统(DBS,Data Base System)是指由数据库及其管理软件组成的系统。一个数据库系统应由计算机硬件、数据库、数据库管理系统、数据库应用系统和数据库管理员组成。
数据库系统具体以下性能:①能够保证数据的独立性。②冗余数据少,数据共享程度高。③系统的用户接口简单,用户容易掌握,使用方便。④能够确保系统运行可靠,出现故障时能迅速排除;能够保护数据不受非授权者访问或破坏;能够防止错误数据的产生,一旦产生也能及时发现。⑤有重新组织数据的能力,能改变数据的存储结构或数据存储位置,以适应用户操作特性的变化,改善由于频繁插入、删除操作造成的数据组织零乱和时空性能变坏的状况。⑥具有可修改性和可扩充性。⑦能够充分描述数据间的内在联系。
1.2 数据库的成长历程
数据库的发展历史可以追溯到五十年前,那时数据管理比较简单。通过大量的分类、比较和表格绘制的机器运行数百万穿孔卡片来进行数据的处理,运行结果在纸上打印出来。随着数据库技术的发展,数据库越来越不可缺少。至今,数据库技术的发展大致经历了3个阶段:
❑ 人工管理阶段(20世纪40年代中期到50年代中期)。
❑ 文件系统阶段(20世纪50年代末期到60年代中期)。
❑ 数据库系统阶段(20世纪60年代末期到现在)。
1.2.1 人工管理阶段
人工管理阶段大约在20世纪40年代中期至50年代中期,其是使用汇编语言进行操纵,外存只有卡片、纸带、磁带及磁盘(1956年IBM生产出第一个磁盘驱动器—— the Model 305 RAMAC)等,这个时期的数据处理方式为数据批处理。其特点如下:
❑ 数据不进行保存,数据用完就撤走。
❑ 没有专门的数据管理软件,因此这个时期程序员的负担很重。
❑ 数据不共享。
❑ 只有程序的概念,数据具有不独立性。
❑ 数据面向应用程序,无法相互利用,相互参照,因此程序间会产生大量冗余数据。
人工管理阶段的示意图,如图1-1所示。
图1.1 人工管理阶段示意图
1.2.2 文件系统阶段
文件系统阶段出现在20世纪50年代末到60年代中期,其主要标志为计算机中有了专门管理数据库的软件——操纵系统。此阶段磁盘、磁鼓等计算机直接存储的外存设备的出现推动了软件技术的发展,而操作系统的出现标志着数据管理步入一个新的阶段。
在文件系统阶段,数据以文件为单位存储在外存,并且由操纵系统统一管理。文件的物理结构和逻辑结构彼此分离,数据和程序相互独立。此阶段的硬件包括磁盘、磁鼓等直接存储的外存设备;软件为操纵系统、高级语言,操纵系统中的文件系统是专门用于数据管理的软件(DOS);文件关系阶段对文件实行批处理、联机实时处理。此阶段的特点如下:
❑ 数据可长期保存。
❑ 通过文件系统管理数据。
❑ 数据共享性差,数据的组织是面向程序的,会出现大量冗余。
❑ 数据独立性比较差。
文件系统阶段示意图,如图1.2所示。
图1.2 文件系统阶段示意图
1.2.3 数据库系统阶段
数据库系统发生在20世纪60年代末到现在,这个事情计算机在数据管理领域普遍应用,并且人们对数据管理技术提出了更高的要求。由于硬件价格下降,因此大容量的磁盘存储成为可能。数据库系统对数据管理采用联机实时处理方式。其特点主要表现在以下几点:
❑ 面向企业或部门,以数据为中心组织数据,形成综合性的数据库,为其他应用共享。
❑ 数据结构化,同一个数据库中的文件联系紧密,在整体上也服从一定的结构形式。
❑ 数据共享性高,尤其在同一个数据库中,因此冗余小,并且数据易修改、易扩充。
系统现有用户或程序可以共享数据库中的数据。
当系统需要扩充时,新用户或新程序还可以共享原有的数据资源。
多用户或多程序可以在同一时刻共同使用同一数据。
❑ 程序和数据独立性高。
数据的物理独立性(Physical Data Independence)指当数据的物理结构发生变化时,应用程序不需要修改也可以正常工作。
数据的逻辑独立性(Logical Data Independence)是指当数据库系统的数据全局逻辑结构改变时,它们对应的应用程序不需要改变仍可以正常运行。
对数据进行统一管理和控制(通过DBSM),提供了数据的安全性、完整性,以及并发控制和数据恢复。
数据的安全性控制是指保护数据库,以防止不合法的使用造成数据泄漏、破坏和更改。
数据的完整性控制是指为保证数据的正确性、有效性和相容性,防止不符合语义的数据输入或输出所采用的控制机制。
数据的并发控制是指排除由于数据共享,即用户并行使用数据库中的数据时,所造成的数据不完整和系统运行错误问题。
数据恢复是通过记录数据库运行的日志文件和定期做数据备份工作,保证数据在受到破坏时,能够及时使数据库恢复到正确状态。
1.2.4 数据库发展历程和研究方向
从数据库技术发展的过程可以看到,数据库学科的发展和数据库软件产业的发展是紧密结合并相互促进的。三十多年来由于进行了扎实的基础研究,使数据库技术具有了坚实的理论基础,形成了一门研究范围广泛的数据库学科。
1.数据库发展历程
1951年雷明顿兰德(Remington Rand Inc.)的Univac系统使用磁带和穿孔卡片作为数据存储,从而引发了数据管理的革命。
1961年,美国通用电气公司Bachman等人在1961年开发成功的IDS(Integrated DataStore)是最早出现的网状DBMS,这个DBMS也是第一个数据库管理系统——集成数据存储(Integrated DataStore IDS),奠定了网状数据库的基础。
1970年,IBM的研究员E.F.Codd博士在刊物《Communication of the ACM》上发表了一篇名为“A Relational Model of Data for Large Shared Data Banks”的论文,提出了关系模型的概念,奠定了关系模型的理论基础。
1974年,IBM的Ray Boyce和Don Chamberlin将Codd关系数据库12条准则的数学定义以简单的关键字语法表现出来,里程碑式地提出了SQL(Structured Query Language)语言。
1986年,ANSI把SQL作为关系数据库语言的美国标准,同年公布了标准SQL文本。
2.未来发展趋势
随着信息管理内容的不断扩展,出现了丰富多样的数据模型(如层次模型、网状模型、关系模型、面向对象模型、半结构化模型等),新技术也层出不穷(如数据流、Web数据管理、数据挖掘等)。数据库在信息集成、数据流管理、传感器数据库技术、半结构化数据与XML数据管理、网格数据管理、DBMS自适应管理等方面都有所发展,并且对数据库领域研究方向的发展趋势有深远影响。
1.3 数据库应用系统的开发步骤
数据库应用系统可以分为两大类:一类是以数据为中心的应用系统,其中心任务在于对数据的采集、整理和存储工作上;另一类是以处理为中心的应用系统,其重点是使用数据,包括数据的插入、查询、统计等工作。一般企业的数据应用系统属于后者,数据库应用系统的开发一般要经过以下几个时期和阶段,如图1.3所示。
图1.3 数据库应用系统开发过程
1.3.1 项目规划期
项目规划期的主要任务为分析问题规划、对项目进行系统必要性分析和可行性分析。
1.问题规划
在收集整理相关资料的基础上,要确定将建立的数据库系统与周边的关系,对系统定位,其规模、地位、功能都需要作全面的论证。
规划人力资源调配。对参与开发和维护的管理人员、技术人员提出要求并对其素质作出评估。对系统的开发、运行、维护的成本作出估算,预测系统效益的期望值。
2.需求分析阶段
(1)需求信息的采集。需求信息的采集一般以机构设计和业务活动为主干线,从高层到中层到底层逐渐展开。
(2)需求信息的分析整理。对收集到的信息要做分析整理工作。数据流图(DFD,Data Flow Diagram)是业务流程及业务中数据联系的形式描述。数据字典(DD,Data Dictionary)详细描述系统中的全部数据。数据字典包括数据项、数据组项、数据流、数据存储等部分。
(3)评审需求信息。开发过程中的每一个阶段都要经过评审,确认任务是否全部完成,避免或纠正工作中出现的错误和疏漏。
1.3.2 项目开发时期
1.概念模型设计
概念模型不依赖于具体的计算机系统,它是纯粹反向信息需求的概念结构。设计概念模型时常用的方法为ER图方法。用设计好的ER图再附以相应的说明书可作为阶段成果。
2.逻辑设计
逻辑设计阶段的主要目标是把概念模型转换为具体计算机上数据库管理系统所支持的结构数据模型。
逻辑设计的输入要素包括概念模型、用户需求、约束条件、选用的数据库管理系统的特性。
逻辑设计的输出信息包括数据库管理系统可处理的模式和子模式、应用程序设计指南、物理设计指南。
3.物理设计
物理设计是对给定的逻辑数据模型配置一个最合适应用环境的物理结构。物理设计的输入要素包括模式和子模式、物理设计指南、硬件特性、OS和数据库管理系统的约束、运行要求等。
数据设计的步骤如下:
(1)存储记录结构。设计综合分析数据存储要求和应用需求,设计存储记录格式。
(2)存储空间分配。从提高系统性能方面考虑,应将设计好的存储记录作为一个整体,合理地分配物理存储区域。尽可能充分利用物理顺序特点,把不同类型的存储记录指派到不同的物理群中。
(3)访问方法的设计。一个访问方法包括存储结构和检索机构两部分。存储结构限定了在访问存储记录时可以使用的访问路径;检索机构定义了每个应用实际使用的访问路径。
(4)物理设计的性能评价。其主要评价性能包括查询响应时间和存储空间、开销、效率。
4.程序编制与调试
在逻辑数据库结构确定以后,应用程序设计的编制就可以开始了。程序模块代码通常先在模拟的环境下初步调试,然后再进行联合调试。联合调试的工作主要包括:
(1)设计并建立数据库结构。根据逻辑设计和物流设计的结果,用DBMS提供的数据语言(DDL)编写数据库的源模式,经编译得到目标模式,执行目标模式即可建立时间的数据库结构。
(2)调试运行数据库结构建立后,装入实验数据,使数据库进入调试运行阶段。调试分为3个步骤:模块测试,用于测试程序的每个模块是否有错误;组装测试,用于测试模块之间的接口是否正确;确定测试,用于测试整个软件系统是否满足用户功能性要求。常用的测试方法分为白盒测试和黑盒测试两种,其设计的测试用例是不同的。
❑ 白盒测试:又称结构测试或逻辑驱动测试。“白盒”测试将测试对象看做是一个完全透明化的盒子,测试人员可以利用程序内部的逻辑结构及相关的信息来设计或选择测试用例。因此白合测试主要考虑的是测试用例对程序内部逻辑的覆盖程度,而不考虑程序的功能。
❑ 黑盒测试:又称为功能测试、数据驱动测试或黑箱测试。在这种测试方法中,程序对测试人员是完全不透明的。测试者不考虑程序的内部结构和特性,只根据程序的需求规格说明中的程序功能或程序的外部特性来设计程序的测试用例。
测试后,应完成“测试报告”。该报告要说明测试的对象、测试数据的选择、测试结果是否符合预期结果。如果发现问题,要经过调试找出错误原因并及时予以改正。
5.运行和维护时期
本阶段的主要任务是软件维护。软件维护是修改软件系统在使用过程中发现的隐含错误,扩充用户在使用过程中提出的新功能要求,其目的是维护软件系统的正常运行。此阶段的主要工作是:
❑ 维护数据库的安全性和完整性。按照制定的安全规范和故障恢复规范,在系统的安全出现问题时,及时调整授权和更改密码。及时发现系统运行时出现的错误,迅速修改,确保系统正常运行。把数据库的备份和转储作为日常的工作,一旦发生故障,立即使用数据库的最新备份予以恢复。
❑ 监察系统的性能。运用DBMS提供的性能监察与分析工具,不断地监控系统的运行情况。当数据库的存储空间或响应时间等性能下降时,立即进行分析找出原因,并及时采取措施改进。例如,可通修改某些参数、整理碎片、调整存储结构或重新组织数据库等方法,使数据库系统保持高效率、正常的运作。
❑ 扩充系统的功能。在维持原有系统功能和性能的基础上,适应环境和需求的变化,采纳用户的合理意见,对原有系统进行扩充,增加新的功能。
需要说明的是,软件声明周期虽然按瀑布模型可以划分为若干阶段,但在实际运用中各阶段不可能按照理想状态划分。随着开发过程的不断发展,相邻阶段之间充满回溯、反复和交叉的过程。
1.4 本章小结
本章从数据库开发人员的角度,对数据库的基础知识、基本原理进行了介绍,使读者对数据库有大概了解。并且对数据库的成长历程作了简单介绍,使读者了解数据库的由来与发展。最后介绍了数据库应用系统的开发步骤,使读者明白作为数据库开发人员,首先必须了解客户的应用需求,明确数据库系统的实体、属性和联系的基本情况,建立数据流图。本章介绍的关系数据库相关理论及数据库系统开发的一般过程,都是为具体的数据库软件SQL Server 2005编程做准备,为读者深入掌握SQL Server 2005奠定基础。
1.5 习题
1.简述数据库的特点。
2.简述数据库的发展历程。
3.简述数据库应用系统的开发步骤。
4.简述信息的概念。
5.数据管理工作的3个内容包括哪些?