• 沒有找到結果。

大学计算机信息技术教程(第二版) - 万水书苑-出版资源网

N/A
N/A
Protected

Academic year: 2021

Share "大学计算机信息技术教程(第二版) - 万水书苑-出版资源网"

Copied!
33
0
0

加載中.... (立即查看全文)

全文

(1)

l 什么是计算机软件、计算机软件的分类。 l 操作系统的作用、常用操作系统介绍。 l 程序设计语言的介绍、组成和处理。 l 算法的定义、特征以及控制结构。 l 数据库的基本概念。 l 关系模型与关系代数。 l  SQL 语言的基本知识。 计算机系统通常由硬件系统和软件系统组成。硬件是组成计算机的物理设备,软件是完 成数据处理任务所需的各种程序的集合,两者相互依存,是构成计算机系统不可或缺的两个 部分。 计算机解决现实世界中的问题,必须先提出一个算法,然后依据算法设计出程序,如图  3­1 所示。实际上,程序是解决问题算法的具体体现。计算机执行程序中规定的各种操作,便 完成了数据处理任务。 图 3­1  计算机解决问题的过程 从计算机底层的角度来看,程序是机器指令的一个序列。从程序设计语言的角度来看, 程序就是用更容易理解和表达的语言记号对数据和数据加工过程的描述。 软件是计算机的灵魂,如同人类大脑里的思想和知识。本章先介绍计算机软件,再介绍 程序设计语言、算法、数据结构和数据库等知识。

3.1 概述

3.1.1  什么是计算机软件 按照传统的观点,计算机软件就是计算机系统上完成数据处理任务所需的各种程序的集 合。即使是专业人员,提到软件首先想到的也是计算机程序。但随着计算机科学的不断发展, 现实世界 中的问题 解决问题 体现为 存储并 执行于 程序 计算机系统 算法 输出给 用户

(2)

再把软件等同于程序就不准确了。 对于计算机软 件的概念, 目前尚没有 一个统一 的 定义。我们一 般认为计算 机软件 (Computer Software)是指计算机系统中的程序、数据和文档的集合。其中,程序当然是软件 的主体, 单独的数据或文档不能认为是软件; 数据是程序运行过程中需要处理的对象和必须使 用的一些参数(如函数、英汉字典等);文档指的是与程序开发、维护及操作有关的一些资料 (如设计报告、维护手册和使用指南等)。通常,软件(特别是商品软件和大型软件)必须有 完整、规范的文档作为支持。 软件具有与硬件不同的特点: (1)表现形式不同。硬件看得见,摸得着。而软件无形,看不见,摸不着。软件大多存 在人们的脑袋里或纸面上,它的正确与否,是好是坏,一直要到程序在机器上运行才能知道。 这就给设计、生产和管理带来许多困难。 (2)生产方式不同。软件开发是人的智力的高度发挥,不是传统意义上的硬件制造。尽 管软件开发与硬件制造之间有许多共同点,但这两种活动是根本不同的。 (3)要求不同。硬件产品允许有误差,而软件产品却不允许有误差。 (4)维护不同。硬件是要用旧用坏的,在理论上,软件是不会用旧用坏的,但实际上, 软件也会变旧变坏。因为在软件的整个生存周期中,一直处于改变(维护)状态。  3.1.2  软件分类 从应用的角度出发,通常将计算机软件分为系统软件和应用软件。  1.系统软件 系统软件(System Software)指那些为了有效使用计算机系统、给应用软件开发与运行提 供支持、能为用户管理与使用计算机提供方便的软件。一般分为两大类。 一类软件负责管理计算机系统的资源,与计算机硬件紧密地结合,使计算机系统的硬件 部件、相关的软件和数据相互协调地工作,同时支持用户很方便地使用计算机,高效率地共享 计算机系统的资源。

操作系统 (Operating System) 是这类系统软件的代表。 常见的操作系统有 Windows、 UNIX、  Linux。计算机要完成的任务虽然各不相同,但会涉及一些所有用户都共同需要的基础性操作。 例如都要通过输入设备取得数据,向输出设备送出数据;从磁盘读取数据,向磁盘写入数据; 把程序装载到内存中,启动这个程序等。这些操作也要由一系列指令来完成。因此可以把这些 指令集中起来,组合成为一个操作系统,对其他程序提供统一的支持。此外,操作系统还要负 责管理硬件、 软件和外存数据, 使得在一台计算机上运行的各个程序有条不紊地共享有限的硬 件设备,共享系统里存放的软件和数据。例如,两个程序都要向硬盘存入各自的数据,如果没 有操作系统作为一个协调管理机构来为它们划定区域的话, 怎么避免可能出现的互相破坏对方 数据的情况呢? 另一类系统软件通常称为实用程序或实用软件。它们负责提供几乎是所有用户都会需要 的各种各样的公共应用服务,例如基本输入/输出系统(BIOS)、程序设计语言的各种处理程 序、数据库管理系统(DBMS)、数据备份程序、数据恢复程序、磁盘清理程序等。  2.应用软件 应用软件是指用户为解决某些应用领域中的各类问题而开发的程序,这种应用程序五花

(3)

八门、极其丰富,很多通用的程序可以根据其功能组成不同的软件包,供用户下载使用。按照 应用软件的开发方式和适用范围,应用软件可以分为通用应用软件和定制应用软件。 (1)通用应用软件。通用应用软件就是几乎人人都需要使用的应用软件。现代社会不论 从事什么职业, 无论是学习还是娱乐, 人们所做的活动计算机几乎都有相应的应用软件来提供 服务。 通用应用软件有很多种。例如文字处理软件、信息检索软件、媒体播放软件、网络通信 软件等,如表 3­1 所示。这些软件易学易用,是当代学习生活必不可少的软件。 表 3­1  通用应用软件的主要类别和功能 类别 功能 流行软件举例 文字处理软件 文本编辑、文字处理、桌面排版等  WPS、Word 等 电子表格软件 表格制作、数值计算和统计等  Excel 等 图形图像软件 图像处理、几何图形绘制、动画制作等  AutoCAD、Photoshop、3ds max、CorelDRAW 等 媒体播放软件 播放各种数字音频和视频文件  Windows Media Player、Real Player、Winamp 等 网络通信软件 电子邮件、聊天、IP 电话等  Outlook Express、MSN、QQ、ICQ 等 演示软件 幻灯片制作等  PowerPoint 等 游戏软件 游戏和娱乐 联众、QQ 游戏等 信息检索软件 在数据库和 Internet 中查找需要的信息 万方数据、超星阅览器等 (2) 定制应用软件。 定制应用软件就是按照不同领域用户的特定应用要求而开发的软件。 如大学教务管理系统、医院门诊挂号系统、酒店客房管理系统等。这类软件专用性强,设计和 开发成本相对比较高,只有相应的机构用户需要购买,价格也比通用应用软件高。 没有配置任何软件,只包含硬件系统的计算机称为“裸机” 。安装了操作系统后的计算机, 原来的硬件并没有发生变化,但功能和运行效率得到极大的增强,一般称为“虚计算机” 。裸 机、操作系统、实用程序、应用软件之间的层次关系如图 3­2 所示。大多数情况下,用户是在 和一台安装了操作系统的计算机打交道。用户和操作系统交互的方式属于“软件用户界面”问 题。 图 3­2  计算机的软件层次关系  3.1.3  软件版权保护 提到买软件,很多人可能第一反应就是买盗版或者找朋友复制一份!如果这样做,你可

(4)

能已经触犯了法律。如同其他出版物一样,软件产品具有智力产品的特性,是受到知识产权法 律保护的对象。 版权是一种排他性的法律权利,没有得到版权持有人的许可,复制有版权的产品就触犯 了知识产权法。书籍、文章、音乐、电影、计算机软件都是有版权的产品。从法律的观点看, 复制一个软件而没有给软件的版权持有人付费, 性质和在超市不付钱就拿走商品是一样的。 这 是一种软件侵权行为。同样,未经唱片公司、电影公司的许可,就在网络上提供其产品的影音 下载服务,是一种网络侵权行为。 当然,不是所有的软件都是要收费的。公开软件就没有版权,软件作者只是把他的作品 与大家分享。Linux 操作系统原版就是一个典型例子。免费软件有版权,但在一段时间或者某 个范围里免费发行。常见的一种情况是,版权人想看看市场反应,推出一个免费的试用版。共 享软件则是用户可以免费得到的软件,有时在需要技术支持或者软件升级时要收费。 至于拥有专利的软件,用户只能在购买许可证(即购买软件的使用权,而不是软件产品 本身)后才可使用。  1. (判断题)计算机软件通常是指用于指示计算机完成特定任务的,以电子格式存储的 程序、数据和相关的文档。  2. (判断题)软件使用说明是软件产品不可缺少的一部分。  3. (单选题)如果你购买了一个商品软件,通常就意味着得到了它的( ) 。  A.修改权  B.拷贝权  C.使用权  D.版权  4. (填空题)从应用的角度出发,通常将计算机软件分为__________和__________。其 中我们经常使用的 Excel 软件是一种__________软件。  5. (填空题)计算机软件由程序、数据和文档组成,其中主体是__________。

