。4 SOL Server2019数据库教程 根据对信息的组织方式的不同,数据库管理系统可以分为关系、网状和层次3种类型。 目前使用最多的数据库管理系统是关系型数据库管理系统(RDBMS)。例如,SQL Server、 Oracle、Sybase、Visual FoxPro、DB2、Informix、Ignres等都是常见的关系数据库管理系统。 1.1.6数据库系统 数据库系统(Database System,DBS)是由数据库、数据库管理系统(及其应用开发工具)、 应用程序和数据库管理员(Database Administrator,DBA)组成的存储、管理、处理和维护数 据的系统。应当指出的是,数据库的建立、使用和维护等工作只靠一个数据库管理系统远 远不够,还要有专门的人员来完成,这些人被称为数据库管理员。 在数据库系统中,数据库提供数据的存储功能,数据库管理系统提供数据的组织、存 取、管理和维护等基础功能,数据库应用系统根据应用需求使用数据库,数据库管理员负 责全面管理数据库系统。 1.2 数据管理技术的发展 数据库技术是应数据管理任务的需要而产生的。数据管理是指对数据进行分类、组织、 编码、存储、检索和维护,它是数据处理的中心问题。 在应用需求的推动下,在计算机硬件、软件发展的基础上,数据管理技术经历了人工 管理、文件系统、数据库系统3个阶段。 1.2.1人工管理阶段 20世纪50年代中期以前,计算机主要用于科学计算。当时的硬件状况是:外存只有 纸带、卡片、磁带,没有磁盘等直接存取存储设备:软件状况是:没有操作系统,没有管 理数据的专门软件:数据处理方式是批处理。批处理(Batch)是一种简化的脚本语言,它应 用于DOS和Windows系统中,是由DOS或者Windows系统内嵌的命令解释器(通常是 COMMAND.COM或者CMD.EXE)解释运行,类似于UNX中的Shel脚本。批处理文件 具有.bat或者.cmd的扩展名,其最简单的例子是逐行书写在命令行中用到的各种命令。更 复杂的情况,它需要使用f、for、goto等命令控制程序的运行过程,如同C、BASIC等高 级语言一样。如果需要实现更复杂的应用,利用外部程序是必要的,这包括系统本身提供 的外部命令和第三方提供的工具或者软件。批处理程序虽然是在命令行环境中运行,但不 仅能使用命令行软件,任何32位的Windows程序都可以放在批处理文件中运行。人工管 理数据具有如下特点。 (1)数据不保存。由于当时计算机主要用于科学计算,一般不需要将数据长期保存, 只是在计算某一课题时将数据输入,用完就撤走。它不仅对用户数据如此处置,对系统软 件有时也是这样。 (2)应用程序管理数据。数据需要由应用程序自己设计、说明(定义)和管理,没有相应
• 4 • SQL Server 2019 数据库教程 根据对信息的组织方式的不同,数据库管理系统可以分为关系、网状和层次 3 种类型。 目前使用最多的数据库管理系统是关系型数据库管理系统(RDBMS)。例如,SQL Server、 Oracle、Sybase、Visual FoxPro、DB2、Informix、Ignres 等都是常见的关系数据库管理系统。 1.1.6 数据库系统 数据库系统(Database System,DBS)是由数据库、数据库管理系统(及其应用开发工具)、 应用程序和数据库管理员(Database Administrator,DBA)组成的存储、管理、处理和维护数 据的系统。应当指出的是,数据库的建立、使用和维护等工作只靠一个数据库管理系统远 远不够,还要有专门的人员来完成,这些人被称为数据库管理员。 在数据库系统中,数据库提供数据的存储功能,数据库管理系统提供数据的组织、存 取、管理和维护等基础功能,数据库应用系统根据应用需求使用数据库,数据库管理员负 责全面管理数据库系统。 1.2 数据管理技术的发展 数据库技术是应数据管理任务的需要而产生的。数据管理是指对数据进行分类、组织、 编码、存储、检索和维护,它是数据处理的中心问题。 在应用需求的推动下,在计算机硬件、软件发展的基础上,数据管理技术经历了人工 管理、文件系统、数据库系统 3 个阶段。 1.2.1 人工管理阶段 20 世纪 50 年代中期以前,计算机主要用于科学计算。当时的硬件状况是:外存只有 纸带、卡片、磁带,没有磁盘等直接存取存储设备;软件状况是:没有操作系统,没有管 理数据的专门软件;数据处理方式是批处理。批处理(Batch)是一种简化的脚本语言,它应 用于 DOS 和 Windows 系统中,是由 DOS 或者 Windows 系统内嵌的命令解释器(通常是 COMMAND.COM 或者 CMD.EXE)解释运行,类似于 UNIX 中的 Shell 脚本。批处理文件 具有.bat 或者.cmd 的扩展名,其最简单的例子是逐行书写在命令行中用到的各种命令。更 复杂的情况,它需要使用 if、for、goto 等命令控制程序的运行过程,如同 C、BASIC 等高 级语言一样。如果需要实现更复杂的应用,利用外部程序是必要的,这包括系统本身提供 的外部命令和第三方提供的工具或者软件。批处理程序虽然是在命令行环境中运行,但不 仅能使用命令行软件,任何 32 位的 Windows 程序都可以放在批处理文件中运行。人工管 理数据具有如下特点。 (1) 数据不保存。由于当时计算机主要用于科学计算,一般不需要将数据长期保存, 只是在计算某一课题时将数据输入,用完就撤走。它不仅对用户数据如此处置,对系统软 件有时也是这样。 (2) 应用程序管理数据。数据需要由应用程序自己设计、说明(定义)和管理,没有相应
第1章数据库基础 5· 的软件系统负责数据的管理工作。应用程序中不仅要规定数据的逻辑结构,而且要设计物 理结构,包括存储结构、存取方法、输入方式等。因此,程序员负担很重。 (3)数据不共享。数据是面向应用程序的,一组数据只能对应一个程序。当多个应用程 序涉及某些相同的数据时必须各自定义,无法互相利用、互相参照,因此程序与程序之间有 大量的冗余数据。 (4)数据不具有独立性。数据的逻辑结构或物理结构发生变化后,必须对应用程序做相 应的修改,数据完全依赖于应用程序,称之为数据缺乏独立性,这就加重了程序员的负担。 在人工管理阶段,应用程序与数据之间的一一对应关系如图1-2所示。 应用程序 数据1 应用程序2 数据2 44 应用程序n 数据n 图1-2人工管理阶段应用程序与数据之间的对应关系 1.2.2文件系统阶段 20世纪50年代后期到60年代中期,这时硬件方面己有了磁盘、磁鼓等直接存取存储 设备:软件方面,操作系统中己经有了专门的数据管理软件,一般称其为文件系统:处理 方式上不仅有了批处理,而且能够联机实时处理。 1.文件系统优点 使用文件系统管理数据具有如下优点。 (1)数据可以长期保存。由于计算机大量用于数据处理,数据需要长期保留在外存上 反复进行查询、修改、插入和删除等操作。 (2)由文件系统管理数据。由专门的软件即文件系统进行数据管理,文件系统把数据 组织成相互独立的数据文件,利用“按文件名访问,按记录进行存取”的管理技术,提供 了对文件进行打开与关闭、对记录读取和写入等存取方式。 2.文件系统的缺点 文件系统实现了记录内的结构性。但文件系统仍存在以下缺点。 (1)数据共享性差,冗余度大。在文件系统中,一个(或一组)文件基本上对应于一个应 用程序,即文件仍然是面向应用的。当不同的应用程序具有部分相同的数据时,也必须建立 各自的文件,而不能共享相同的数据,因此数据的冗余度大,浪费存储空间。同时由于相同 数据的重复存储、各自管理,容易造成数据的不一致性,给数据的修改和维护带来了困难。 (2)数据独立性差。文件系统中的文件是为某一特定应用服务的,文件的逻辑结构是 针对具体的应用来设计和优化的,因此要想对文件中的数据再增加一些新的应用会很困难。 而且,当数据的逻辑结构改变时,应用程序中文件结构的定义必须修改,应用程序中对数
第 1 章 数据库基础 • 5 • 的软件系统负责数据的管理工作。应用程序中不仅要规定数据的逻辑结构,而且要设计物 理结构,包括存储结构、存取方法、输入方式等。因此,程序员负担很重。 (3) 数据不共享。数据是面向应用程序的,一组数据只能对应一个程序。当多个应用程 序涉及某些相同的数据时必须各自定义,无法互相利用、互相参照,因此程序与程序之间有 大量的冗余数据。 (4) 数据不具有独立性。数据的逻辑结构或物理结构发生变化后,必须对应用程序做相 应的修改,数据完全依赖于应用程序,称之为数据缺乏独立性,这就加重了程序员的负担。 在人工管理阶段,应用程序与数据之间的一一对应关系如图 1-2 所示。 图 1-2 人工管理阶段应用程序与数据之间的对应关系 1.2.2 文件系统阶段 20 世纪 50 年代后期到 60 年代中期,这时硬件方面已有了磁盘、磁鼓等直接存取存储 设备;软件方面,操作系统中已经有了专门的数据管理软件,一般称其为文件系统;处理 方式上不仅有了批处理,而且能够联机实时处理。 1. 文件系统优点 使用文件系统管理数据具有如下优点。 (1) 数据可以长期保存。由于计算机大量用于数据处理,数据需要长期保留在外存上 反复进行查询、修改、插入和删除等操作。 (2) 由文件系统管理数据。由专门的软件即文件系统进行数据管理,文件系统把数据 组织成相互独立的数据文件,利用“按文件名访问,按记录进行存取”的管理技术,提供 了对文件进行打开与关闭、对记录读取和写入等存取方式。 2. 文件系统的缺点 文件系统实现了记录内的结构性。但文件系统仍存在以下缺点。 (1) 数据共享性差,冗余度大。在文件系统中,一个(或一组)文件基本上对应于一个应 用程序,即文件仍然是面向应用的。当不同的应用程序具有部分相同的数据时,也必须建立 各自的文件,而不能共享相同的数据,因此数据的冗余度大,浪费存储空间。同时由于相同 数据的重复存储、各自管理,容易造成数据的不一致性,给数据的修改和维护带来了困难。 (2) 数据独立性差。文件系统中的文件是为某一特定应用服务的,文件的逻辑结构是 针对具体的应用来设计和优化的,因此要想对文件中的数据再增加一些新的应用会很困难。 而且,当数据的逻辑结构改变时,应用程序中文件结构的定义必须修改,应用程序中对数
6 SQL Server2019数据库教程 据的使用也要改变,因此数据依赖于应用程序,缺乏独立性。可见,文件系统仍然是一个 不具有弹性的无整体结构的数据集合,即文件之间是孤立的,不能反映现实世界事物之间 的内在联系。 在文件系统阶段,应用程序与数据之间的关系如图1-3所示。 应用程序1 数据1 应用程序2 数据2 文件系统 应用程序n 数据n 图13文件系统阶段应用程序与数据之间的关系 1.2.3 数据库系统阶段 20世纪60年代后期以来,计算机管理的对象规模越来越大,应用范围越来越广,数 据量急剧增长,同时多种应用、多种语言互相覆盖地共享数据集合的要求越来越强烈。 这时硬件已有大容量磁盘,硬件价格下降:软件则价格上升,为编制和维护系统软件 及应用程序所需的成本相对增加:在处理方式上,联机实时处理要求更多,并开始提出和 考虑分布处理。在这种背景下,以文件系统作为数据管理手段己经不能满足应用的需求, 于是为解决多用户、多应用共享数据的需求,使数据为尽可能多的应用服务,数据库技术 便应运而生,出现了统一管理数据的专门软件系统一数据库管理系统。 用数据库系统来管理数据比文件系统具有明显的优点,从文件系统到数据库系统标志 着数据管理技术的飞跃。数据库系统阶段使用数据库技术来管理数据。数据库技术发展至 今已经是一门非常成熟的技术,它克服了文件系统的不足,并增加了许多新功能。在这一 阶段,数据由数据库管理系统统一控制,数据不再面向某个应用而是面向整个系统,因此 数据可以被多个用户、多个应用共享,概括起来具有以下主要特征。 (1)数据库能够根据不同的需要按不同的方法组织数据,最大限度地提高用户或应用 程序访问数据的效率。 (2)数据库不仅能够保存数据本身,还能保存数据之间的相互联系,保证了对数据修 改的一致性。 (3)在数据库中,相同的数据可以共享,从而降低了数据的冗余度。 (4)数据具有较高的独立性,数据的组织和存储方法与应用程序相互独立,互不依赖, 从而大大降低了应用程序的开发代价和维护代价。 (⑤)提供了一整套的安全机制来保证数据的安全、可靠。 (6)可以给数据库中的数据定义一些约束条件来保证数据的正确性(也称完整性)。 在数据库系统阶段,应用程序和数据库之间的关系如图1-4所示
• 6 • SQL Server 2019 数据库教程 据的使用也要改变,因此数据依赖于应用程序,缺乏独立性。可见,文件系统仍然是一个 不具有弹性的无整体结构的数据集合,即文件之间是孤立的,不能反映现实世界事物之间 的内在联系。 在文件系统阶段,应用程序与数据之间的关系如图 1-3 所示。 应用程序1 数据1 应用程序2 数据2 应用程序n 数据n …… …… 文件系统 图 1-3 文件系统阶段应用程序与数据之间的关系 1.2.3 数据库系统阶段 20 世纪 60 年代后期以来,计算机管理的对象规模越来越大,应用范围越来越广,数 据量急剧增长,同时多种应用、多种语言互相覆盖地共享数据集合的要求越来越强烈。 这时硬件已有大容量磁盘,硬件价格下降;软件则价格上升,为编制和维护系统软件 及应用程序所需的成本相对增加;在处理方式上,联机实时处理要求更多,并开始提出和 考虑分布处理。在这种背景下,以文件系统作为数据管理手段已经不能满足应用的需求, 于是为解决多用户、多应用共享数据的需求,使数据为尽可能多的应用服务,数据库技术 便应运而生,出现了统一管理数据的专门软件系统——数据库管理系统。 用数据库系统来管理数据比文件系统具有明显的优点,从文件系统到数据库系统标志 着数据管理技术的飞跃。数据库系统阶段使用数据库技术来管理数据。数据库技术发展至 今已经是一门非常成熟的技术,它克服了文件系统的不足,并增加了许多新功能。在这一 阶段,数据由数据库管理系统统一控制,数据不再面向某个应用而是面向整个系统,因此 数据可以被多个用户、多个应用共享,概括起来具有以下主要特征。 (1) 数据库能够根据不同的需要按不同的方法组织数据,最大限度地提高用户或应用 程序访问数据的效率。 (2) 数据库不仅能够保存数据本身,还能保存数据之间的相互联系,保证了对数据修 改的一致性。 (3) 在数据库中,相同的数据可以共享,从而降低了数据的冗余度。 (4) 数据具有较高的独立性,数据的组织和存储方法与应用程序相互独立,互不依赖, 从而大大降低了应用程序的开发代价和维护代价。 (5) 提供了一整套的安全机制来保证数据的安全、可靠。 (6) 可以给数据库中的数据定义一些约束条件来保证数据的正确性(也称完整性)。 在数据库系统阶段,应用程序和数据库之间的关系如图 1-4 所示
第1章数据库基础 7· 应用程序1 数据库 应用程序2 管理系统 数据库 应用程序n 图1-4数据库系统阶段应用程序和数据库之间的关系 1.3 数据模型 数据库技术是计算机领域中发展最快的技术之一。数据库技术的发展是沿着数据模型 的主线推进的。模型,特别是具体模型,对人们来说并不陌生。一张地图、一组建筑设计 沙盘、一架精致的航模飞机都是具体的模型,一眼望去就会使人联想到真实生活中的事物。 模型是对现实世界中某个对象特征的模拟和抽象。例如,航模飞机是对生活中飞机的 一种模拟和抽象,它可以模拟飞机的起飞、飞行和降落,它抽象了飞机的基本特征一一机 头、机身、机翼、机尾。 数据模型(Data Model)也是一种模型,它是对现实世界数据特征的抽象。也就是说,数 据模型是用来描述数据、组织数据和对数据进行操作的。 数据库是某个企业、组织或部门所涉及数据的综合,它不仅要反映数据本身的内容, 而且要反映数据之间的联系。由于计算机不可能直接处理现实世界中的具体事物,所以人 们必须事先把具体事物转换成计算机能够处理的数据。在数据库技术中,使用数据模型来 抽象表示现实世界中的数据和信息。 现实世界中的数据要进入数据库中,需要经过人们的认识、理解、整理、规范和加工。 可以把这一过程划分成3个主要阶段,即现实世界阶段、信息世界阶段和机器世界阶段。 现实世界中的数据经过人们的认识和抽象,形成信息世界:信息世界中用概念模型来描述 数据及其联系,概念模型按用户的观点对数据和信息进行建模,不依赖于具体的机器,独 立于具体的数据库管理系统,是对现实世界的第一层抽象;根据所使用的具体机器和数据 库管理系统,需要对概念模型进行进一步转换,形成在具体机器环境下可以实现的数据模 型,称为逻辑模型。对现实世界数据的抽象过程,如图1-5所示。 现实世界 认识、抽象 信息世界: 概念模型 ,转换 机器世界:DBMS支持的数据模型 图15对现实世界数据的抽象过程
第 1 章 数据库基础 • 7 • …… 应用程序1 应用程序2 应用程序n 数据库 数据库 管理系统 图 1-4 数据库系统阶段应用程序和数据库之间的关系 1.3 数 据 模 型 数据库技术是计算机领域中发展最快的技术之一。数据库技术的发展是沿着数据模型 的主线推进的。模型,特别是具体模型,对人们来说并不陌生。一张地图、一组建筑设计 沙盘、一架精致的航模飞机都是具体的模型,一眼望去就会使人联想到真实生活中的事物。 模型是对现实世界中某个对象特征的模拟和抽象。例如,航模飞机是对生活中飞机的 一种模拟和抽象,它可以模拟飞机的起飞、飞行和降落,它抽象了飞机的基本特征——机 头、机身、机翼、机尾。 数据模型(Data Model)也是一种模型,它是对现实世界数据特征的抽象。也就是说,数 据模型是用来描述数据、组织数据和对数据进行操作的。 数据库是某个企业、组织或部门所涉及数据的综合,它不仅要反映数据本身的内容, 而且要反映数据之间的联系。由于计算机不可能直接处理现实世界中的具体事物,所以人 们必须事先把具体事物转换成计算机能够处理的数据。在数据库技术中,使用数据模型来 抽象表示现实世界中的数据和信息。 现实世界中的数据要进入数据库中,需要经过人们的认识、理解、整理、规范和加工。 可以把这一过程划分成 3 个主要阶段,即现实世界阶段、信息世界阶段和机器世界阶段。 现实世界中的数据经过人们的认识和抽象,形成信息世界;信息世界中用概念模型来描述 数据及其联系,概念模型按用户的观点对数据和信息进行建模,不依赖于具体的机器,独 立于具体的数据库管理系统,是对现实世界的第一层抽象;根据所使用的具体机器和数据 库管理系统,需要对概念模型进行进一步转换,形成在具体机器环境下可以实现的数据模 型,称为逻辑模型。对现实世界数据的抽象过程,如图 1-5 所示。 机器世界:DBMS支持的数据模型 现实世界 认识、抽象 信息世界:概念模型 转换 图 1-5 对现实世界数据的抽象过程
。8 SQL Server2019数据库教程 1.3.1现实世界 在现实世界阶段,把现实世界中客观存在并可以相互区分的事物称为实体。实体可以 是实际存在的东西,也可以是抽象的。例如,学生、课程、零件、仓库、项目、案件、选 课等都是实体。 每一个实体都具有一定的特征。例如,对于“学生”实体,它具有学号、姓名、性别、 生日等特征:对于“零件”实体,它具有名称、规格型号、生产日期、单价等特征: 具有相同特征的一类实体的集合构成实体集。例如,所有的学生构成“学生”实体集: 所有的课程构成“课程”实体集:所有的部门构成“部门”实体集等。 在一个实体集中,用于区分实体的特征被称为标识特征。例如,对于学生实体,学号 可以作为其标识特征,因为通过不同的学号可以区分不同的学生实体,而性别则不能作为 其标识特征,因为通过性别“男”或“女”并不能识别出具体是哪个学生。 1.3.2信息世界 人们对现实世界的对象进行抽象,并对其进行命名、分类,在信息世界用概念模型来 对其进行描述。信息世界涉及的主要概念如下。 1.实体(Entity) 客观存在并可相互区别的事物被称为实体。实体可以是具体的人、事、物,也可以是 抽象的概念或联系,例如,一个职工、一个学生、一个部门、一门课、学生的一次选课、 部门的一次订货、教师与院系的工作关系(即某位教师在某院系工作)等都是实体。 2.属性(Attribute) 实体所具有的某一特性被称为属性。一个实体可以由若干个属性来刻画。例如,学生 实体可以由学号、姓名、性别、出生年月、所在院系、入学时间等属性组成,属性组合 (201315121,张山,男,199505,计算机系,2013)即表征了一个学生。 3.域(Domain) 属性的取值范围被称为该属性的域。例如,姓名的域为字符串集合:年龄的域为不小 于零的整数:性别的域为(男,女)。 4.码(Key) 唯一标识实体的属性集被称为码。例如,学号是学生实体的码。 5.实体型(Entity Type) 具有相同属性的实体必然具有共同的特征和性质。用实体名及其属性名集合来抽象和 刻画同类实体,被称为实体型。例如,学生(学号,姓名,性别,出生年月,所在院系,入 学时间)就是一个实体型
• 8 • SQL Server 2019 数据库教程 1.3.1 现实世界 在现实世界阶段,把现实世界中客观存在并可以相互区分的事物称为实体。实体可以 是实际存在的东西,也可以是抽象的。例如,学生、课程、零件、仓库、项目、案件、选 课等都是实体。 每一个实体都具有一定的特征。例如,对于“学生”实体,它具有学号、姓名、性别、 生日等特征;对于“零件”实体,它具有名称、规格型号、生产日期、单价等特征。 具有相同特征的一类实体的集合构成实体集。例如,所有的学生构成“学生”实体集; 所有的课程构成“课程”实体集;所有的部门构成“部门”实体集等。 在一个实体集中,用于区分实体的特征被称为标识特征。例如,对于学生实体,学号 可以作为其标识特征,因为通过不同的学号可以区分不同的学生实体,而性别则不能作为 其标识特征,因为通过性别“男”或“女”并不能识别出具体是哪个学生。 1.3.2 信息世界 人们对现实世界的对象进行抽象,并对其进行命名、分类,在信息世界用概念模型来 对其进行描述。信息世界涉及的主要概念如下。 1. 实体(Entity) 客观存在并可相互区别的事物被称为实体。实体可以是具体的人、事、物,也可以是 抽象的概念或联系,例如,一个职工、一个学生、一个部门、一门课、学生的一次选课、 部门的一次订货、教师与院系的工作关系(即某位教师在某院系工作)等都是实体。 2. 属性(Attribute) 实体所具有的某一特性被称为属性。一个实体可以由若干个属性来刻画。例如,学生 实体可以由学号、姓名、性别、出生年月、所在院系、入学时间等属性组成,属性组合 (201315121,张山,男,199505,计算机系,2013)即表征了一个学生。 3. 域(Domain) 属性的取值范围被称为该属性的域。例如,姓名的域为字符串集合;年龄的域为不小 于零的整数;性别的域为(男,女)。 4. 码(Key) 唯一标识实体的属性集被称为码。例如,学号是学生实体的码。 5. 实体型(Entity Type) 具有相同属性的实体必然具有共同的特征和性质。用实体名及其属性名集合来抽象和 刻画同类实体,被称为实体型。例如,学生(学号,姓名,性别,出生年月,所在院系,入 学时间)就是一个实体型