3.2 操作系统

操作系统(Operating System,OS)是管理计算机硬件与软件资源的程序,同时也是计算 机系统的内核与基石。操作系统负责诸如管理与配置内存、决定系统资源供需的优先次序、控 制输入与输出设备、操作网络与管理文件系统等基本事务。  3.2.1  概述  1.操作系统的作用 操作系统的作用是统一调度、统一分配和统一管理所有的硬件设备和软件系统,使各个 部分之间协调一致、有条不紊地工作,使计算机系统的所有资源最大限度地发挥作用,为用户 提供方便、有效、友好的服务界面。 操作系统的作用主要体现在以下 3 个方面: (1)操作系统作为用户与计算机硬件系统之间的接口。 操作系统作为用户与计算机硬件系统之间的接口的含义是操作系统处于用户与计算机硬

(5)

件系统之间,用户通过操作系统来使用计算机系统。操作系统作为接口的示意如图 3­3 所示。 图 3­3  操作系统与软硬件的关系 (2)操作系统作为计算机系统的资源管理者。 在操作系统中,能分配给用户使用的硬件和软件设施统称为资源,包括两大类:硬件 资源和信息资源。硬件资源又分为处理器、存储器、I/O  设备等;信息资源又分为程序和 数据等。 操作系统作为计算机系统的资源管理者的重要任务之一是有序地管理计算机中的硬件、 软件资源,跟踪资源使用情况,监视资源的状态,满足用户对资源的需求,协调各程序对资源 的使用冲突;让用户简单、有效地使用资源,最大限度地实现各类资源的共享,提高资源利用 率,从而提高计算机系统的效率。 (3)操作系统为用户提供虚拟计算机。 操作系统是紧靠硬件的第一层软件,计算机上安装操作系统后,可扩展其基本功能,为 用户提供一台功能显著增强、使用更加方便、安全可靠性好、效率明显提高的机器,称为虚拟 计算机或操作系统虚机器(Virtual Machine)。 由此可知,裸机装上操作系统后,它将磁盘抽象成一组命名的文件,用户通过文件操作, 按文件名来存取信息,不必涉及诸如数据物理地址、磁盘记录命令、移动磁头臂、搜索物理块 及设备驱动等物理细节,便于使用且效率高。  2.常用操作系统简介 下面简单介绍一下影响极为广泛的操作系统。 (1)DOS 和 Windows 系列。  DOS 系统是 1981 年 Microsoft 公司为 IBM 个人计算机开发的,即 MS­DOS。它是一个单 用户单任务的操作系统,用户界面为命令行形式。在一段时间里 DOS 是个人计算机上使用最 广泛的一种操作系统,功能集中在磁盘管理和其他外设的管理方面。 

Windows 是 Microsoft 公司研发的另一个操作系统。Windows 版本的发展历史如表 3­2 所示。

表 3­2    Windows 版本的发展历史 操作系统名称 发布日期 类型  Windows 1.0  1983.10  桌面操作系统  Windows 2.0  1987.10  桌面操作系统  Windows 3.0  1990.5  桌面操作系统 用户 系统调用 操作系统 计算机 硬件 应用程序

(6)

续表 操作系统名称 发布日期 类型  Windows 3.1  1992.4  桌面操作系统  Windows NT workstation 3.5  1994.7  桌面操作系统  Windows NT 3.5x  1994.9  服务器操作系统  Windows 95  1995.8  桌面操作系统  Windows NT workstation 4.x  1996.7  桌面操作系统  Windows NT Server 4.0  1996.9  服务器操作系统  Windows 98  1998.6  桌面操作系统  Windows 2000  2000.2  桌面操作系统  Windows 2000 Server  2000.2  服务器操作系统  Windows XP  2001.10  桌面操作系统  Windows Vista  2007.1  桌面操作系统  2001 年 10 月微软推出操作系统 Windows XP。Windows XP 有家庭版、专业版、媒体中心 版、平板 PC 版和 64 位版本等多种,它有丰富的音频、视频和网络通信功能,工作更加可靠, 最大可支持 4GB 内存和两个 CPU。此外,它还增强了防病毒功能,增加了系统安全措施(如  Internet 防火墙、文件加密等)。 (2)UNIX 和 Linux。  UNIX  是使用比较广泛、影响比较大的主流操作系统之一。1969 年在  AT&T 的贝尔实验 室诞生。 UNIX 操作系统几乎全部使用 C 语言编写, 是第一个主要用高级语言编写的系统软件。 以功能强大、简洁、极其稳定、易于移植等优点,迅速得到学术界和业界的一致肯定。  Linux 是可以运行在 PC 机上的免费的 UNIX 操作系统。它是由芬兰赫尔辛基大学的学生  Linus Torvalds 在 1991 年开发的,作为自己的操作系统课程设计成果,在互联网上发布。由于  Linux 是个免费软件,源代码完全公开,加上互联网的传播作用,世界各地有相同爱好的人们 纷纷加入到后续的发展进程中。  UNIX 和 Linux 主要安装在巨型机、大型机上作为网络操作系统使用,也可用于工作站和 嵌入式系统。  3.2.2  操作系统的功能 操作系统的主要任务是有效地管理系统资源、提供友好便捷的用户接口。为实现其主要 任务,操作系统具有以下五大功能:处理机管理、存储器管理、设备管理、文件系统管理和接 口管理。下面简单介绍一下处理机管理和存储器管理。  1.处理机管理 由于存在多个程序共享系统资源的事实,必然会引发对处理机(CPU)的争夺。如何有效 地利用处理机资源, 如何在多个请求处理机的进程中选择取舍, 这都是进程调度要解决的问题。 处理机是计算机中宝贵的资源,能否提高处理机的利用率,改善系统性能,在很大程度上取决 于调度算法的好坏。因此,进程调度成为操作系统的核心。在操作系统中负责进程调度的程序 称为进程调度程序。

(7)

(1)进程调度程序的功能。在进程调度过程中,由于多个进程需要循环使用 CPU,所以 进程调度是操作系统中最频繁的工作。调度程序一般采用按时间片(如 1/20s)轮转的策略, 即每个程序都能轮流得到一个时间片的 CPU 时间,在时间片用完之后,调度程序再把 CPU 交 给下一个程序,就这样一遍遍循环下去。只要时间片结束,不管程序多么重要,正在执行的程 序就会被强行暂时终止。 (2)进程调度方式。调度方式分为非剥夺式和剥夺式(抢占式)两种。非剥夺式调度是 让正在执行的进程继续执行,直到该进程完成或发生其他事件,才移交 CPU 控制权;剥夺式 调度是当“重要”的或“系统”的进程出现时,便立即暂停正在执行的进程,将 CPU 控制权 分配给“重要的”或“系统”的进程。剥夺式调度反映了进程优先级的特征及处理紧急事件的 能力。 2.存储器管理 存储管理基本技术包括分区法、可重定位分区法、覆盖技术、交换技术和虚拟存储技术, 主要内容包括内存的分配和回收、内存的共享和保护、内存自动扩充等。现在,操作系统一般 都采用虚拟存储技术(也称为虚拟内存技术,简称虚存)进行存储管理。 (1)虚拟存储器的引入。 用户程序运行时,常常因为内存容量不足,致使程序无法运行。考虑从物理上增加内存 容量会受到机器自身的限制,而且要增加系统成本,所以应考虑从逻辑上扩充内存容量。这正 是虚拟存储技术所要解决的主要问题。 虚拟存储技术是相对于“实存”的另一种存储管理技术。它使用软件方法扩充存储器,  20 世纪 70 年代以后这一技术被广泛采用。 虚拟存储器是指一种实际上并不存在的虚拟存储器, 它能提供给用户一个比实际内存大得多的存储空间, 使用户在编制程序时可以不考虑存储空间 的限制。 在虚拟管理中,把程序访问的逻辑地址称为“虚拟地址” ,而把处理器可直接访问的主存 地址称为“实在地址” 。虚拟地址的集合称为“虚拟地址空间” ,把计算机主存称为“实在地址 空间” 。程序和数据所在的虚拟地址必须放入主存的实在地址中才能运行。因此要建立虚拟地 址和实在地址的相应关系,这种地址转换由动态地址映像机构来实现。 当把虚拟地址空间与主存地址空间分开以后,这两个地址空间的大小就独立了,也就是 说虚拟地址空间可以远大于主存的实在地址空间。 另一个相关的问题是作业运行时其整个虚拟 地址空间是否必须全部调入主存中, 如果必须的话, 那么实在地址空间仍必须大于虚拟地址空 间。但实际情况是程序中有些部分是不用的(如错误处理程序),有些程序用得很少(如程序 中启动和终止处理部分),即使经常使用的部分也可以只将最近要执行的部分装入内存,其他 部分到要用到的时候再调入内存, 而这时又可以把暂时不用的部分调出内存, 这一情况使虚拟 存储管理技术有实现的可能。 操作系统把各级存储器统一管理起来,把一个程序当前正在使用的部分放在磁盘上,就 启动执行它。 操作系统根据程序执行时的要求和内存的实际使用情况随机地对每一个程序进行 换入/换出。这样,就给用户提供了一个比真实的内存空间大得多的地址空间,这就是虚拟存 储器, 也就是用户能作为可编址内存对待的存储空间, 在这种计算机系统中虚拟地址被映像成 实在地址。 (2)虚拟存储器受到的限制。

(8)

虚拟存储器受以下两方面的限制: l 外存储器容量的限制。 l 指令中地址长度的限制。 虚拟内存在 Windows 中又称为页面文件,虚拟内存的最大容量与 CPU 的寻址能力有关。 如果 CPU 的地址线是 20 位的,则虚拟内存最多是 1MB。 常用的虚拟存储技术有分页存储管理、分段存储管理和段页式存储管理。  1. (判断题)在通用计算机系统中操作系统几乎是必不可少的。  2. (判断题) “虚拟内存”是计算机物理内存中划分出来的一部分。  3. (单选题) ( )运行在计算机系统的底层,并负责实现计算机各类资源管理的功能。  A.操作系统  B.应用软件  C.绘图软件  D.数据库系统  4. (单选题) 当一个 PowerPoint 程序运行时, 它与 Windows 操作系统之间的关系是 ( ) 。  A.前者(PowerPoint)调用后者(Windows)的功能  B.后者调用前者的功能  C.两者互相调用  D.不能互相调用,各自独立运行  5. (填空题)在运行规模大、数据多的程序时,内存往往不够使用,操作系统一般都采 用________技术进行存储管理。

3.3 程序设计语言

自然语言(如汉语、英语等)用于人与人之间的交流,而程序设计语言用于人与计算机 之间的通信。计算机是一种电子机器,其硬件使用的是二进制语言,与自然语言差别很大。程 序设计语言具有极其严格的形式定义,近乎死板。经过多年的发展,程序设计语言已经成为一 个大家族。不同场合下,我们可以讲汉语或英语,专业人员也同样可以选择合适的程序设计语 言来完成相应的软件开发任务。  3.3.1  程序设计语言简介 几十年来,程序设计语言在不断地发展,一些语言被弃用,而新的种类在不断增加。但 是机器指令仍然是操作的最终表示单位, 任何种类的程序设计语言都必须向机器语言回归。 当 然转换的过程主要是依靠各种系统来完成的,称之为语言处理软件。  1.程序设计语言分类 程序设计语言按其级别可以划分为机器语言、汇编语言和高级语言三大类。 (1)机器语言。机器语言就是 CPU 的机器指令集,是“天生”的程序设计语言。机器语 言的终极记号只有两个:二进制数字“0”和“1” 。每条机器指令的语法格式和表示的语义都 是在 CPU 设计的时候规定好的。机器语言是唯一能被 CPU 直接识别和执行的语言。

(9)

机器语言很难记忆,极难使用,而且不同系列的 CPU 具有不同的机器语言,这样程序就 无法在使用不同种类 CPU 的计算机上面运行,也就是没有可移植性。 (2)汇编语言。为了使程序设计变得容易一些,人们定义了汇编语言。主要特征是机器 指令符号化, 即用助记符的形式来表示机器指令的成分, 这就比使用二进制数的表示形式好得 多。如用 ADD 表示加法,SUB 表示减法,MOV 表示传送数据等。 (3)高级语言。所谓“高级”是指语言记号形式完全脱离机器指令,很接近人们已经习 惯的自然语言和数学语言,看上去像英语句子和算术式子。这样不但易于理解,更为重要的是 高级语言和特定的 CPU 指令集在形式上不再关联。高级语言不但和具体的计算机无关,甚至 和计算机内部的基本技术概念都无关。 程序设计语言是人和机器的信息交流,因此高级语言要围绕一组人为的规则来构造,语 法规则数量很少而且必须十分严格地定义,所以是一种形式语言。  2.常用的程序设计语言介绍 (1) C/C++语言。 C 语言是在 20 世纪 70 年代初问世的。 1978 年美国电话电报公司 (AT&T) 贝尔实验室正式发表了 C 语言。早期的 C 语言主要是用于 UNIX 系统。C 语言是一种结构化 语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C 语言的表现能力和处理 能力极强。它具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。由于  C  语言实 现了对硬件的编程操作,因此  C  语言集高级语言和低级语言的功能于一体。既可用于系统软 件的开发,也适合于应用软件的开发。此外,C 语言还具有效率高、可移植性强等特点。因此 广泛地移植到了各种类型的计算机上,从而形成了多种版本的 C 语言。 在 C 语言的基础上,1983 年又由贝尔实验室的 Bjarne  Strou­strup 推出了 C++。C++进一 步扩充和完善了 C 语言, 成为一种面向对象的程序设计语言。 C++提出了一些更为深入的概念, 它所支持的这些面向对象的概念容易将问题空间直接映射到程序空间, 为程序员提供了一种与 传统结构程序设计不同的思维方式和编程方法。C 是 C++的基础,C++语言和 C 语言在很多方 面是兼容的。因此,掌握了 C 语言,再进一步学习 C++就能以一种熟悉的语法来学习面向对 象的语言,从而达到事半功倍的目的。 (2)Java 语言。Java 是 Sun 公司 1995 推出的一种面向对象的编程语言。它是一种通过 解释方式来执行的语言,语法规则和 C++类似。同时,Java 也是一种跨平台的程序设计语言。 用 Java 语言编写的程序叫做 Applet(小应用程序),用编译器将它编译成类文件后,将它存在  WWW 页面中,并在 HTML 文档上作好相应标记,用户端只要装上 Java 的客户软件就可以在 网上直接运行 Applet。Java 非常适合于企业网络和 Internet 环境,现在已成为 Internet 中最受 欢迎、最有影响的编程语言之一。Java 有许多值得称道的优点,如简单、面向对象、分布式、 解释性、可靠、安全、结构中立性、可移植性、高性能、多线程、动态性等。Java 摒弃了 C++  中各种弊大于利的功能和许多很少用到的功能。Java 可以运行在任何微处理器上,用 Java 开 发的程序可以在网络上传输,并运行于任何客户机上。 (3)FORTRAN 语言。FORTRAN 是英文 FORmula TRANslator 的缩写,译为“公式翻译 器” ,它是世界上最早出现的计算机高级程序设计语言,广泛应用于科学和工程计算领域。  FORTRAN 语言以其特有的功能在数值、科学和工程计算领域发挥着重要作用。  FORTRAN  语言开始是为解决数学问题和科学计算而提出的,多年来的应用表明:由于  PORTRAN 本身具有标准化程度高、便于程序互换、较易优化、计算速度快等优点,因此这种

(10)

高级语言目前已广泛流行。国外几乎所有的计算机厂商都能向用户提供  FORTRAN  的编译程 序和应用程序的版本。 除了上面介绍的几种常用程序语言外,具有影响的程序语言还有 LISP 语言(适用于符号操 作和表处理,主要用于人工智能领域)、PROLOG 语言(一种逻辑式编程语言,主要用于人工智 能领域) 、Ada  语言(一种模块化语言,且易于控制并行任务和处理异常情况)、MATLAB(一 种面向向量和矩阵运算的提供数据可视化等功能的数值计算语言)等,请读者参阅相关书籍。  3.3.2  程序设计语言中的控制成分 高级语言种类千差万别,但是基本成分可以归纳为 4 种: (1)数据成分,用以描述程序所涉及的数据,如对数据类型和数据结构进行说明。 (2)运算成分,用以描述程序中所包含的运算,如算术表达式和逻辑表达式等。 (3)控制成分,用以描述程序中所包含的流程控制,如条件语句和循环语句等。 (4)传输成分,用以表达程序中数据的传输,如 I/O 语句。 下面着重介绍控制成分,另 3 种成分请参阅相关资料。 程序设计语言中控制成分的作用是提供一个基本框架,在此基本框架下,可以将数据和 对数据的运算组合成程序。3 种基本控制结构是顺序结构、条件选择结构和循环结构。  1.顺序结构 顺序结构表示操作步骤按时间顺序依次执行。如图  3­4  所示,首先执行  S1,然后再执行  S2。图 3­5 表示了由 4 个顺序执行的动作构成的烧水喝茶过程。 图 3­4  顺序结构 图 3­5  烧水喝茶流程图  2.条件选择结构 条件选择结构表示对一个条件的取值进行判断, 然后选择执行哪一个操作。 如图 3­6 所示, 当条件 P 的结果为“真”时,选择执行 S1;结果为“假”时,选择执行 S2。条件选择结构里, 往往以逻辑表达式来表示一种判断条件。在  C  语言中,if  语句是典型的条件选择结构,它的 表示形式为:  if(P) S1;  else S2;  S1 S2  起始 洗水壶 烧开水 泡茶 喝茶 结束

(11)

3.循环结构 循环结构又称为重复结构。在这种结构里,一组操作反复地执行若干次。重复执行的操 作叫循环体,通过循环控制条件的设定来控制循环体的重复执行次数。循环结构有多种形式, 这里以 while 型重复结构为例。在 C 语言中,while 结构的一般形式为:  while(P) S;  如图 3­7 所示,当 P(循环控制条件)成立时,就重复执行 S(循环体);直到 P 为假时, 结束重复操作。 图 3­6  条件选择结构 图 3­7    while 型循环结构  3.3.3  程序设计语言的处理过程 显然,除了机器语言之外,任何其他形式的程序设计语言都要经历一个翻译过程,被翻 译的对象称为源程序,结果称为目标程序。而翻译是由一些系统软件来完成的。 把用汇编语言编写的一个源程序转变为机器语言表示的目标程序所使用的翻译程序叫做 汇编程序。汇编的结果是可以直接在 CPU 上运行的机器程序。不少人习惯把汇编语言写的程 序也叫做“汇编程序” ,读者一定要把它和起翻译作用的汇编程序区别理解。 高级语言的通常处理过程是:用一个叫做编译程序的系统软件来进行翻译,把得到的机 器语言目标程序再交给另一个语言处理软件——连接程序处理, 连接上一些标准的程序段, 才 能产生完整的、可以在 CPU 上运行的机器程序。有时,可执行的目标程序还要在运行之前交 给装入程序处理,以决定最后的运行细节。 高级语言的另一种可能的翻译方式称为解释。一个叫解释程序的系统软件可以逐句地 分析源程序,随即产生对应的机器指令序列并执行它。高级语言的这种处理方式称为解释 执行。 比较这两种语言处理方法,采用编译方法时程序的执行时间效率要高得多。表面上,编 译和连接要花费“额外的”时间才能得到目标程序。但可执行的目标程序一旦产生,就可以在 磁盘上保存起来,以后每当需要,就装入内存直接执行。而采用解释方法时,没有产生目标程 序,每次执行程序都要重复地对源程序进行解释,耗费的时间要多得多。  1. (判断题)任何高级语言编写的程序都必须经过转换后才能由计算机执行。  S1  S2  真 假 假 真  S  P  P

(12)

2. (判断题)汇编语言是面向计算机指令系统的,因此汇编语言程序可以由计算机直接 执行。 3. (单选题)以下关于高级程序设计语言中数据成分的说法中,错误的是( ) 。  A.数据的名称用标识符来命名  B.数组是一组相同类型数据元素的有序集合  C.指针变量中存放的是某个数据对象的地址  D.程序员不能自己定义新的数据类型  4. (单选题)高级程序设计语言的编译程序和解释程序属于下列( )类程序。  A.语言编辑  B.程序连接  C.文本编辑  D.语言处理  5. (填空题)高级程序设计语言种类繁多,但其基本成分可归纳为数据成分、控制成分 等 4 种,其中算术表达式属于__________成分。

3.4 算法与数据结构基础

瑞士计算机科学家尼克劳斯·沃思(Niklaus Wirth)提出了“数据结构+算法=程序”这一 著名公式。数据结构就是计算机存储数据的结构,算法是来操作这些数据结构的,即各种数据 结构的设计是以算法的实现为依据的。在以前的学习中,我们知道“程序是软件的核心” ,实 际上“算法是程序的核心” 。因为要使计算机解决某个问题,首先必须针对该问题设计一个解 题步骤,然后再据此编写程序并交给计算机执行。这里所说的解题步骤就是“算法” ,采用某 种程序设计语言对问题的对象和解题步骤进行的描述就是程序。  3.4.1  算法  1.算法的基本概念 算法(Algorithm)是在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗地说, 就是计算机解题的过程。在这个过程中,无论是形成解题思路还是编写程序都是在实施某种算法。 前者是推理实现的算法,后者是操作实现的算法。一个算法应该具有以下 5 个重要的特征: (1)有穷性:算法必须在有限时间内做完,即算法必须在执行有限步骤之后结束。 (2)确定性:算法的每一步骤必须有确切的定义,不允许有模棱两可的解释和多义性。 (3)输入:一个算法有 0 个或多个输入,以刻画运算对象的初始情况,所谓 0 个输入是 指算法本身给定了初始条件。 (4)输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的 算法是毫无意义的。 (5)能行性:算法中有待实现的操作都是可执行的,即在计算机的能力范围之内,且在 有限的时间内能够完成。  2.算法表示 算法的表示一般有三种形式:自然语言、伪代码和流程图。 (1)自然语言:是指人们日常使用的语言,如汉语、英语或其他语言。 (2)伪代码:是用介于自然语言和计算机语言之间的文字和符号(包括数学符号)来描述 算法。

(13)

(3)流程图:是广泛使用的一种算法表示工具,用规定的图形符号来表示要执行的各种 操作步骤、用流线表示操作步骤的转移次序,从而描述出算法过程。因为图形符号主要是各种 不同形状的图线框,所以业界又习惯把流程图称为“框图” 。流程图也可以用来描写程序的操 作过程,所以有时也叫做程序流程图。 一个问题的解决往往可以有多种不同的算法。算法的好坏,除考虑正确性外,还应该考 虑以下因素: l 执行算法所要占用的计算机资源是否最少,包括时间资源和空间资源两个方面。 l 算法是否容易理解、是否容易调试和测试等。  3.4.2  数据结构  1.数据结构的定义 数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机 程序处理的符号的总称。 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,即数据的组织形式。 数据结构作为计算机的一门学科,主要研究和讨论以下 3 个方面的内容: (1)数据集合中各个数据元素之间所固有的逻辑关系,即数据的逻辑结构。 (2)在数据元素进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构。 (3)对各种数据结构进行的运算。 讨论以上问题的目的是为了提高数据处理的效率,所谓提高数据处理的效率是指提高数 据处理的速度和尽量节省在数据处理过程中所占用的计算机存储空间。 一般情况下,在具有相同特征的数据元素集合中,各个数据元素之间存在有某种关系(即 连续),这种关系反映了该集合中数据元素所固有的一种结构。在数据处理领域中,通常把数 据元素之间这种固有的关系简单地用前后件关系(或直接前驱与直接后继关系)来描述。  2.数据的逻辑结构 数据结构是指反映数据元素之间关系的数据元素集合的表示,更通俗地讲,数据结构是 指带有结构的数据元素的集合。所谓结构实际上就是指数据元素之间的前后件关系。 一个数据结构应该包含两方面信息:表示数据元素的信息和表示各数据元素之间的前后 件关系的信息。 数据的逻辑结构是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和 定义在此集合中的若干关系来表示。 数据的逻辑结构包括集合结构、线性结构、树型结构和图型结构 4 种,如图 3­8 所示。 图 3­8    4 种基本数据结构 (a)集合结构 (b)线性结构 (c)树型结构 (d)图型结构  H  S  L  D  A

(14)

3.数据的存储结构 数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理 结构)。 数据元素在计算机存储空间中的位置关系可能与逻辑关系不同,为了表示存放在计算机 存储空间中的各数据元素之间的逻辑关系(即前后件关系),在数据的存储结构中,不仅存放 各数据元素的信息,还需要存放各数据元素之间的前后件关系的信息。 一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、 索引等存储结构。而采用不同的存储结构,其数据处理的效率是不同的,因此,在进行数据处 理时,选择合适的存储结构是很重要的。  4.数据的运算 为数据处理的需要,需要在数据上进行各种运算。数据的运算是定义在数据的逻辑结构 上的,但运算的具体实现要在存储结构上进行。数据的各种逻辑结构有相应的各种运算,每种 逻辑结构都有一个运算的集合。下面列举几种常用的运算。 (1)检索。在数据结构里查找满足一定条件的节点。 (2)插入。往数据结构里增加新的节点。 (3)删除。把指定的节点从数据结构里去掉。 (4)更新。改变指定节点的一个或多个域的值。 (5)排序。保持线性结构的节点序列里的节点数不变,把节点按某种指定的顺序重新 排列。 例如,按节点中某个域的值由小到大对节点进行排列。 数据的运算是数据结构的一个重要方向。讨论任何一种数据结构时都离不开对该结构上 的数据运算及其实现算法的讨论。  1. (判断题)数据结构一般包括  3  个方面的内容,即数据的逻辑结构、数据的存储结构 及在这些数据上定义的运算。  2. (判断题)程序设计的核心是算法设计。  3. (单选题)一个算法应包含至少( )输出。  A.零个  B.一个  C.一个以上  D.多个  4. (单选题)抽象地反映数据元素之间的约束关系而不考虑其在计算机中的存储方式, 称为数据的( ) 。  A.存储结构  B.层次结构  C.物理结构  D.逻辑结构  5. (填空题)若求解某个问题的程序要反复多次执行,则在设计求解算法时应重点从  ________代价上考虑。

3.5 数据库设计基础

数据库技术是 20  世纪  60  年代末在文件系统基础上发展起来的数据管理技术,是计算机

(15)

科学的重要分支。经过近 40 年的发展,现在已经形成相当规模的理论体系和应用领域,不仅 应用于事务处理,而且进一步应用到了情报检索、人工智能、专家系统、计算机辅助设计等各 个领域。本节将介绍数据库的基本概念、SQL 等基础知识。  3.5.1  数据库系统的基本概念 数据库技术所研究的问题就是如何科学地组织和存储数据,如何高效地获取和处理数据。 数据库系统由数据库、 数据库管理系统、 数据库管理员、 数据库应用程序、 用户 5 个部分组成。 (1)数据库(DataBase,DB):是数据的集合,具有统一的结构形式并存放于统一的存 储介质内,是多种应用数据的集成,并可被各个应用程序共享。数据库存放数据是按数据所提 供的数据模式存放的,具有集成与共享的特点。 (2)数据库管理系统(DataBase Management System,DBMS):是一种系统软件,负责 数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,是数据库的核心。 (3)数据库管理员(DataBase Administrator,DBA):是对数据库进行规划、设计、维护、 监视等的专业管理人员。 (4)数据库应用程序:数据库应用程序是使用数据库语言开发的、能够满足数据处理需 求的应用程序。 (5)用户:用户可以通过数据库管理系统直接操纵数据库,或者通过数据库应用程序来 操纵数据库。 数据库系统的 5 个部分及其相互关系如图 3­9 所示。 图 3­9  数据库系统的组成  3.5.2  数据模型 模型是对现实世界的抽象。在数据库技术中,用模型来描述数据库的结构和语义,对现 实世界进行抽象。表示实体类型及实体之间关系的模型称为“数据模型” 。  1.数据模型的基本概念 在数据库中用数据模型来抽象、表示和处理现实世界中的数据和信息。通俗地讲,数据 模型就是现实世界的反映, 它包括把现实世界中的客观对象抽象为概念模型; 把概念模型转换 数据库管理系统 数据库 用户 用户 应用 程序 应用 程序 数据库管理员

(16)

为某一 DBMS 支持的数据模型这样两个阶段。 用户为了某种需要,需要将现实世界中的部分需求用数据库实现,这样我们所见到的是 在客观世界中划定边界的一部分环境, 它称为现实世界。 通过抽象为现实世界进行数据库级上 的刻画所构成的逻辑模型叫信息世界。在信息世界基础上致力于其在计算机物理结构上的描 述,从而形成的物理模型叫计算机世界。 数据模型所描述的内容包括数据结构、数据操作和数据约束,即数据模型的三要素。 (1)数据模型中的数据结构主要描述数据的模型、内容、性质以及数据间的联系等。数 据结构是刻画数据模型性质最重要的方面。 因此, 在数据库中人们通常按照其数据结构的类型 来命名数据模型。例如层次结构、网状结构和关系结构的数据模型分别命名为层次模型、网状 模型和关系模型。数据结构是对系统静态特性的描述。 (2)数据模型中的数据操作主要描述在相应数据结构上的操作类型与操作方式。数据库 主要有检索和更新(包括插入、删除、修改)两大类操作。 (3)数据模型中的数据约束主要描述数据结构内数据间的语法、语义联系,它们之间的 制约与依存关系,以及关系动态变化的规则保证了数据的正确性、有效性和相容性。数据模型 按不同的应用层次分成 3 种类型:概念数据模型、逻辑数据模型、物理数据模型。  2.E­R 模型 概念模型是面向现实世界的,它的出发点是有效和自然地模拟现实世界,给出数据的概 念化结构。长期以来被广泛使用的概念模型是 E­R 模型(Entity Relationship Model,实体关系 模型),它于 1976 年由 Peter Chen 首先提出。该模型将现实世界的要求转化成实体、联系、属 性等几个概念,以及它们间的两种基本联结关系,并且可以用一种图非常直观地表示出来。 (1)E­R 模型的基本概念。 ①实体:现实世界中的事物可以抽象成实体,实体是概念世界中的基本单位,它们是客 观存在的且又能相互区别的事物。由具有共同属性的实体组成的集合称为实体集。 ②属性:现实世界中的事物均有一些特性,这些特性可以用属性来表示,属性刻画了实 体的特征。一个实体往往可以有若干属性,每个属性可以有值,一个属性的取值范围称为该属 性的值域或值集。 ③码:唯一标识实体的属性(集)称为该属性的码。 ④域:属性的取值范围称为该属性的域。 ⑤实体型:具有相同属性的实体必然具有共同的特征和性质。用实体名及其属性名集合 来抽象和刻画的同类实体,称为实体型。 ⑥实体集:同型实体的集合称为实体集。 ⑦联系:在现实世界中事物间的关联称为联系。在概念世界中联系反映了实体集间的一 定关系。 两个实体集间的联系实际上是实体集间的函数关系, 这种函数关系有以下几种 (如图 3­10  所示): l 一对一的联系,简记为 1:1。如果对于实体集 A 中的每一个实体,实体集 B 中至多有 一个(也可以没有)实体与之联系,反之亦然,则称实体集 A 与实体集 B 具有一对 一联系。

(17)

图 3­10  两个实体间的函数关系 l 一对多或多对一联系,简记为 1:N(1:n)或 N:1(n:1) 。如果对于 A 中的每一个实体, 实体集 B 中有 n 个实体(n≥0)与之联系,反之,对于实体集 B 中的每一个实体, 实体集 A 中至多只有一个实体与之联系,则称实体集 A 与实体集 B 有一对多联系。 反之即为多对一联系。 l 多对多联系,简记为 M:N 或 m:n。如果对于实体集 A 中的每一个实体,实体集 B 中 有 n 个实体(n≥0)与之联系,反之,对于实体集 B 中的每一个实体,实体集 A 中 有 m 个实体(m≥0)与之联系,则称实体集 A 与实体集 B 具有多对多联系。 (2)实体、联系、属性之间的联结关系。 ①实体(集)与属性间的联结关系。实体是概念世界中的基本单位,属性附属于实体, 它本身并不构成独立单位。 一个实体可以有若干个属性, 实体以及它的所有属性构成了实体的 一个完整描述。 属性有属性域,每个属性可取属性域内的值。 实体有型与值之别,一个实体的所有属性构成了这个实体的型,相同的实体构成了实体集。 ②实体(集)与联系。实体(集)间可通过联系建立联结关系,一般而言,实体(集) 间无法建立直接关系,它只能通过联系才能建立起联结关系。 (3)E­R 模型的图示法。  E­R 模型用 E­R 图来表示。 ①实体集表示法。在  E­R  图中用矩形表示实体集,在矩形内写上该实体集的名字。如实 体集学生(student) 、课程(course)可用如图 3­11 所示来表示。 ②属性表示法。在  E­R  图中用椭圆形表示属性,在椭圆形内写上属性的名称。如学生有 姓名(Sn) 、年龄(Sa)等属性,它们可以通过如图 3­12 所示来表示。 ③联系表示法。在  E­R  图中用菱形表示联系,菱形内写上联系名。如学生与课程间有联 系 SC,可用如图 3­13 所示来表示。 图 3­11  实体集表示法 图 3­12  属性表示法 图 3­13  联系表示法 联系名 实体 2  实体 1  1  1  (a)1:1 关系 联系名 实体 2  实体 1  1  n  (a)1:n 关系 联系名 实体 2  实体 1  m  n  (a)n:m 关系 

(18)

student  SC  course 

n  m 

student  course 

Sn  Sa  Sn  Sa 

(a)实体集 student  (b)实体集 course 

student  SC  course 

④实体集(联系)与属性间的联结关系。在  E­R  图中,实体集与属性间的联系可用联结 这两个图形间的无向线段表示。 如实体集 student 有属性姓名 (Sn) 和年龄 (Sa) ; 实体集 course  有属性 Cn(课程号)和 Cname(课程名),此时它们可用如图 3­14 所示来表示。 图 3­14  实体集的属性间的联结 ⑤实体集与联系间的联结关系。在  E­R  图中实体集与联系间的联结关系可用联结这两个 图形间的无向线段表示。实体集 student 与联系 SC 间有联结关系, 实体集 course 与联系 SC 间 也有联结关系,因此它们之间可用无向线段相联,构成一个如图 3­15 所示的图。 图 3­15  实体集与属性间的联结关系 有时为了进一步刻画实体间的函数关系,还可在线段边上注明其对应的函数关系,如图  3­16 所示。 图 3­16  实体集间的关系标示图  3.关系模型 (1)关系模型数据结构。 关系模型采用二维表来表示,简称表,如表 3­3 所示。二维表由表框架及表的元组组成。 表框架由 n 个命名的属性组成,n 称为属性元数。每个属性有一个取值范围,称为值域。 表 3­3  关系模型数据结构 学号 姓名 性别 年龄  2001001  张三 男  18  2001002  李霞 女  19  2001003  王强 男  19  2001004  生紫烟 女  20

(19)

在关系模型中,实体与实体间联系的表示方法是,实体型直接用关系表表示;属性用属 性名表示;一对一联系隐含在实体对应的关系中;一对多联系隐含在实体对应的关系中;多对 多联系直接用关系表示。 二维表的特性是,二维表中元组个数是有限的——元组个数有限性;二维表中元组均不 相同——元组的唯一性; 二维表中元组的次序可以任意交换——元组的次序无关性; 二维表中 元组的分量是不可分割的基本数据项——元组分量的原子性; 二维表中属性名各不相同——属 性名唯一性;二维表中属性与次序无关,可任意交换——属性的次序无关性;二维表属性的分 量具有与该属性相同的值域——分量值域的统一性。 关系模型的优点是,由于建立在严格数学概念的基础上,它的概念单一,数据结构简单、 清晰,用户易懂易用;实体和各类联系都用关系表示;对数据的检索结果也是关系;关系模型 的存取路径对用户透明;具有更高的数据独立性,更好的安全保密性;简化了程序员的工作。 关系模型的缺点是,存取路径对用户透明导致查询效率往往不如非关系模型,关系数据 模型为提高性能,必须对用户的查询请求进行优化,增加了开发数据库管理系统的难度。 (2)关系操纵。 关系操纵包括数据查询、数据删除、数据插入和数据修改。 对一个关系内查询的基本单位是元组分量,其基本过程是先定位后操作;对多个关系间 的数据查询则可分为 3 步,即将多个关系合并成一个关系,对合并后的一个关系作定位,最后 进行操作。 数据删除可分为一个关系内的元组选择与和系中元组删除两个基本操作。 数据插入是指在指定关系中插入一个或多个元组。 数据的修改是在一个关系中修改指定的元组与属性。它可以分解为删除需要修改的元组 和插入修改后的元组两个更基本的操作。 关系模型的基本操作包括关系的属性指定、关系的元组选择、两个关系合并、一个或多 个关系的查询、关系中元组的插入和关系中元组的删除。 (3)关系中的数据约束。 关系中的数据约束包括实体完整性约束、参照完整性约束和用户定义的完整性约束等。 实体完整性约束要求关系主键中的属性值不能为空,这是数据库完整性的最基本要求。 参照完整性约束是关系之间相关联的基本约束,它不允许关系引用不存在的元组,即在 关系中的外键要么是所关联关系中实际存在的元组,要么就为空值。 用户定义的完整性约束针对某一具体关系数据库的约束条件,它反映某一具体应用所涉 及的数据必须满足的语义要求。 任何关系数据库系统都应该支持实体完整性和参照完整性。 关系模型的二维表简单易懂,用户只需要用简单的查询语句就可以对数据进行操作,并 不涉及存储结构、访问技术等细节。关系模型是数学化的模型,要用到集合论、离散数学等知 识。SQL 语言是关系数据库的代表性语言,现在已经成为关系数据库的标准查询语言。  3.5.3  关系代数 关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式,它用对关 系的运算来表达查询。 任何一种运算都是将一定的运算符作用于一定的运算对象上, 得到预期

(20)

的运算结果,所以运算对象、运算符和运算结果是运算的三大要素。 关系代数操作简称为关系操作。它们可分为两类:一类是传统的集合操作,另一类是关 系专用的操作。关系操作的结果仍为关系,可以再参与其他关系操作,构成关系代数表达式, 由此描述对关系的各种复杂操作。  1.传统的集合操作 传统的集合运算是二目运算,包括并、交、差、广义笛卡尔积四种运算。 (1)并(Union) 。设关系 R 和关系 S 具有相同的目 n(即两个关系都有 n 个属性),且相 应的属性取自同一个域,则关系 R 与关系 S 的并由属于 R 或属于 S 的元组组成。其结果关系 仍为 n 目关系,记作:  R∪S={t|t∈R∨t∈S}  (2)差(Difference) 。设关系 R 和关系 S 具有相同的目 n, 且相应的属性取自同一个域, 则关系 R 与关系 S 的差由属于 R 而不属于 S 的所有元组组成。其结果关系仍为 n 目关系。 记作: R­S={t|t∈R∧t∉ S} 

(3)交(Intersection  Referential  Integrity) 。设关系 R 和关系 S 具有相同的目 n,且相应 的属性取自同一个域,则关系 R 与关系 S 的交由既属于 R 又属于 S 的元组组成。其结果关系 仍为 n 目关系,记作:  R∩S={t|t∈R∧t∈S}  (4)广义笛卡尔积(Extended Cartesian Product) 。两个分别为 n 目和 m 目的关系 R 和 S  的广义笛卡尔积是一个(n+m)列的元组的集合。元组的前 n 列是关系 R 的一个元组,后 m 列是 关系 S 的一个元组。若 R 有 k1 个元组,S 有 k2 个元组,则关系 R 和关系 S 的广义笛卡尔积 有 k1×k2 个元组,如图 3­17 所示。 行标号 行号  row1  1  row2  2  row3  3  R  S  行标号 行号 列标号 列号  row1  1  arrangel  1  row1  1  arrange2  2  row2  2  arrangel  1  row2  2  arrange2  2  row3  3  arrangel  1  row3  3  arrange2  2  R×S  图 3­17  广义笛卡尔积操作示例 列标号 列号  arrangel  1  arrange2  2

(21)

2.专门的关系操作

专门的关系运算包括选择、投影、连接、除等。 为了叙述上的方便,我们先引入几个记号。

l 设关系模式为 R(A1, A2, …, An)。它的一个关系设为 R。t∈R 表示 t 是 R 的一个元组。 

t[Ai]则表示元组 t 中相应于属性 Ai 的一个分量。

l 若 A={Ai1, Ai2, …, Aik},其中 Ai1, Ai2, …, Aik 是 A1, A2, …, An 中的一部分,则 A 称为

属性列或域列。A 则表示{A1,  A2,  …,  An}中去掉{Ai1,  Ai2,  …,  Aik}后剩余的属性组。 

t[A]=(t[Ai1], t[Ai2], …, t[Aik])表示元组 t 在属性列 A 上诸分量的集合。

l  R 为 n 目关系, S 为 m 目关系。 设 tr∈R, ts∈S, 则 » t t r s 称为元组的连接 (Concatenation)。 它是一个(n+m)列的元组,前 n 个分量为 R 中的一个 n 元组,后 m 个分量为 S 中的 一个 m 元组。 l 给定一个关系 R(X,Z),X 和 Z 为属性组。我们定义,当 t[X]=x 时,x 在 R 中的象集 (Images Set)为:  Zx={t[Z]|t∈R,t[X]=x}  它表示 R 中属性组 X 上值为 x 的诸元组在 Z 上分量的集合。 (1)选择(Selection) 。选择又称为限制(Restriction)。它是在关系 R 中选择满足给定条 件的诸元组,记作:  σF(R) = {t|t∈R∧F(t)='真'}  其中 F 表示选择条件,它是一个逻辑表达式,取逻辑值“真”或“假” 。 逻辑表达式 F 的基本形式为:  X1 θ Y1 [ φ X2 θ Y2 ]  θ  表示比较运算符,它可以是>、≥、<、≤、=或≠。X1、Y1 等是属性名或常量或简单函 数。属性名也可以用它的序号来代替。φ 表示逻辑运算符,它可以是-、∧或∨。[ ]表示任选 项,即[ ]中的部分可以要也可以不要,...表示上述格式可以重复下去。 因此选择运算实际上是从关系 R 中选取使逻辑表达式 F 为真的元组。这是从行的角度进 行的运算。 (2)投影(Projection) 。关系 R 上的投影是从 R 中选择出若干属性列组成新的关系,记作:  ΠA(R) = { t[A] | t∈R }  其中 A 为 R 中的属性列。 (3)连接(Join) 。连接包括 θ 连接、自然连接、外连接、半连接。它是从两个关系的笛 卡尔积中选取属性间满足一定条件的元组。 连接运算从 R 和 S 的笛卡尔积 R×S 中选取(R 关系)在 A 属性组上的值与(S 关系)在  B 属性组上的值满足比较关系 θ 的元组。 连接运算中有两种最为重要也最为常用的连接,一种是等值连接(equi­join),另一种是 自然连接(Natural join)。  θ 为“=”的连接运算称为等值连接。它是从关系 R 与 S 的笛卡尔积中选取 A、B 属性值

(22)

D  E  4  5  6  4  相等的那些元组。θ 连接示例如图 3­18 所示。  A  B  C  1  2  3  4  5  6  7  8  9  R  S  R        S  2<1  图 3­18  θ 连接示例 自然连接(Natural join)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须 是相同的属性组,并且要在结果中把重复的属性去掉。自然连接示例如图 3­19 所示。  R1  R2  学生姓名 奖励等级 奖学金 张雷  2  王宁  1  周光明  1  李霞霞  3  R1      R2  图 3­19  自然连接示例 一般的连接操作是从行的角度进行运算,但自然连接还需要取消了重复列,所以是同时 从行和列的角度进行运算。 (4)除(Division) 。给定关系 R(X,Y)和 S(Y,Z),其中 X、Y、Z 为属性组。R 中的 Y 与  S  中的 Y  可以有不同的属性名,但必须出自相同的域集。R  与 S  的除运算得到一个新的关系  P(X),P 是 R 中满足下列条件的元组在 X 属性列上的投影:元组在 X 上分量值 x 的象集 Yx  包含 S 在 Y 上投影的集合。除法操作的示例如图 3­20 所示。  3.5.4  SQL 概述  SQL 是结构化查询语言(Structure Query Language)的英文缩写,它是一种基于关系运算 理论的数据库语言。由于 SQL 所具有的特点,目前关系数据库系统大都采用 SQL 语言,使其 成为一种通用的国际标准数据库语言。  SQL  是非过程化语言,所谓非过程化语言是指用户只需了解数据的逻辑模式,不必关心 数据的物理存储细节,用户只要指出“做什么” ,而无须指出“怎么做” ,从而免除了用户描述 操作过程的麻烦。由于 SQL 具有功能丰富、语言简洁、使用灵活等优点,因而受到广泛的欢 学生姓名 奖励等级 张雷  2  王宁  1  周光明  1  李霞霞  3  奖励等级 奖学金  1  3000  2  2000  3  1000  4  500  A  B  C  D  E  1  2  3  4  5  1  2  3  6  4  4  5  6  6  4

(23)

课程号 课程名  W001  英语  W002  日语  W003  德语 学号 姓名  C005  张雷  A041  周光明 迎。众多的数据库产品的厂家纷纷推出了支持 SQL 的软件,并很快得到了应用和推广。目前, 无论是哪一种数据库管理系统大都采用 SQL 作为共同的数据库存取语言和标准接口, 如 DB2、  Oracle、SQL Server、Access 等。 学号 姓名 课程号 课程名  C005  张雷  W001  英语  C005  张雷  W002  日语  C005  张雷  W003  德语  C008  王宁  W001  英语  C008  王宁  W003  德语  R098  钱欣  W001  英语  A041  周光明  W002  日语  A041  周光明  W003  德语  M038  李霞霞  W001  英语  A041  周光明  W001  英语  R:学生-外语课程选修表  S:外语课程开设表 R÷S:选修全部外语课程学生表 图 3­20  除法操作的示例  1.常用的 SQL 命令  SQL  语言包含  9  个命令动词,分别用于数据定义、数据查询、数据操纵、数据控制,如 表 3­4 所示。 表 3­4  SQL 语言的功能及常用命令  SQL 功能 命令动词

数据定义  CREATE    DROP    ALTER 

数据查询  SELECT 

数据操纵  INSERT    UPDATE    DELETE  数据控制  GRANT  REVOTE  本节中只讲解数据定义、数据查询、数据操纵功能的使用,其他请参见 SQL 语言工具书。 在 SQL 语言的语法格式中,< >表示必选项,[ ]表示可选项。所有标点符号均应为半角。 每个 SQL 语句以分号(;)结束。  2.SQL 的数据定义  SQL  的数据定义语言具有创建表(Table)结构、修改表结构、删除表、建立与删除索引 等功能,如表 3­5 所示。

(24)

表 3­5  SQL 的数据定义语言  SQL 语句 功能  CREATE TABLE  创建表结构  ALTER TABLE  修改表结构:在已有的表中添加新字段或限制条件  DROP  删除表,或从字段或字段组中删除一项索引  CREATE INDEX  创建字段或字段组的索引  SQL 语言用 CREATE TABLE 语句创建表,其语法格式如下:  CREATE TABLE <表名> (<字段名 1> <数据类型> [完整性约束条件]  [,<字段名 2> <数据类型>[完整性约束条件]…]);  说明: (1)表名:所创建表的名称。 (2)表中定义字段的每一语句之间用逗号(,)隔开,最后一个语句不用逗号。  SQL 语言中的数据类型如表 3­6 所示(Access 2000 适用,在其他数据库软件中会有差别, 请查阅相应的数据库软件使用指南)。 表 3­6  SQL 语言中的数据类型 数据类型 说明  Integer 或 Long  长整型  Single  单精度型  Double 或 Float  双精度型  Date,datetime  日期型  Currency  货币型  Text(n)、char(n)、String(n)  文本型,n 为字段大小  Logical  是/否类型  Memo  备注型  OLEObject  OLE 对象类型 (3)完整性约束条件,指输入该字段值必须要遵守的规则,如设置字段不能为空或设置 年龄字段值必须在 16~25 之间等。  3.SQL 的数据查询 建立数据库的主要目的是进行数据库查询,SQL 语言用 SELECT 语句实现数据库查询, 其语法格式如下:  SELECT [ALL|DISTINCT] <目标字段表达式> [,<目标字段表达式>]  FROM <表名>[,<表名>]…  [WHERE <条件表达式 1>]  [GROUP BY <字段名 1> [HAVING<条件表达式 2>]]  [ORDER BY <字段名 2> [ASC|DESC]];  SELECT 语句的含义是:根据 WHERE 子句的条件表达式,从 FROM 子句指定的表中筛

(25)

选符合条件的记录,按 SELECT 子句中列出的目标字段表达式输出结果。  4.SQL 的数据操纵 数据库中的数据不是一成不变的,而是每时每刻都在发生着变化。例如,在某网站中, 每当有新用户登录网站进行注册时, 都需要将新用户的注册数据插入到 “用户注册数据” 表中, 或当已注册的用户的联系方式变了,我们需要对已存在的数据进行修改(或称为更新)等。这 些使数据表中的数据发生改变的操作称为数据操纵。SQL  语言中数据操纵包括插入数据、更 新数据和删除数据 3 条语句。 (1)插入数据。插入数据的语法格式如下:  INSERT INTO <表名> [(<字段 1>[,<字段 2>,…])  VALUES (<常量 1>[,<常量 2>],…)  功能:INSERT 语句用于将新记录插入指定表中。 (2)更新数据。更新数据的语法格式如下:  UPDATE <表名>  SET <字段 1>=<表达式 1>[,<字段 2>=<表达式 2>],…  [WHERE <条件>];  功能:UPDATE  语句用于修改指定表中满足 WHERE  子句条件的记录。特别注意,如果 省略 WHERE 子句,将更新数据表内的全部记录。 (3)删除数据。删除数据的语法格式如下:  DELETE FROM <表名> [WHERE <条件>];  功能:DELETE  语句用于从指定表中删除满足  WHERE  子句条件的记录。特别注意,如 果省略 WHERE 子句,将删除数据表内的全部记录。  5.SQL 的视图 视图是 DBMS 所提供的一种由用户观察数据库中数据的重要机制。视图可由基本表或其 他视图导出。它与基本表不同,视图只是一个虚表,在数据字典中保留其逻辑定义,而不作为 一个表实际存储数据。 定义视图可用 CREATE VIEW 语句实现,其一般形式为:  CREATE VIEW <视图名>[([属性名 1][,<属性名 2>]…)]  AS <SELECT  语句>[WITH CHECK OPTION]  CREATE VIEW 语句的功能仅是定义一个视图, 该语句执行的结果是将有关视图的定义存 储在数据字典中,只有对视图进行操作时才根据定义从基本表中形成实际数据供用户使用。 视图定义后,对于视图的查询(SELECT)操作与基本表的查询相同,即对基本表的各种 查询形式对视图同样有效。因为视图是一个“虚表” ,它并不存储数据,因而对于视图的修改 有很多限制。  3.5.5  数据库的设计与管理 数据库已广泛应用于各类应用系统中,如办公自动化系统、管理信息系统、决策支持系 统等。实际上,数据库已成为现代信息技术的三大核心技术之一,数据库设计得好坏直接影响 整个应用系统的效率和质量。

(26)

需求分析 概念设计 逻辑设计 物理设计 需求说明书 概念数据模型 逻辑数据模型 数据库内模型  DBMS 模型  DBMS 条件 硬件、OS 支持  1.数据库设计概述 数据库设计是在一个给定的应用环境里构造最优的数据库模式,建立数据库及其应用系 统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。在数据库 领域内,常常将使用数据库的各类系统称为数据库应用系统。 数据库是信息系统的核心和基础。数据库可以把信息系统中大量的数据按照一定的模型 组织起来,提供存储、维护、检索数据的功能,这样信息系统的使用者就可以方便、及时、准 确地从数据库中获得所需的信息。数据库设计是信息系统开发和建设的重要组成部分。 数据库设计有两种方法:一种方法是以信息需求为主,兼顾处理需求,称为面向数据的 方法;另一种方法是以处理需求为主,兼顾信息需求,称为面向过程的方法。 数据库设计目前主要采用生命周期法,即将整个数据库应用系统的开发分解成目标独立 的需求分析、概念设计、逻辑设计、物理设计、编码、测试、运行、进一步修改等阶段,如图  3­21 所示。 图 3­21  数据库设计的 4 个主要阶段 数据库的设计人员应该具备数据库的基本知识、数据库设计技术、计算机科学的基础知 识、程序设计的方法和技巧、软件工程的原理和方法、相关应用领域的知识。 数据库设计过程主要有以下 6 个阶段: (1)需求分析阶段:综合各个用户的应用需求。 (2)概念结构设计阶段:形成独立于机器特点,独立于各个  DBMS  产品的概念模式 (E­R 图)。 (3)逻辑结构设计阶段:首先将 E­R 图转换成具体数据库产品支持的数据模型,如关系 模型,形成数据库逻辑模式;然后根据用户处理的要求、安全性的考虑,在基本表的基础上再 建立必要的视图,形成数据的外模式。 (4) 数据库物理设计阶段: 根据 DBMS 特点和处理的需要进行物理存储安排, 建立索引, 形成数据库内模式。 (5)数据库实施阶段:运用 DBMS 提供的数据语言、工具及宿主语言,根据逻辑设计和 物理设计的结果,建立数据库、编制与调试应用程序、组织数据入库并进行调试运行。

(27)

(6)数据库运行和维护阶段:数据库应用系统经过调试运行后即可投入正式运行。 设计一个完善的数据库应用系统往往是上述 6 个阶段的不断反复。  2.数据库设计的需求分析 (1)需求分析任务。需求分析阶段的任务是通过详细调查现实世界要处理的对象(组织、 部门、企业等),充分了解原系统(手工系统或计算机系统)的工作概况,明确用户的各种需 求,在此基础上确定新系统的功能。新系统必须充分考虑今后可能的扩充和改变,不能仅仅按 当前应用需求来设计数据库。 需求分析的重点是调查、收集与分析用户在数据管理中的信息要求、处理要求、安全性 与完整性要求。 信息是指用户需要从数据库中获得信息的内容与性质, 由用户的信息要求可以 导出数据要求,即在数据库中需要存储哪些数据。处理要求是指用户对处理功能的要求、对处 理响应时间的要求、对处理方式的要求。安全性与完整性要求是为了很好地完成调查的任务, 设计人员必须不断地与用户交流, 与用户达成共识, 以便逐步确定用户的实际安全性与完整性 要求,然后通过分析来准确表达这些需求。 新系统的功能必须能够满足用户的信息要求、处理要求、安全性与完整性要求。 (2)需求分析步骤。进行需求分析首先是调查清楚用户的实际需求,与用户达成共识。 调查用户需求的步骤如下: ①调查组织机构情况。包括了解组织部门的组成情况、职责等。 ②调查各部门的业务活动情况。包括各个部门输入和使用什么数据、如何加工处理这些 数据、输出什么信息、输出到什么部门、输出结果的格式是什么。 ③在熟悉业务活动的基础上,协助用户明确对新系统的各种要求。包括信息要求、处理 要求、完全性与完整性要求。 ④对前面调查的结果进行初步分析。确定新系统的边界;确定哪些功能由计算机完成或 将来准备让计算机完成、哪些活动由人工完成。由计算机完成的功能就是新系统应该实现的 功能。 (3)数据字典。数据字典是各类数据描述的集合,是进行详细的数据收集和数据分析所 获得的主要结果。数据字典在数据库设计中占有很重要的地位。数据字典通常包括数据项、数 据结构、数据流、数据存储和处理过程 5 个部分。数据项是数据的最小组成单位,若干个数据 项可以组成一个数据结构。 数据字典通过数据项和数据结构的定义来描述数据流、 数据存储的 逻辑内容。 数据项是不可再分的数据单位;数据结构反映了数据之间的组合关系,一个数据结构可 以由若干个数据项组成, 也可以由若干个数据结构组成, 或由若干个数据项和数据结构混合组 成;数据流是数据结构在系统内传输的路径,数据流来源是说明该数据流来自哪个过程,数据 流去向是说明该数据流将到哪个过程去,平均流量是指在单位时间(每天、每周、每月等)里 的传输次数, 高峰期流量则是指在高峰时期的数据流量; 数据存储是数据结构停留或保存的地 方,也是数据流的来源和去向之一;处理过程的具体处理逻辑一般用判定表或判定树来描述, 数据字典中指需要描述处理过程的说明性信息。  3.数据库概念设计 数据库概念设计的目的是分析数据间内在语义的关联,在此基础上建立一个数据的抽象 模型。可以采用集中式模式设计法和视图集成设计法进行数据库的概念设计。

參考文獻

相關文件

(三) 使用 Visual Studio 之 C# 程式語言(.Net framework 架構) ,設計 各項系統程式、使用者操作介面,以及報表。. (四) 使用 MS

2.熟 悉 Microsoft Windows Server 作 業 系 統 、 Microsoft SQL Server 資料庫伺服器及網 頁伺服器等環境。. 3.具撰寫 JAVA

請檢視您的 USB 插孔,藍色為 USB3.0 介面,白色或黑色為 USB2.0 介 面,一般 USB3.0 是可以向下支援所有 USB2.0 的裝置,但也有少部

後記:本來是不想再寫這篇了,因為今年 (2016),本市學校公文系統要放棄筆硯,轉用 Web 版 本了,從此跟 ActiveX

6 《中論·觀因緣品》,《佛藏要籍選刊》第 9 冊,上海古籍出版社 1994 年版,第 1

 檢核表中的相關項度包含:主動工作、準時上下 班、不任意請假、工作專注、遵循操作程序、承 受壓力、接受工作變異等 7 項。對照職重系統來 看,主動工作可由表

最後特別提出說明,本研究用戶端作業系統為 Win 2000 Professional,伺服 器端作業系統為 Windows 2000 Server 並啟動 Active Directory

[r]