计算机三级数据库技术

标红为重点,是我刷题库刷到的知识点。

B站: 计算机三级数据库技术_哔哩哔哩_bilibili 该系列视频有部分内容有误

CSDN: 数据库的部分依赖、完全依赖、传递依赖

CSDN:  数据库设计5-逻辑结构设计

一、考试内容及要求

  1. 掌握数据库技术的基本概念、原理、方法和技术。

  1. 能够使用SQL语言实现数据库操作。

  1. 具备数据库系统安装、配置及数据库管理与为维护的基本技能。

  1. 掌握数据库管理与维护的基本方法。

  1. 掌握数据库性能优化的基本方法。

  1. 了解数据库应用系统的生命周期及其设计、开发过程。

  1. 熟悉常用的数据库管理和开发工具,具备用指定的工具开发简单数据库应用系统的能力。

  1. 了解数据库技术的最新发展。

二、考试系统使用说明

## 题型及内容 范围预测

  1. 数据库应用系统分析及规划(选择题)

  1. 数据库设计及实现(选择题和应用题)

  1. 数据库存储技术(选择题, 应用题,设计与应用题)

  1. 数据库编程技术(设计与应用题)

  1. 事务管理(选择题、应用题、设计与应用题)

  1. 数据库管理与维护(选择题、应用题)

  1. 数据库技术的发展及新技术(选择题、应用题)

## 考试形式及考试时间

  1. 考试形式: 无纸化上机考试。

  1. 考试时间: 120分钟。

  1. 考试时间由系统自动进行计时,提前5分钟自动报警提醒考生。

  1. 考试剩余时间为0时,系统自动交卷。

## 考试系统使用说明

1、PC机

2、软件环境

考试软件系统

操作系统:中文Windows7或以上

应用软件:SQL Server 2008

## 分值

满分100分

选择题40分(30个小题)

应用题30分(10个小题)

评分标准:多个空的时候需要于顿号隔开,填写正确的答案

设计与应用题(3个大题)

三、数据库应用系统开发方法

第一节 数据库的基本概念

  • 1.数据

  • 数据(Data)是数据库中存储的基本对象。

  • 定义: 描述事物的符号序列

  • 数据的种类:数字、文字、图形、图像声音及其他特殊符号。

计算机中的数据分为两部分:

临时性数据: 指放在内存里的数据。在电脑关机,断电或超时后会丢失的数据。

持久性数据:存储在数据库、磁盘或磁带中的信息

数据有型(Type)与值(Value)之分:

型: 数据表示的类型,如整型、字符型等。

值:给出了符合给定型的值。

  • 2.数据库

  • 数据库-----Datebase,简称DB

  • 数据的集合,具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享。

  • 按数据所提供的数据模式存放的。

  • 3.数据库系统

  • 数据库系统——Database System,简称DBS

  • ​ 指在计算机系统中引入数据库和数据库管理系统(DBMS)后的完整系统

  • ​ 在不引起混淆的前提下常常把数据库系统简称为数据库

  • ​ 实现有组织的、动态的存储大量相关数据,提供数据处理和资源共享服务

  • 组成:

  • 数据库(数据)

  • 数据库管理系统(软件)

  • 数据库管理人员(人员)

  • 硬件平台:计算机和网络

  • 软件平台:操作系统、数据库系统开发工具、接口软件

  • 4.数据库应用系统

  • 数据库应用系统----Database Application System,简称DBAS

  • 组成: 数据库系统+应用软件 + 应用界面

第二节 软件工程与数据库技术

  • 1.软件工程

  • 软件工程是用工程、科学和数学的原则与方法来开发、维护计算机软件的有关技术和管理方法

  • 软件工程由方法、工具和过程三部分组成------软件工程的三要素。

  • 2.软件生存周期

  • 一般来说,软件产品从定义开始,经过开发,使用与维护,直到最后退役的全过程称为软件生存周期。

  • 3.数据库工程:

  • 数据库应用系统的开发是一项软件工程,但又有自己的特点,所有特称为"数据库工程"。数据库工程按内容可分成两部分,一部分是数据库设计,一部分是相应的应用的设计与实现。

  • 数据库应用系统的设计开发必须由软件过程模型作为指导。

  • 典型的软件开发模型由:瀑布模型,快速原型模型,螺旋模型。

第三节 DBAS生命周期模型

  • 参照软件工程中软件开发瀑布模型原理,DBAS的生命周期由项目规划、需求分析、系统设计、实现与部署、运行管理与维护等5个基本活动组成

  • 根据DBAS的软件组成和各自功能,分为数据组织与存储设计、数据访问与处理设计、应用设计三条设计主线,分别用于设计数据库、数据库事物和应用程序

  • 根据数据库系统三级模式结构,DBAS设计阶段分为概念设计、逻辑设计、物理设计三个步骤,每一步设计内容涵盖了三条设计主线。

  1. 规划与分析

  • DABAS生命周期的第一步,目标是面向实际应用和需求,确定整个数据库应用系统的目标和任务,从技术、操作和经济三个方面进行可行性分析,并制定合理的项目开发计划。

  • 规划与分析的主要内容:

  • 系统规划与定义:任务陈述、确定任务目标、确定范围和边界、确定用户试图

  • 可行性分析:技术、经济、操作可行性及开发方案选择

  • 项目规划: 项目团队、环境、活动、成本预算、进度计划

  1. 需求分析

  • 准确了解与分析用户需求(包括数据与处理)

  • 最困难、最耗费时间的一步

  • 需求分析过程由 需求获取、需求分析、需求描述与规划说明、需求验证等步骤组成。

  • 各种需求的主要工作:

  • 数据需求分析:描述用户需要组织的信息内容 形成数据字典

  • 功能需求分析:描述系统做什么 数据处理需求分析、业务规则需求分析

  • 性能需求分析: 描述系统应当做到什么程度 数据操作响应时间、系统吞吐量、 硬件资源等

  • 其他需求:存储需求、安全性需求、备份与恢复需求

  1. 系统设计

  • 如果需求分析阶段的任务是解决"干什么"的问题,那么系统设计阶段的任务是确定"怎么干".

  • 系统设计包括:

  • 概念设计:数据库概念模型设计、系统总体设计

  • 逻辑设计:数据库逻辑结构设计、数据库事务概要设计、应用程序概要设计

  • 物理设计:数据库物理结构设计、数据库事务详细设计、应用程序详细设计

  1. 实现与部署

  • 也称为DBAS的实施。需要根据设计结果建立数据库,编写应用程序,集成DBAS软硬件,组成完整的DBAS。

  • 包括建立数据库结构、数据加载、事物和应用程序的编码及测试,系统集成、测试与运行、系统部署。

  1. 运行管理与维护

  • 主要包括日常维护、系统监控与分析、系统性能优化调整、系统进化升级等。这些工作主要由DBA负责。(数据库管理员(Database Administrator,简称DBA))

  • DBAS生命周期模型中时间最长的阶段

第四节 应用案例

  • 1.案例概述

  • 针对商场建立一个数据库应用系统,即商场经营管理系统。该系统应实现顾客管理、商品采购入库、商品销售、财务管理、人力资源管理和查询统计等大类功能。出于篇幅,忽略财务核算、退货、发票等功能。

  • 2.案例业务功能需求以及非功能性需求

  • 会员网络查询本人积分并修改自己信息。(顾客功能需求)

  • 登记供应商及其商品的信息(商品采购功能需求)

  • 系统应能支持顾客现金支付或银行卡刷卡方式支付。(商品销售业务功能需求)

  • 对各类员工进行绩效考核,核定管理员工工资。(人力资源管理功能需求)

  • 系统能支持商场的财务业务活动,如银行业务往来,生成财务报告等。(财务管理功能需求)

  • 提供商场业务情况数据查询服务。(查询统计管理功能需求)

  • 整个系统对基本销售业务实现秒级响应。(性能需求 实时性)

  • 商场平均销售业务量约为1万笔/天; 每笔平均3条件销售细节。在线保存至少1年销售

(性能需求 数据处理)

四、需求分析

第一节 需求分析

  • 1.需求分析的概念与意义

  • 需求是指用户对软件的功能和性能的要求,就是用户希望软件能做什么事情,完成什么样的功能,达到什么性能。

  • 需求分析是在计算机系统的软件功能分配和软件设计之间起重要桥梁作用的一项软件工程活动。描述待开发的系统所要完成的功能。

  • 需求分析使系统工程师能够刻画出软件的功能和性能,指明软件和系统其他元素的接口,并建立软件必须满足的约束。

  • 需求分析的目标是深入描述软件的功能和性能,确定软件设计的约束和软件同其它系统元素的接口细节,定义软件的其它有效性需求。

  • 2.需求分析往往因为软件产品的下列特性而困难重重。

  • 软件功能复杂

  • 需求的可变性

  • 软件产品的不可见性

通常,一个计算机应用系统分析工作是在系统分析人员与用户不断交互的过程中完成的。

  • 3.需求获取的方法

  • 面谈: 系统分析员与用户方的专家和业务人员进行知识交流、与他们会谈,获取需求

  • 准备访谈

  • 计划和安排访谈日程

  • 访谈开始和结束

  • 引导访谈

  • 访谈整理工作

  • 实地观察: 实地观察用户的操作过程。对比现有的系统,思考如何采取更高效的方式。

  • 现场观察法

  • 询问法

  • 直接访问、堵截访问、电话访问、邮寄访问等。

  • 问卷调查: 若需访谈的个体太多,且需要回答容易确定的细节问题,可采取问卷调查方式。

  • 适合使用情况:

  • 需访谈的个体太多

  • 需要问答容易确定的细节问题

  • 希望有详细的结果

  • 注意事项:

  • 使用问卷表尽可能的简短

  • 估计回答问题需要时间,并在问卷表开头标注时间

  • 制定问题前,先确定你需要的答案

  • 查阅资料: 收集和查阅相关的文献资料,组织机构图、规章制度、相关文档、图表及报告等。

  • 书面需求文档

  • 现在的业务操作流程及其改进意见文档

  • 现在使用的数据表和文件及其格式,并确定数据的来源。

  • 4.需求分析的过程

  • 1.标识问题:需求分析的第一步,通过对问题和标识获得的对所有求解问题及其运行环境的理解。

  • 2.建立需求模型:目前在信息系统的需求分析中可使用结构化模型或面向对象分析模型。

  • 3.描述需求:需求、功能、信息、性能、环境、其他需求。

  • 4.确定需求:需求确认及评审。审核功能需求、数据需求、性能、数据管理及其他需求。

第二节 需求分析方法

  • 1.目前在信息系统的需求分析中可使用如下方法:

  • 结构化分析与建模方法(SAD)

  • DFD建模、IDEF建模

  • 面向对象分析与建模方法(OOA)

  • UML用例建模

  • 2.结构化分析与设计方法是一种面向数据流的传统软件开发方法,它以数据流为中心构建软件的分析模型和设计模型。结构化分析SA、结构化设计SD、结构化程序设计SP构成了完整的结构化方法。结构分析与设计方法是瀑布模型的首次实践。

  • 3.结构化分析任务

  • 建立分析模型。SA模型是描述软件需求的一组模型,主要包括 功能模型、数据模型、行为模型。

  • 编写需求规格说明书。SRS是分析阶段编写的以文字为主的文档,主要内容包括:引言、信息描述、功能描述、行为描述、质量保证、接口描述以及其他需求。

  • 结构化分析的指导思想。抽象与分解是结构化分析的主要指导思想。

  • 4.DFD需求建模方法

  • 数据流图(Data Flow Diagram,DFD):DFD建模方法的核心是数据流,从应用系统的数据流着手以图形方法刻画和表示一个具体业务系统的数据处理过程和数据流。

  • 数据流:数据流是数据在系统内传播的路径,因此由一组成分固定的数据组成。如订票单由旅客姓名、年龄、单位、身份证号、日期、目的地等数据项组成。由于数据流是流动中的数据,所以必须有流向,除了与数据存储之间的数据流不用命名外,数据流应该用名词或名词短语命名。

  • 数据源(终点) :代表系统之外的实体,可以是人、物或其他软件系统。

  • 对数据的加工(处理): 加工是对数据进行处理的单元,它接受一定的数据输入,对其进行处理,并产生输出。

  • 数据存储:表示信息的静态存储,可以代表文件、文件的一部分、数据库的元素等。

  • 5.DFD建模过程

  • 具体建模过程及步骤:

  • (1)明确目标,确定系统范围.

  • 将用户对目标系统的功能需求完整、准确、一致地描述出来。

  • (2)建立顶层DFD图

  • 说明系统边界,即系统地输入和输出数据流,顶层DFD只有一张。

  • (3)构建第一层DFD分解图

  • 中间层DFD,描述了其个过程的分解,而它的组成部分又要进一步分解。

  • (4)开发DFD层次结构图(原则:保持均匀的模型深度,按困难程度选择)

  • 底层DFD,由一些不可再分解的过程组成

  • (5) 检查确认DFD图(5条规则)

  • 父图中描述过的数据流必须在相应子图出现。

  • 一个处理至少有一个输入流和输出流

  • 一个存储必定有流入的数据流和流出的数据流。

  • 一个数据流至少有一端是处理框。

  • 表示描述的信息是全面、完整、正确和一致的。

  • 6.IDEF0需求建模方法

  • IDEF方法: ICAM DEFinition Method,由美国空军发明,从IDEF0到IDEF14(包括IDEF1X在内)共有16套方法,每套方法都是通过建模程序来获取某个特定类型的信息。

  • 最常用使用的是IDEF0~IDEF4;

  • IDEF0:描述系统功能及其相互关系;

  • IDEF1:系统信息及其数据之间联系;

  • IDEF2:系统模拟,动态建模;

  • IDEF3:过程描述及获取方法;

  • IDEF4:面向对象设计;

  • 7.UML用例建模方法

  • UML方法采用面向对象思想建模,使用用例图描述系统功能需求。用例图由系统、角色、用例三种模型元素及其之间关系构成。

五、数据库结构设计

第一节 数据库概念设计

  • 一个设计良好的数据库,在很大程度上决定了系统的成功与否。

  • 一般分为: 数据库概念设计、数据库逻辑设计、数据库物理设计

  • 概念设计是数据库设计和核心环节。通过对用户需求进行综合、归纳与抽象,形成一个独立具体DBMS的概念模型。

  • 1.数据库概念设计的目标

  • 定义和描述应用领域设计的数据范围

  • 获取信息模型

  • 描述数据的属性特征

  • 描述数据之间的关系

  • 定义和描述数据的约束

  • 说明数据的安全性要求

  • 支持用户的各种数据处理需求

  • 保证信息模型能转化成数据库的逻辑结构(即数据库模式)

  • 2概念设计的依据及过程

  • 依据:

  • 数据库概念设计以需求分析结果为依据,即需求说明书、DFD图以及在需求阶段收集到的应用利用中的各类报表等。

  • 过程:

  • (1)明确建模目标(模型覆盖范围)

  • (2)定义实体集(自底向上标识和定义实体集)

  • (3)定义联系(实体间关联关系)

  • (4)建立信息模型(构造ER模型)

  • (5)确定实体集属性(属性描述一个实体集的特征或性质)

  • (6)对信息模型进行集成与优化(检查和消除命名不一致、结构不一致等)

  • 结果:

  • 概念设计的结果是概念模型(ER)与概念设计说明书。

  • 概念设计是DB设计和核心环节。概念数据模型是对现实世界的抽象和模拟。

  • 3.概念模型设计

  • 概念设计目前采用最广泛的是ER建模方法。将现实世界抽象为具有属性的实体及联系。

  • 1976年,Peter.Chen提出E-R模型(Entity-Relationship Model),即 实体联系模型 ,用E-R图描述数据库的概念模型。

  • 观点:世界是由一组称作实体的基本对象和这些对象之间的联系构成的。

  • 与E-R模型有关的概念

  • 实体(Enity)或实例(Instance)

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

  • 如学生张三、工人李四、计算机系、数据库

  • 实体集(Entity Set)

  • 同型实体的集合称为实体集。

  • 如全体学生。

  • 属性(Attribute)

  • 实体所具有的某一特性。一个实体可以由若干个属性来刻画。每个属性的取值范围称为域。

  • 如:学生可由学号、姓名、年龄、系、年纪等组成。

  • 码(键)(key)

  • 码(键)(key)是实体集中唯一标识每一个实体的属性或属性组合。

  • 用来区别同一个实体集中的不同实体的称作主码(主键)。

  • 一个实体集中任意两个实体在主码上的取值不能相同。

  • 如: 学号是学生实体的主码。

  • 联系(Relationship)

  • 描述实体之间的相互关系

  • 如学生与老师间的授课关系,学生与学生间有班长关系。

  • 联系也可以有属性,如学生与课程之间有选课联系。每个选课联系都有一个成绩作为其属性。

  • 同类联系的集合称为联系集。

  • 实体间的联系有三类:

  • 实体之间的联系的数量,即一个实体通过一个联系集能与另一实体集相关联的实体的数目。

  • 一对一联系(1:1) 如:"系"与"系主任"(一个系只有一个系主任,一个系主任只负责管理一个系)

  • 一对多联系(1:n) 如:"系"与"学生"(一个系招收若干学生,一个学生只属于一个系)

  • 多对多联系(m:n) 如:"学生”与"课程"(一名学生可选修多门课程,每门课程可被多名学生选修)

  • E-R模型的表示:

计算机三级数据库技术_第1张图片
  • E-R图实例:

计算机三级数据库技术_第2张图片
  • 4. IDEF1X建模方法

  • IDEF1X与前面介绍的IDEF0是一个系列的建模工具。

  • IDEF0是功能建模方法

  • IDEFX是数据建模方法

  • 5.概念设计实例(商场经营管理系统)

  • 建模目标:支持顾客管理、采购与库存管理、销售管理、人力资源管理、财务管理等多项业务活动。

  • 定义实体集:顾客、会员卡、员工、收银台、销售单据、供应商、商品、采购入库单据

  • 定义联系(难点):依据语法约束定义

  • 建立信息模型

  • 确定实体属性

  • 对信息模型进行集成与优化

第二节 数据库逻辑设计

  • 1.逻辑设计的任务:

  • 将概念模型(如ER图)转换为DBMS支持的数据模型(如关系模型),并对其进行优化。

  • 2.逻辑设计的依据和阶段目标:

计算机三级数据库技术_第3张图片
  • 3.补充相关概念

  • 1.关系模型

  • 有三种主要的数据模型:层次模型、网状模型、关系模型。

  • 其中关系模型简单灵活,并由着坚实的理论基础,已成为最流行的数据模型。

  • 关系模型就是用二维表格结构来表示实体及实体之间联系的模型。

  • 关系的描述称为关系模式(Relation Schema)。关系模式由五部分组成,即它是一个五元组:R(U,D,DOM,F);

R:关系名 ,U:组成该关系的属性名集合, D:属性组U中属性所来自的域,

DOM:属性到域的映射,F:属性组U上的一组数据依赖。

由于D、DOM对模式设计的关系不大,这里吧关系模式简化为一个三元组:R,当且仅当U上的一个关系R满足F时,R称为关系模式R的一个关系。

计算机三级数据库技术_第4张图片
  • 将上述概念模型E-R图中的学生实体可以转换为如下关系模式:

  • 学生(学号, 姓名,出生日期,所在系,年级,平均成绩)

  • 关系数据库设计的核心:关系模式的设计。

  • 关系模式的设计目标:按照一定的原则从数量众多而又相互关联的数据中,构造出一组即能较好的反映现实世界,而又有良好的操作性能的关系模式。

新奥尔良法,数据库设计步骤:

需求分析-> 概念结构设计(E-R图)-> 逻辑结构设计(关系模式)->物理结构设计

  • 2.数据依赖

  • 定义: 设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称"X函数确定Y"或”Y函数依赖于X",记作X->Y。

  • 数据依赖:

  • 关系内部属性与属性之间的一种约束关系。

  • 是现实世界属性间相互联系的抽象

  • 数据的内在性质

  • 语义的体现

  • 完整性约束的表现形式

  • 限定属性的取值范围,如年龄<60

  • 定义属性间值的相互关联(主要体现于值的相互与否),这就是数据依赖。

  • 数据依赖的类型

  • 函数依赖(Functional Dependency FD)

普遍存在于生活中,这种依赖关系类似于数学中的函数y=f(x),自变量x确定之后,相应的函数值y也就唯一地确定了。

如关系:公民(身份证号,姓名,地址,工作单位)

身份证号-确定,则其地址就唯一确定,因此地址函数依赖身份证号

姓名-确定,不一定能确定地址。

  • 多值依赖(Multivalued Dependency,MD)

教师号可能多值依赖课程号,因为给定一个(课程号,参考书号)组合,可能有对应多个教师号。这是因为多个老师可以使用相同或不同地参考书上同一门课。

简单点讲,函数依赖就是唯一确定的关系,多值依赖却不能唯一确定。

  • 平凡函数依赖与非平凡函数依赖

如果X->Y,且Y不属于X,则X->Y称为非平凡函数依赖

如果X->Y,且Y属于X,则X->Y为平凡函数依赖

由于Y属于X时,一定有X->Y,平凡函数依赖必然成立,没有意义,所以一般所说的函数依赖,总是指非平凡函数依赖。

例:Sno代表学生的学号,Cno代表课程号, Grade代表成绩

在关系SC(Sno,Cno,Grade)中,

非平凡函数依赖:(Sno,Cno)->Grade

平凡函数依赖:

(Sno,Cno)-> Sno

(Sno,Cno)-> Cno

  • 完全函数依赖和部分函数依赖

设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。

例如:通过AB能得出C,但是AB单独得不出C,那么说C完全依赖于AB.

设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。

例如:通过AB能得出C,通过A也能得出C,通过B也能得出C,那么说C部分依赖于AB。

  • 传递函数依赖

设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。

例如:通过A得到B,通过B得到C,但是C得不到B,B得不到A,那么成C传递依赖于A

  • 思考题:

已知关系模式R(学生学号,课程名,学生专业号,专业名,成绩),说出下面是什么关系?

  • (学生学号,课程名,学生专业号) 成绩 (函数依赖,部分函数依赖)

  • (学生学号) 专业名 (函数依赖,传递函数依赖)

  • (学生学号,专业名) 成绩 (不是函数依赖)

  • (学生学号,课程名) 成绩 ( 完全函数依赖)

  • (课程名,专业名,成绩)(课程名,成绩) (平凡函数依赖)

  • 3.候选码、主码、外码

  • 候选码:如果某属性组的值能唯一确定整个元组的值,则成为该属性组为候选码或候选关键字。

例如: (学号,姓名,性别,年龄)

学号是关键字,(学号,姓名)不是关键字,性别不是关键字。

候选码如果有多个,可以选其中的一个作为主码(Primary Key)

  • 外码: 属性或属性组X不是关系模式R的码(既不是主码也不是候选码),但X是另一个关系模式的码,则称X 是R的外部码,也称外码(Foreign Key)

例如:在SC(Sno, Cno,Grade)中,(Sno, Cno)是候选码,Sno不是码,但Sno是关系模式S(Sno,Sdept,Sage)的码,则Sno是关系模式SC的外部码

注:Sno表示学生编号(Student number),Cno表示课程编号(Course number),Grade表示该学生在该门课程中的成绩。该模式通常用于描述学生选课和成绩信息,

  • 4.数据规范化

  • 关系数据库的设计主要是关系模式设计。关系模式设计的好直接影响到数据库设计的成败。将关系模式规范化,是设计较好关系模式的唯一途径。

  • 关系模式的规范化主要是由关系范式来完成的。

  • 关系模式的规范化:把一个第一级的关系模式分解为高一级的关系模式的过程。

  • 关系数据库的规范化理论是数据库逻辑设计的工具

  • 目的:尽量消除插入、删除异常、修改复杂,数据冗余的问题。

  • 5.范式(详解示例)

关系模式满足的约束条件称为范式(Normal Form)。关系按其规范化程度从低到高可分为5级范式,分别称为1NF、2NF、3NF(BCNF)、4NF、5NF。规范化程度较高者必是较低者的子集。一个低一级范式的关系模式,通过模式分解可以转换成若干个高一级范式的关系模式的集合,这个过程称为规范化。

  • 第一范式(1NF)

如果关系模式R中不包含多值属性(每个属性必须是不可分的数据项),则R满足第一范式(First Normal Form),记作R∈1NF 。1NF是规范化的最低要求,是关系模式要遵循的最基本的范式,不满足1NF的关系是非规范化的关系。关系模式如果仅仅满足1NF是不够的,只有对关系模式继续规范化,使之满足更高的范式,才能得到高性能的关系模式。

  • 第二范式(2NF)

如果关系模式R(U, F)∈1NF,且R中的每个非主属性完全函数依赖于R的某个候选码,则R满足第二范式(Second Normal Form),记作R∈2NF。不满足2NF的关系模式,会产生以下几个问题:插入异常、删除异常、更新异常。解决的办法是用投影分解把关系模式分解为多个关系模式。投影分解是把非主属性及决定因素分解出来构成新的关系,决定因素在原关系中保持,函数依赖关系相应分开转化(将关系模式中部分依赖的属性去掉,将部分依赖的属性单组组成一个新的模式)。

  • 第三范式(3NF)

如果关系模式R(U, F)∈2NF,且每个非主属性都不传递函数依赖于R的任何候选码,则R满足第三范式(Third Normal Form),记作R∈3NF。解决的办法同样是投影分解。3NF是一个可用的关系模式应满足的最低范式,也就是说,一个关系模式如果不满足3NF,则实际上它是不能使用的。

例:判断R(学号,姓名,年龄,所在学院,学院地点,学院电话)是否属于第三范式

分析:主码:(学号,课程名称)

非主属性:姓名,年龄,所在学院,学院地点,学院电话

存在非关键词字段"学院地点"、"学院电话"对关键字段"学号"的传递函数依赖

根据定义不属于第三范式。

  • 关系模式规范化的基本步骤:

  1. 第一范式(1NF):将表中的字段原子化,即每个字段都只包含一个单一的值。这样可以避免插入过多的重复数据,同时也方便后续的操作。

  1. 第二范式(2NF):在满足1NF的基础上,将表中所有非主键字段都完全依赖于主键。这也就是说,如果某个非主键字段只和表中的一个特定主键相关,那么这个字段就应该被移到一个新的表中。

  1. 第三范式(3NF):在满足2NF的基础上,消除表中的传递依赖。也就是说,如果某个非主键字段依赖于另一个非主键字段,那么这个字段就应该被移到另一个新表中。

  1. 巴斯-科德范式(BCNF):在满足3NF的基础上,消除表中的所有主键依赖,也就是说,一个关系模式中所有的函数依赖都是由候选键决定的,而不是由任何一个主键决定的。

  1. 第四范式(4NF):在满足BCNF的基础上,消除多值依赖。也就是说,如果一个表中某个字段有多个值,这些值应该被移到一个新表中,与这个字段相关的其他字段也一同被移到新表中。这样可以避免数据不可靠和冗余。

  1. 第五范式(5NF):在满足4NF的基础上,消除连接依赖。也就是说,如果一个表中的某个属性可以通过多个其他属性的值的组合来确定,那么这个属性应该被移到一个新表中,与这些属性相关的其他属性也一同被移到新表中。这样可以减少数据冗余和提高数据一致性。

  • 6.案例:

设关系模式R(学号、课程号、成绩,教师姓名,教师地址),规定:每个学生每学一门课只有一个成绩,每门课只有一个教师任教,每个教师只有一个地址,且教师没有同名同姓。

要求:

(1) 写出R的基本函数依赖:

(学号,课程号)->成绩, 课程号->教师姓名 ,教师姓名->教师地址

(2) 写出R的候选码:

(学号,课程号)

(3) 确定R属于第几范式,并说明理由:

因为: 课程号->教师姓名

所以: 教师姓名 部分函数依赖于 (学号,课程号)

即: R不属于2NF,R属于1NF;

(4) 若R不属于2NF,则将R分解为2NF,并说明理由;

把R分解为如下二个关系模式:

R1(学号,课程号,成绩)

R2(课程号,教师姓名,教师地址)

此时,R1的候选码为: (学号,课程号),非主属性:成绩

又因为成绩完全函数依赖于 (学号,课程号)

所以:R1属于2NF

同理,R2的候选码为:课程号,非主属性:教师姓名,教师地址

又因为 教师姓名 完全函数依赖于 课程号, 教师地址 传递函数依赖于 课程号

所以:R2属于2NF,而不属于3NF;

(5) 若R不属于3NF,则将R分解为3NF,并说明理由;

因为R1不存在非主属性对码的传递函数依赖,所以R1属于3NF.

把R2分解为如下二个关系模式:

R3 (课程名,教师姓名)

R4 (教师姓名,教师地址)

R3的候选码为: 课程号,非主属性:教师姓名

课程号--> 教师姓名 且不存在非主属性对码的传递函数依赖

R3 属于3NF

R4的候选码为:教师姓名,非主属性:教师地址

教师姓名--> 教师地址 且不存在非主属性对码的传递函数依赖

R4 属于3NF

  • 4.数据库逻辑设计的方法:

  • 1.设计逻辑结构分三步:

1.将概念结构转化为一般的关系模型

2.将转化来的关系模型向特定DBMS支持下的数据模型转换

3.对数据模型进行优化

注:如果是关系型数据库管理系统,就应将概念模型转换为关系模型,即可E-R图中的实体和联系转换为关系模型。

  • 2.数据库逻辑模型的产生

概念模型按一定规则可以转换成数据模型。这种转换的原则如下:

(1)一个实体转换成一个关系模式

计算机三级数据库技术_第5张图片

(2)一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。

若转换为一个独立的关系模式:

各实体的主码以及联系本身的属性均转换为关系的属性,每个实体的主码均是该关系的候选码。

若与一端的关系模式合并:

则在该关系模式的属性中加入另一个关系模式的主码和联系本身的属性。

计算机三级数据库技术_第6张图片

(3)一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。

若转换为一个独立的关系模式:

与该联系相连的各实体的主码以及联系本身的属性均转换为关系的属性,而关系的主码为n端实体的主码。

若与n端的关系模式合并:

联系本身的属性均换为关系的属性,在加上1端实体的主码

(4)一个m: n联系转换为一个关系模式。

与该联系相连的各实体的主码以及联系本身的属性均转换为关系的属性。而关系的主码为各实体主码的组合。

(5)三个或三个以上实体间的一个多元联系转换为一个关系模式。

与该多元联系相连的各实体的主码以及联系本身的属性均转换为关系的属性。而关系的主码 为各实体主码的组合

(6)同一实体集的实体间的联系,也可以按1:1、1:n、m:n三种情况分别处理。

第三节 数据库物理设计

  1. 物理设计概述

物理数据库设计是设计数据库的存储结构和物理实现方法。

目的:将数据的逻辑描述转换为实现技术规范,设计数据存储方案,以便提供足够好的性能并确保数据库的完整性、安全性、可靠性。

  1. 数据库的物理结构

物理设备上的存储结构与存储方法称为数据库的物理结构。

数据库中的数据以文件形式存储在外设存储介质上。

一个文件在物理上可看作是存放记录的一系列磁盘块组成的,成为物理文件。

数据库的物理结构需要解决如下问题:

文件组织、文件结构、文件存取、索引技术

  1. 索引

  • 1.索引(Index) 是数据库中独立的存储结构,其作用其提供一种无须扫描每个页面(存储表格数据的物理块)而快速访问数据页的方案。

  • 2.索引技术(Indexing)是一种快速数据访问技术。

  • 索引技术的关键:

建立记录域取值(如图书术语)到记录的物理地址(如页码)间的映射关系,即索引。

索引能提高性能,但是有代价的。

设计和创建索引时,应确保对性能的提高程度大于在存储空间和处理资源方面的代价。

  • 4.索引的分类

  • 有序索引

索引文件机制,利用索引文件(索引记录组成)实现记录域(查找码,排序域)取值到记录物理地址间的映射关系。

数据文件(主文件)和索引文件(索引记录或索引项的集合) 是有序索引技术中的两个主体,数据文件常采用顺序文件结构。

  • 散列索引

哈希(Hash)索引机制,利用散列函数实现记录域取值到记录物理地址间的直接映射关系。

  • 几种主要的有序索引:

(1) 聚集索引(索引项与数据记录排序顺序一致,索引顺序文件)和非聚集索引。一个数据文件只可建立一个聚集索引,但可建立多个非聚集索引。

(2) 稠密索引(数据文件中每个查找码都对应索引记录)和稀疏索引(部分查找码的值对应索引记录)

(3)主索引(主码属性集上建立的索引)与辅索引(非主属性上建立的索引).

(4)唯一索引(索引列不包含重复值)

(5)单层索引(线性索引,每个索引项顺序排列直接指向数据文件中的数据记录)和多层索引(大数据量文件中的采用多层树型(B,B+树)索引快速定位).

  1. 数据库的物理设计

  • 目标: 目标是得到存储空间占用少,数据访问效率高和维护代价的数据库物理模式。数据库底层物理存储与存取,与DBS所依赖的硬件环境、操作系统和DBMS密切相关。目前绝大部分DBS都是关系数据库系统。

  • 环节:数据库物理设计主要包括5个环节。

  • (1)数据库逻辑模式描述

根据数据库逻辑结构信息设计目标DBMS可支持的关系表(这里称为基本表)的模式信息,这个过程称为数据库逻辑描述。

关系模式及其视图转换成基本表和视图,利用完整性机制(如触发器)设计面向应用的业务规则。

SQL Server采用T-SQL语言。

为基本表选择合适的文件结构(堆文件,顺序文件,聚集文件、索引文件和散列文件

  • (2)文件组织与存取设计

1.基本原则:

根据应用情况将异变部分与稳定部分、存取频率较高部分与存取频率较低部分分开存 放,以提高系统性能

分析理解数据库事物访问特性:使用事物-基本表交叉引用矩阵;估计各事务执行频率;汇总

每张基本表各事物操作频率信息;根据结果设计文件结构

可以考虑将表和索引分别放在不同的磁盘上。在查询时,由于两个磁盘驱动器分别在工作, 因此可以保证物理读写速度比较快。

2.影响数据文件存储结构的因素:

存储时间、存储空间利用率、维护代价

这三个方面常常是相互矛盾的

解决办法:适当冗余、增加聚簇功能 ,必须进行权衡,选择一个折中方案。

3.什么是存取路径:

在关系数据库中,选择存储路径主要指确定如何建立索引。

对同一个关系要建立多条存取路径才能满足多用户的多种应用要求。

物理设计的第一个任务就是要确定选择那些存取方法。

4.DBMS常见存取方法 :

索引方法,目标主要是B+树索引方法

聚簇(Cluster)方法

HASH方法

5.建立索引的原则

一个(组属性经常在操作条件中出现。

一个(组属性经常在连接操作的连接条件中

一个(组)属性经常作为聚集函数的参数。

6.建立聚集索引原则

检索数据时,常以某个(组)属性作为排序、分组条件。

检索数据时,常以某个(组)属性作为索引限制条件,并返回大量数据。

表中某个(组)的值重复性较大

  • (3)数据分布设计

1.不同类型数据的物理分布

将应用数据(基础表)、索引、日志、数据库备份数据等合理安排在不同介质中。

2.应用数据的划分与分布

根据数据的使用特征划分(频繁使用分区和非频繁使用分区)

根据时间、地点划分(时间或地点相同的属于同一分区)

分布式数据库系统(DDBS)中的数据划分(水平划分和垂直划分)

派生属性数据分布(增加派生列或不定义派生属性)

关系模式的去规范化(降低规范化提高查询效率)

3.水平划分

将基本表划分为多张具有相同属性、结构完全相同的子表、子表包含的元组是基本表中元组的子集。

例如:对商品按照商品的生产年份进行划分就属于水平划分。

4.垂直划分

将基本表划分为多张子表.每张子表包含的属性是原基本表的子集。

例如,商品表(商品编号、品号、单价、库存量、销售单价、备注)

可垂直划分为两张子表:

商品表(商品编号、品名、销售单价)

商品表(商品编号、单价、库存量、备注)

  • (4)确定系统配置

DBMS产品一般都提供了一些存储分配参数

同时使用数据库的用户数

同时打开的数据库对象数

使用的缓冲区长度、个数

时间片大小

数据库的大小

装填因子

锁的数目

需要根据应用环境确定这些参数值

系统都为这些变量赋予了合理的缺省值。

但不一定适合每一种应用环境

根据具体情况确定这些参数值以使系统性能最优。

  • (5)物理模式评估

对数据库物理设计结果 从存取时间、存储空间、维护代价等方面进行评估,重点是时间和空间效率

如果评价结果满足原设计要求则可进入到物理实施阶段,否则,就需要重新设计和修改结构,有时甚至要返回逻辑设计阶段修改数据模型

六、数据库应用系统功能设计与实施

DBAS功能设计包括应用软件中的数据库事务设计和应用程序设计

功能设计过程一般被划分为总体设计、概要设计和详细设计。而具体到数据库事务设计部分,又可分成事务概要设计和事务详细设计。

完成系统设计工作之后,就进入系统实现与部署阶段.

第一节 软件体系结构与设计过程

  1. 软件体系结构与设计过程

  • 软件体系结构

  1. 又称为软件架构,软件体系结构={构件,连接件,约束}

  1. 软件体系结构是软件系统中最本质的东西.良好的体系结构是普适,高效和稳定的.

  1. 软件体系结构有多种风格和类型,如分层体系结构,模型视图-控制器(MVC)体系结构,客户端/服务器体系结构等.

  • 软件设计过程

  • 软件开发由设计,实现,测试三个环节组成,设计又包含概要设计和详细设计.

  • 概要设计的任务是进行软件总体结构图,可采用层次结构图建立软件总体结构图.详细设计的任务是进行数据设计、过程设计及人机界面设计

  • 设计原则:模块化、信息隐藏、抽象与逐步求精。

  • 软件设计可选用结构化设计方法、面向对象设计方法或面向数据设计方法。

第二节 DBAS总体设计

DBAS总体设计的任务是确定系统总体框架。

主要内容包括:

  • DBAS体系结构设计;

  • 将系统从功能、层次/结构、地理分布等角度进行分解,划分为多个子系统,定义各个系统功能;设计系统的全局控制,明确各子系统间的交互和接口关系。

  • 两种常见的DBAS体系结构:

客户端/服务器体系结构(C/S)

浏览器/服务器体系结构(B/S)

  • 软件体系结构设计;

  • DBAS软件包括操作系统、数据库管理系统、开发环境、中间件、应用软件(数据库事务和应用程序)

  • 从需求分析出分解成各个子系统,分配相应功能,定义相互间交互机制,完成子系统结构设计,将各个系统从功能上分成数据库事务模块(事务自身处理逻辑)与粒度大的应用程序模块(业务规则),确定全局控制和调用关系,可用模块结构图(模块+调用+数据+控制+转接)表示系统总体结构和分层模块结构

  • 软件硬件选型与配置设计;

  • 规划分析阶段提出系统功能、性能及实现的约束对软硬件做了评估和选择建议;需求对系统功能性能提出了具体要求。为保证DBAS功能性能顺利实现,总体设计阶段需要对软硬件设备做出合理选择,并进行初步配置设计。

  • 软硬件选型设计的内容:

网络及设备选型; 数据存储及备份方案;服务器选项

终端软件环境;软件开发平台和语言、工具;

系统中间件及第三方软件选型

  • 业务规则初步设计;

  • 任务:从系统的角度,规划DBAS的业务流程,使之符合客户的实际业务需要。

  • DBAS的各项业务活动具有逻辑上的先后关系。可将它们表示成一个操作序列,并用业务流程图表示。

第三节 DBAS功能概要设计

  • 在总体设计结果基础上,将DBAS应用软件进一步细化为模块/子模块,组成应用软件的系统-子系统-模块-子模块层次结构,并从结构、行为、数据三方面进行设计。

  • 从功能角度,DBAS系统通常划分为四个层次实现:

  • 表示层

  • 表示层概要设计

  • 人机界面设计,影响系统易用性。目前第四代是WIMP(窗口、图标、菜单、指示器)与web技术、多任务处理技术相结合。

  • 设计原则:'用户自主控制';反馈及时上下文感知;容错与错误恢复;界面标准常规;输入灵活;界面简洁交互及时....

  • 业务逻辑层

  • 业务逻辑层概要设计

  • 设计原则:高内聚低(松)耦合,即构件单一原则;构件独立功能;接口简单明确;构件间关系简单。过于复杂,就细化,分解。

  • 设计内容:结构,行为,数据,接口,故障处理、安全设计、系统维护保障等。

  • 数据访问层

  • 数据访问层概要设计

  • 任务:针对DBAS的数据处理需求设计用于操作数据库的各类事务。

  • 事务概要设计核心在于辨识和设计事务自身处理逻辑,注意流程,不考虑与平台相关、具体操作方法和事务实现机制。

  • 一个完整的事务概要设计包括事务名称、访问的关系表及其数据项、事务逻辑(事务描述)、事务用户(使用、启动、调用该事务的软件模块和系统)。

  • 事务:

  • 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(nuit)

  • 事务的特性:原子的特性:原子性,一致性、隔离性、持续性。称为ACID特性。

  • 原子性(Atomicity):事务作为整体被执行,所有操作要么全部完成,要么全部不执行。如果事务执行过程中出现错误或异常,数据库会将所有操作都回滚到事务开始时的状态。

  • 一致性(Consistency):事务的执行应当使数据库从一个一致性状态转变到另一个一致性状态。即所有修改应当满足数据库的完整性约束、业务规则等等。

文章:如何理解事务一致性?

  • 隔离性(Isolation):多个事务并发执行时,彼此之间应当互相隔离,每个事务看到的数据应该是独立的,不会互相干扰。如果多个事务同时对同一数据进行修改,应该有机制控制它们访问数据的顺序,避免数据的不一致。

  • 持久性(Durability):一旦事务提交,数据的修改就应该是永久的,即使数据库发生故障或崩溃,数据也应该能够恢复。数据库会将所有修改记录到日志中,以便在需要时进行恢复。

  • 数据持久层

  • 数据持久层概要设计

数据持久层是应用程序与底层数据库之间的中间层,负责数据的读写、查询、事务控制和缓存等功能

  • 数据库设计:包括数据表结构、字段定义、关系设计等,需要考虑数据库的可扩展性、性能和安全性等因素。

  • 对象关系映射(ORM):将数据库中的数据对象映射到应用程序中的对象模型,ORM框架可以减少重复代码的编写,简化数据访问的代码。

  • 数据访问对象(DAO):封装对数据库的访问,提供增删改查等基本操作,可以将数据库的操作与业务逻辑解耦。

  • 数据库连接池:通过维护一组数据库连接来提高性能,减少数据库连接的创建和销毁,缓存数据库的连接,避免频繁地重新连接数据库,提高系统的响应速度。

  • 事务管理:在并发访问数据库时,需要确保数据的一致性和完整性。通过Transaction的类来实现处理。

  • 缓存管理:将常用数据缓存在内存中,可以提高系统的读取性能,降低数据库的压力。

  • 日志管理:记录数据库操作详细日志,用于追踪问题、排查错误和性能分析等。

第四节 DBAS功能详细设计

  • 1.表示层详细设计

  • 人机界面采用原型迭代法合适,三个步骤:

  • (1)初步设计:设计人机交互命令系统并优化。(总体设计)

  • (2)用户界面细节设计。如组织形式、风格、彩色、操作(概要设计)

  • (3)原型设计与改进(详细设计)

  • 2.业务逻辑层详细设计

  • 设计各模块内部处理流程和算法、具体数据结构、对外详细接口。

第五节 应用系统安全架构设计

  • 1.数据安全设计

(1)安全性保护:防止非法用户对数据库的非法使用,避免数据泄露、篡改或破坏。

  • 用户身份鉴别:

  • Windows身份验证、SQL身份验证

  • 权限控制:

  • 对后台数据库是不同用户对数据的不同存取需求设置不同权限;对于前台 ,程序是为每个合法的用户设定权限等级,外部用户设置有限查询功能。

  • 视图机制

  • 通过视图机制把保密数据对无权用户隐藏。

(2)完整性保护:保证数据源的正确性、一致性和相容性。

  • 数据库的完整性指数据库中数据的正确性、一致性、相容性

  • 方法:设置完整检查

  • 即对数据这只一些约束条件(实体完整性,参考完整性,用户自定义完整性)

  • 完整性约束条件作用对象:

  • 列(类型,范围,精度,排序),元组(记录中各属性之间的联系约束),关系(若干记录间,关系集合与集合之间的联系)三种级别

  • DBAS中, 完整性约束功能包括完整性约束条件设置和检查

(3)并发性控制:保证多个用户能共享数据库,并维护数据一致性。

  • 并发访问(Concurrent Access): 事务在时间上重叠执行。

  • 对用户并发存取同一数据的操作可能导致数据不一致,并破坏事务的隔离性,因此DBMS 必须提供并发控制机制,并发控制机制是衡量一个DBMS 性能的重要标志之一,实现数据库并发控制的常用方法是封锁技术。

  • 所谓封锁:事务T在对某个数据对象(表,记录等)操作之前,先向系统发出请求,对其加锁,加锁后,事务T释放它的锁之前,其它的事务不能更新数据对象

  • 基本锁类型:

  • 排它锁(eXclusive lock,简记为X锁):写锁,若事务对数据对象A加上X锁,只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T 释放A上的锁,排它锁保证了其它事务上在T 释放A上的锁之前不能再读取和修改A

  • 共享锁(Share lock):读锁,若事务对T 对数据对象A 加上S 锁,则其它事务只能再对A加S 锁 而不能加X 锁,直到T 释放A 上的 S 锁,共享锁保证了其它事务可以读A,但在T 释放A上的S 锁之前不能对 A 做任何修改

  • 避免死锁

  • 死锁是两个或两个以上的事务之间的循环等待

  • 设计避免死锁的原则:

  • (1)按照同一顺序访问资源(第一事务提交或回滚后第二个事务进行)

  • (2)避免事务交互性

  • (3)采用小事务模式,缩短长度和占用时间

  • (4)尽量使用记录级别的锁(行锁),少用表级别锁

  • (5)使用绑定连接,同一用户打开的两个或者多个连接以互相合作

(4)数据备份与恢复:系统失效后的数据恢复,配合定时备份数据库,不丢失数据

  • 数据库恢复基本原理:

  • 利用存储在系统上其他存储器上的冗余数据(数据备份)来重建

  • 数据备份与恢复策略:

  • 双机热备(Active/standby 方式的服务器热备)

双机热备(Active/standby方式的服务器热备)是指在一个系统中,采用两个物理上相同的服务器,其中一个服务器作为主机(也称为活动节点),另一个作为备机(也称为待机节点)。主机负责运行业务应用程序,备机处于备份状态,当主机发生故障时,备机自动接管主机的功能,并且在主机恢复正常之前继续提供服务,这种模式也称为“冷备份”。

在双机热备系统中,主机和备机之间保持着完全同步的系统状态,包括CPU、内存、磁盘、网络等系统资源。为了实现双机热备,系统需要在硬件和软件层面上进行支持和配置。其中,硬件层面的支持包括双网卡、磁盘阵列、UPS等设备,软件层面的支持则包括数据库镜像、主机切换机制等。

双机热备通常用于对高可用性要求比较高的系统,例如金融交易系统、医疗系统等。这种热备方案能够有效地提高系统的可用性、稳定性和容错性,保证业务连续性,降低系统维护成本。

  • 数据转储(数据备份)

  • 数据加密存储(针对高敏感数据)

(5)数据加密传输:将一些高级的敏感数据通过一定的加密算法后传输

  • 常见的数据加密传输手段

  • 数字安全证书

  • 对称秘钥加密

  • 数字签名

  • 数字信封

  • 实施

购买第三方中间件产品整合是一个快速有效的解决方案

  • 2.环境安全设计:

  • 漏洞与补丁:定期查找漏洞更新补丁

  • 计算机病毒防护:杀毒软件,实时监控

  • 网络环境安全:防火墙,入侵检测系统;网络隔离(逻辑隔离与物理隔离)

  • 物理环境安全:防盗设施;ups; 温湿度报警器

  • 3.制度安全设计

  • 管理层面安全措施

第六节 DBAS实施

  • 1 创建数据库

  • 考虑因素;初始空间大小;数据库增量大小;访问性能(并发数,访问频率)

  • 2 数据装载

  • 筛选数据-转换数据格式-输入数据-校验数据

  • 3 编写与调试应用程序

  • 4 数据库系统试运行(功能测试与性能测试)

七、UML与数据库应用系统

第一节 DBAS建模

  1. 统一建模语言(UML):unified Modeling Language

  • UML是一种基于面向对象的可视化的通用(General)建模语言,该方法结合了 Booch, OMT 和OOSE 方法的优点,统一了符号体系,并从其它的方法和工程实践中吸收了许多经过实际检验的概念和技术。UML只是一种建模语言 ,不是一种建模方法

  • 建模方法应包括建模语言和建模过程两部分:

  • ①建模语言:提供这种方法用于表示建模结果的符号。(图形符号:可视化)

  • ②建模过程:描述建模时需要遵循的步骤。

2 .UML的组成

  • 由语义(自然语言)与表示法(可视化标准符号)组成。其语义定义在一个四层建模概念框架中 :

  • 元元模型层( Meta- Meta Model ), 代表要定义的所有事物。

  • 元模型层( Meta Model ),UML的基本元素,“事物”概念的实例。

  • 模型层( Model ) , UML的模型,类模型或类型模型。

  • 用户模型层( User Model ) , UML模型的实例,对象模型或实例模型。

3.UML的五种视图

  • 1. UML的五种视图:结构、实现、行为、环境和用例视图

  • 1.结构视图(Structural View):用于描述系统的静态结构,它关注的是系统的组成部分及它们之间的关系。这种视图主要包括类图、对象图、组件图、部署图等,帮助开发人员了解系统的组成和结构。

  • 2.实现视图(Implementation View):用于描述系统的代码实现,它关注的是软件代码实现的细节。这种视图主要包括模块图、代码图等,帮助开发人员了解系统的实现细节。

  • 3.行为视图(Behavioral View):用于描述系统的动态行为,它关注的是系统在运行时的行为和交互。这种视图主要包括活动图、状态图、时序图等,帮助开发人员了解系统的行为特征。

  • 4.环境视图(Environment View):用于描述系统的部署环境,它关注的是系统的运行环境和配置。这种视图主要包括部署图、设备图等,帮助开发人员了解系统的部署特征。

  • 5.用例视图(Use Case View):用于描述系统的用户需求,它关注的是系统的功能和业务流程。这种视图主要包括用例图等,帮助开发人员了解系统和用户之间的交互和需求。

  • 2. 13种图( UML2.0) :静态结构图及行为图两类。

  • 一类是结构图,主要用于对系统静态结构建模,包括类图、对象图、复合结构图、包图、组件图、部署图;

  • 另一类是行为图主要用于对系统的动态行为建模,包括用例图、交互图(顺序图、通信图、交互概述图、时间图), 状态图和活动图

  • 以下是常见的13种UML图:

1. 类图(Class Diagram)

描述了系统中的类的结构和关系。

2. 对象图(Object Diagram)

描述了系统中的对象以及它们之间的关系

3. 时序图(Sequence Diagram)

描述了系统中对象之间的交互,强调的是时间顺序。

4. 协作图(Collaboration Diagram)

描述了系统中对象之间的交互,强调的是对象之间的相互作用。

5. 用例图(Use Case Diagram)

描述了系统的功能和用户之间的关系。

6. 状态图(State Machine Diagram)

描述了对象或系统在其生命周期内的状态和状态之间的转换。

7. 活动图(Activity Diagram)

描述了系统中的活动和它们之间的关系,强调的是流程和行为的控制。

8. 部署图(Deployment Diagram)

描述了系统中软件和硬件之间的物理部署关系。

9. 组件图(Component Diagram)

描述了系统中的组件和它们之间的关系。

10. 包图(Package Diagram)

描述了系统中各个包之间的关系和依赖。

11. 通信图(Communication Diagram)

描述了系统中对象之间的交互,强调的是对象之间的消息传递。

12. 构件图(Composite Structure Diagram)

描述了系统中复合构件(如类、对象、组件等)的结构和关系。

13. 计时图(Timing Diagram)

描述了系统中对象生命周期内的时间顺序和时序关系。

第二节 DBAS业务流程与需求表达

  1. 业务流程与活动图

  • 活动图主要描述系统、用例和程序模块中逻辑流程的执行次序,并行次序。

  • 最合适描述系统或子系统的工作流程。

  • 活动图用于低层次程序模块的作用类似于流程图,但活动图可以描述并行操作,而流程图只能描述串行操作。

  • 一张活动图中有且只能有一个起点,可有多个结束点。

  1. 系统需求与用例图

  • 系统需求:用户心中的真正期望。

  • 用例模型是把满足用户需求的所用功能表示出来的工具。

  • 用例模型由用例、角色和系统三部分组成。

  • 系统:各种用例的"黑匣子"

  • 角色:与系统交互的人或其他实体

  • 用例:完整功能所有动作(一次操作)集合

  • 角色之间的关系

  • 通用化关系:指把某些角色的行为抽取出来作为通用行为,这些通用行为构成超类。

  • 用例与角色之间的关系

  • 连接关系(关联,通信关联):表明那种角色能用该用例通信,是双向的一对一关系。

  • 用例之间的关系

  • 扩展:一用例增加新内容称为另一个用例。

  • 包含(使用):一个用例使用另一个用例。

  • 关联(组合):把相关用例打包当作整体。

第三节 DBAS系统内部结构的表达

  1. 系统结构与类图

  • 系统内部结构一般分为静态结构和动态结构。

  • 在UML中,用类图来描述系统静态结构,用顺序图和通信图来表示系统动态结构。

  • 类图主要表达的是问题领域的概念模型。

  • 类图由类名、属性及操作组成。

  • 类与类之间的关系

  • 关联(聚集(共享聚集,组成或组合))

  • 继承(或叫泛化)

  • 依赖

  • 精华(或叫实现)

  1. 系统结构与顺序图

  • 针对每一个特定用例,如何利用类图规范的对象来完成用例交付的任务,必须要利用顺序图

  • 顺序图主要用于描述系统内对象之间的消息发送和接受序列。

  • 顺序图中的所有的元素,都必须在类图中存在

  1. 系统结构与通信图

  • 通信图是交互图的一种,也称为协作图。

  • 通信图显示对象间组织交互关系和链接。不侧重交互顺序,用序列号来确定消息及其并发线程的顺序。

  • 顺序图强调时间,通信图强调空间。

第四节 DBAS系统微观设计的表达

  1. 微观设计与对象图

  • 系统设计中,需要考虑细节部分。UML中,对于细节方面的内容可用对象图、状态机图及时间图来表达、分析和描述某个特定状态下系统的运作情况。

  • 对象图是类图的实例,描述特定时间中所有对象在系统中的结构,是一个快照。

  1. 微观设计与状态机图

  • 状态图用来描述有关事件或对象的状态转移。

  • 状态图只能有一个起始状态,可有多个结束状态

  • 状态间的转移由事件驱动。

  1. 微观设计与时间图

当状态的转换由时间因素决定时,使用时间图来描述状态的变化。

描述时间驱动的状态转换,即当状态维持多少时间后转移。

时间图中,整个矩形框就是一个生命线。

第五节 DBAS系统宏观设计的表达

  1. 宏观设计与包图

  • 宏观设计指将设计的焦点放在研究比较大范围中的元素之间的联系,如包、命名空间、子系统等。

  • 一个良好的命名空间,便于开发人员理解,并使得各个命名空间能够松耦合,而命名空间内则可满足高内聚的要求。

  • 包图表示系统中不同包、命名空间或不同项目间的彼此关系。也就是逻辑层次上与实体层次上的关联性。

  1. 宏观设计与交互概述图

  • 是将活动图和顺序图嫁接在一起的图。

  • 以活动图为基础,在控制流间连接交互图,从而将所有交互图关系呈现出来。

  • 交互概述图可以把不同的交互图结合在同一张图中来表示。

3.宏观设计与复合结构图

  • 外部系统的整合关系着项目的成败。

  • 在项目开始前,最好将待开发的系统与外部系统的关系做一个初步的定义。

  • 复合结构图适用于系统间的沟通接口,适合做架构师在初期阶段评估系统复杂度的工具,也可以是系统维护的参考图。

第六节 DBAS系统实现与部署的表达

  1. 系统实现与组件图

  • 组件图用来表示系统的静态实现视图。

  • 用来展示一组组件间的组织和依赖,用来对源代码、可执行的发布、物理数据库等的系统建模。

  • 组件是逻辑设计中定义的概念和功能在物理架构中的实现。

  1. 系统实现与部署图

  • 部署图又叫配置图,描述系统中硬件和软件的物理配置情况与系统体系结构。

  • 部署图说明实体组件,如可执行程序将如何部署到实际的计算机中。

  • 部署图要在项目进行集成测试前提供。

八、数据库及数据库对象

第一节 创建及维护数据库

  1. SQL Server的特点

  • 保护数据库查询

  • 在服务器的管理操作上花费更少的时间

  • 增加应用程序稳定性

  • 系统执行效能优化与预测功能

2. SQL Server中数据库的分类

  • 系统数据库(自动创建)

  • master:所有系统级信息、元数据、端点、连接服务器和系统配置。

  • msdb:用来保存SQLServer代理作业和执行计划的配置信息。

  • tempdb:用于保存临时对象和中间结果,每次启动会重新创建。

  • model:所有数据库的模板,存放用户数据公共信息。

  • resource:只读数据库。在对象资源管理器看不到。

  • 用户数据库(保存与用户业务有关的数据)

3. SQL Server数据库的组成

  • SQL Server将数据库映射为一组操作系统文件:

  • 数据文件:

  • .mdf:主要数据文件。只有一个,大小不得小于3MB

  • .ndf:次要数据文件。有0个或多个,可在一个磁盘或多个磁盘存放。

  • 日志文件:

  • .ldf:事务日志文件。至少有一个日志文件。

4. 数据库存储空间的分配

  • 创建用户数据库时,model数据库被自动复制到新建库

  • 数据存储的最小单位:数据页(page,简称页)

  • 一页是一块8KB的连续磁盘空间。

  • 页的大小决定了数据库表中一行数据的最大大小。

  • 行不能跨页存储。

5. 数据库文件组

  • 两种类型的文件组:

  • 主文件组(PRINARY)

  • 系统定义,包含主要数据文件和任何没有明确分配的其他文件组的其他数据文件,系统表所有页均分配在主文件组中。

  • 用户定义文件组

  • 在定义或修改数据库时用FILEGROUP关键字指定。

6. 注意事项

  • 日志文件不在文件组中,日志空间与数据空间分开管理。

  • 一个文件不可以是多个文件组成员。

  • 若文件组包含多个文件,则在所有文件被填满后才会自动循环增长。

  • 文件加入数据库中后,不能移动到其他文件组。

  • 只能指定一个文件组为默认文件组。

7. 数据库文件的属性

  • 定义数据库的数据文件和日志文件所需信息:

  • 文件名及其位置

  • 逻辑文件名,物理文件名

  • 初始大小

  • 不能小于model数据库主要数据文件的大小。

  • 增长方式

  • 可指定文件是否自增长(默认)

  • 最大大小

  • 文件增长的最大限制。默认无限制

8. 用T-SQL创建数据库

  • 创建数据库一般有两种方式:

  • 通过SQL Server Management Studio 创建数据库

  • 通过T-SQL语句创建数据库

  • PRIMARY:指定为主要数据库文件,没有指定默认第一个文件是主要数据文件。

  • LOG ON:自动创建日志文件,大小为数据文件总和25%或512KB中大的。

  • NAME:逻辑文件名,唯一。

  • FILENAME:物理文件名。

  • SIZE:初始大小,.mdf大小不小于model,.ndf默认为1MB.

  • MAXSIZE:最大大小,未指定则文件自动增长到磁盘满。

  • UNLIMITED:增长无限制,一般指定为日志文件2TB, 数据文件16TB

  • FILEGROWTH:指定文件自动增量,不超过MAXSIZE。默认数据文件1MB,日志文件为当前文件的10%。

  • FILEGROUP:文件组逻辑名,唯一,不能是系统名。

  • DEFAULE:指定该文件组为默认文件组。

  • 修改数据库

  • 收缩数据库空间

  • 即释放数据库中未使用的空间,文件的收缩从末尾开始。

  • 自动收缩: AUTO_SHRINK,默认false。

  • 手工收缩:收缩数据库中某个文件大小; 按比例收缩整个数据库大小。

  • 添加和删除数据库文件


ALTER DATABASE database 
{ADD FILE < filespec >[,...n][TO FILEGROUP filegroup_name] 
 ADD LOG FILE < filespec >[,...n] 
 REMOVE FILE logical_file_name 
 ADD FILEGROUP filegroup_name 
 REMOVE FILEGROUP filegroup_name 
 MODIFY FILE < filespec > 
 MODIFY NAME = new_dbname 
 MODIFY FILEGROUP filegroup_name {filegroup_property 
 NAME = new_filegroup_name } 
 SET < optionspec >[,...n][WITH < termination > 
 COLLATE < collation_name > }
  • 扩大指定文件的大小:


 ALTER DATABASE STU_DB MODIFY FILE( NAME=student_data, SIZE= 8MB)
  • 添加新的数据文件:


ALTER DATABASE STU_DB 
ADD FILE ( NAME=student_data2 , 
FILENAME='E:\Data\student_data2.ndf', 
SIZE=6MB,FILEGROWTH=0 )
  • 收缩整个数据库的大小:


DBCC SHRINKDATABASE
  • 收缩指定文件的大小:


DBCC SHRINKFILE
  • 示例:

  • 例1 : DBCC SHRINKDATABASE ( students , 20 )

  • 收缩数据库,该数据库所用文件都有20%可用空间

  • 例2 : DBCC SHRINKFILE ( students datal , 4 )

  • 收缩数据库到4MB大小

  • 删除数据库文件:


ALTER DATABASE STU_DB REMOVE FILE student_log1
  • 注意:

  • 添加文件时,每个文件组中的数据文件按比例填充,日志文件是依次增加的。

  • 文件为空才能删除。

9. 分离和附加数据库

  • 分离数据库

  • 作用:实现将数据库从一台数据库服务器移到另一台,不需要重建。

  • 从实例中删除,不删除数据文件和日志文件,保持了数据文件和日志文件完整一致。

  • 使用sp_detach_db系统存储过程实现

  • 如: EXEC sp_detach_db'student','true'

  • 附加数据库

  • 将分离的数据库重新附加到数据库管理系统中。

  • 必须指定主要数据文件的物理存储位置和文件名。


CREATE DATABASE...... 
FOR ATTACH|ATTACH_ REBUILD_LOG

例:
CREATE DATABASE students 
On(FILENAME='F:\Data\Students_data1.mdf') 
FOR ATTACH

第二节 架构

架构(Schema,也称模式),是数据库下的一个逻辑命名空间,是数据库对象的容器,一个数据库包含一个或多个架构,同一个数据库内架构名唯一。

  • 定义构架


CREATE SCHEMA [<架构名>] AUTHORIZATION<用户名>
  • 删除构架


DROP SCHEMA [<架构名>]

第三节 分区表

1.基本概念

  • 分区表是将表中的数据按水平分割成不同子集,并将数据子集存储在数据库一个或多个文件组中。物理上将大表分成几个小表,逻辑上还是一个大表。

  • 合理使用分区能提高数据库性能。

  • 是否创建分区取决于表当前数据量大小,以及将来数据量,还取决于表中数据的操作特点。

  • 表包含(或将包含)以多种不同方式使用大量数据

  • 数据是分段的,比如以年份分割。

2. 创建分区表

(1)创建分区函数:告诉DBMS以什么方式分区


    CREATE PARTITION FUNCTION

(2)创建分区方案:作用是将分区函数生成映射到文件组中


CREATE PARTITION SCHEME

(3)使用分区创建表

第四节 索引

  1. 创建索引:


# 唯一索引
CREATE [UNIQUE][CLUSTERED|NONCLUSTERED]
INDEX index_name
ON table_name (column_name...)
[WITH FILLFACTOR=x] 

UNIQUE 表示唯一索引,可选

CLUSTERED、NONCLUSTERED表示聚集索引还是非聚集索引,

可选FILLFACTOR表示填充因子,指定一个0到100之间,该值指示索引页填满的空间所占的百分比

2.删除索引


DROP INDEX
'tablename.indexname | viewtable.indexname'#索引列所在的表或索引视图,和要删除的索引名
[...n] # 表示可以指定多个要删除的索引

第五节 索引视图

1.基本概念

  • 标准视图也称虚拟表,返回结果集与基本表一致。标准视图的结果集不永久存放;

  • 建立唯一聚集索引的视图,称为索引视图,也称为物化视图。建立索引后,视图的结果集存放在数据库中。

  • 对基本表的修改会反映到索引视图存储的数据中

2. 适合建立索引视图的场合

  • 很少更新基础数据,索引视图效果更好

  • 若基础数据以批处理形式定期更新,且主要是作为只读数据进行处理,可考虑在更新前删除所有索引视图,然后重建,提高更新性能。

  • .索引视图可以提高这些查询类型性能

  • 处理大量行的连接和聚合

  • 许多查询经常执行的连接和聚合操作

  • 索引视图通常不会提高这些查询类型性能

  • 具有大量写操作的OLTP系统

  • 具有大量更新操作的数据库

  • 不涉及聚合或连接的查询

  • GROUP BY 具有高基数度的数据聚合

3. 定义索引视图

  • 创建聚簇索引前视图必须符合的条件:

  • 定义索引视图时,视图只能引用基础表, 不能是其他视图。引用的所以基本表和视图同一数据库,所有者相同。

  • 必须用SCHEMABINDING选项建视图。

  • 视图中表达式引用的所有函数必须确定。

  • 对视图建立的第一个索引是唯一聚簇索引,之后在创建其他。CREATE VIEW; WITH SCHEMABING;CREATE UNIQUE CLUSTERED INDEX ...

九、高级数据库查询

第一节 一般数据查询功能扩展

1.SELECT 语句


SELECT [DISTINCT] [TOP n] select_list  -- 查询指定的列
[INTO new_table]  -- 将查询结果创建到新表
[FROM table_source] --  查询行所在的表
[WHERE search_conditition] -- 指定返回行的搜索条件
[GROUP BY group_by_expression] -- 指定查询结果分组条件
[HAVING search_condition] -- 指定组或聚合函数的搜索条件
[ORDER BY order_expression [ASC|DESC]] -- 指定结果集的排序方式
[COMPUTE expression] -- 在结果集的末尾生成汇总数据行

2.使用TOP限制结果集


Top n [precent][WITH TIES]
.Top n 前n行
.Top n[percent] 前n%行
.[WITH TIES]:包括最后一行取值并列的结果

3.使用CASE函数

  • 分情况显示不同类型的数据。CASE函数是一种多分支表达式。

  • 两种类型:

  • 简单CASE函数

  • 搜索CASE函数

  • 语法:


CASE 
    WHEN 布尔表达式1 then 结果表达式1
    WHEN 布尔表达式2 then 结果表达式2
    ...
    WHEN 布尔表达式n then 结果表达式n
    [ELSE 结果表达式n+1]
END 

4.将查询结果保存到新表中


SELECT 查询列表序列 INTO <新表名>
FROM 数据源......(其他行过滤、分组语句)
注意: 表名前加# 为局部临时表,##为全局临时表,只有表名为永久表。

第二节 查询结果的并、交、差运算

  1. 并运算

  • 并运算(UNION): 将多个查询结果合并为一个结果集。

  • 语法:


SELECT 语法1 
    UNION [ALL]
SELECT 语法2
    UNION [ALL] 
......
  • 使用UNION注意:

  • 要进行合并的查询, SELECT 中的列数必须相同, 语义相同。

  • 每个相对应列的数据类型隐式兼容, 如char(20)与varchar(40).

  • 合并后结果采用第一个SELECT 语句的列标题。

  • 若需排序,则GROUP BY语句写在最后一个SELECT之后,且排序的语句是第一个SELECT中的列名。

  1. 交运算

  • 交运算:返回同时在两个集合中出现的记录。

  • 语法:


SELECT 语句1
INTERSECT 
SELECT 语句2
INTERSECT ......
SELECT 语句n
  1. 差运算

  • 差运算: 返回第一个集合中有而第二个集合没有的记录。

  • 语法:


SELECT 语句1
EXCEPT
SELECT 语句2
EXCEPT ......
SELECT 语句n

第三节 相关子查询

  • 子查询是一条包含在另一条SELECT 语句里的SELECT语句。外层的SELECT语句叫外层查询,内层的SELECT语句叫内层查询(或子查询).

  • 子查询总是写在圆括号中。

  • 包括子查询的SECLECT语句主要采用一下格式中的一种:

  • (1)WHERE expression [NOT] IN (subquery)

  • (2)WHERE expression comparison _operator [ANY | ALL]

  • (3)WHERE [NOT] EXISTS (subquery)


-- 1.使用子查询进行基于集合的测试
SELECT Cname, Address FROM Table_Customer 
WHERE Address IN(SELECT Address FROM Table_Customer WHERE Cname='王晓')
AND Cname != '王晓'

-- 2.使用子查询进行比较测试
-- 查询单价最高的商品的名称和单价
SELECT Goodname, SaleUnitPrice FROM 
Table_Goods a WHERE SaleUnitPrice= 
(SELECT MAX(SaleUnitPrice) FROM Table_Goods)

-- 3.使用子查询进行存在性测试
-- 查询购买了单价高于2000元商品额顾客的会员卡号。
SELECT DISTINCT CarfID FROM Table_SaleBill WHERE EXISTS
(SELECT *  FROM Table_SaleBillDatail WHERE SaleBillID=Table_SaleBill.SaleBillID
AND UnitPrice>2000)

第四节 其他形式的子查询

  1. 替代表达式的子查询

1.在SELECT的选择列表中嵌入了一个只返回一个标量的子查询


SELECT Cname, Address, 
(SELECT COUNT(*) FROM Table_Customer b ON a.CardID=b.CardID 
WHERE CustomerID='COOL')
AS TotalTimes FROM Table_Custmer WHERE CustomerID='COOL'

2. 派生表

也称为内联视图,是将子查询作为一个表处理, 产生的新表为"派生表".

实例: 查询至少买了GOO1和GOO2两种商品的顾客号和顾客名


SELECT CustomerID,CName FROM(SELECT * FROM Table_SaleBill a JOIN
Table_SaleBillDetail b ON a.SaleBillID=b.SaleBillID WHERE GoodsID='GOOL' )AS T1
JOIN(SELECT * FROM Table_SaleBill a JOIN Table_SaleBillDetail b ON
a.SaleBillID=b.SaleBillID WHERE GoodsID='GOO2') AS T2
ON T1.CardID=T2.CardID
JOIN Table_Customer c ON c.CardID=T1.CardID

第五节 其他一些查询功能

  1. 开窗函数

  • 在SQL Server中, 一组行被称为一个窗口。

  • 与聚合函数一样,开窗函数也是对行集组进行聚合计算,但是它不像普通聚合函数那样每组只返回一个值,开窗函数可以为每组返回多个值,因为开窗函数所执行聚合计算的行集组是窗口

  • 与聚合函数不同的是, 开窗函数在聚合函数后增加了一个OVER 关键词。

  • 开窗函数的调用格式为: 函数名(列) OVER (选项)

  • OVER 关键词: 表示把函数当成开窗函数而不是聚合函数。

  • SQL 标准允许将所有聚合函数用做开窗函数,但要使用OVER关键词来区分这两种用法。


-- 实例1:
-- 将OVER字句与聚合函数结合使用
-- 设有课程表Course (Cno,CName, Credit,Semester)查询全部课程的Cno, CName, 
-- Semesterm Credit信息及其该学期开设课程的总、最高、平均、最低Credit.
SELECT Cno, CName, Semester, Credit 
SUM(Credit) OVER(PARTITION BY Semester) AS 'Total',
AVG(Credit) OVER(PARTITION BY Semester) AS 'Avg',
MIN(Credit) OVER(PARTITION BY Semester) AS 'Min',
MAx(Credit) OVER(PARTITION BY Semester) AS 'Max',
FROM Course

-- 实列2:
-- 将OVER子句与排名函数一起使用
-- 排名函数RANK()
RANK() OVER([, ...[n]])
-- 注意:排名函数具有不确定性
-- 排名从1开始,不一定是连续整数
  • 其他排名函数

  • DENSE_RANK()

  • 排名是连续

  • NTILE()

  • 将有序分区中的行划分到指定数目的组中, 编号从1开始,函数返回此行所属的组的编号。

  • ROW_NUMBER()

  • 返回结果集中每个分区内的序列号, 每个分区的第一行从1开始。

  1. 公用表达式

  • 公用表达式(CommonTableExpression, CTE):将查询结果集指定一个临时名字,这些命名的结果集就是公用表表达式

  • 格式:


WITH [...n]
::=
Expression_name[(column_name[...n])]
AS
(SELECT语句)
  • 例子


-- 定义一个统计每个会员购买商品次数的CTE,并利用CTE查询会员卡号和购买商品的次数。
-- 定义:
WITH BuyCount (CardID, Counts) 
AS (SELECT CardID, Count(*) FROM table_SaleBill
GROUP BY CardID)
-- 使用:
AS (SELECT CardID, Counts FROM BuyCount ORDER BY Counts)

十、数据库后台编程技术

第一节 存储过程

  1. 基本概念

  • 使用T-SQL语言编写代码时,有两种方式存储和执行代码:

  • (1) 在客户端存储代码,通过客户端程序或SQL命令向DBMS发出操作请求, 由DBMS将结果返回给用户程序。

  • (2)以子程序的形式将程序模块存储在数据库中, 供有权限的用户通过调用反复执行。

  • 存储过程:即存储在数据库在供所有用户程序调用的子程序。

  • 存储过程分为三类

  • 系统存储过程

  • 用户自定义存储过程

  • 扩展存储过程

  • 用户自定义存储过程是由用户创建并能完成某一特定功能(如查询用户所需数据信息)的存储过程。

  • 扩展存储过程是SQL Server 可以动态装载并执行的动态链接库(DLL)。扩展存储过程使你得以使用像C这样的编程语言创建自己的外部例程。对用户来说,扩展存储过程与普通存储过程一样,执行方法也相同。

  • 存储过程的优点:

  • 极高的执行效率

  • 增强代码的重用性和共享性

  • 使用存储过程可以减少网络流量。

  • 使用存储过程保证安全性

  • 在大型数据库中应用程序访问数据库的最主要方式就是存储过程。

  • 存储过程可以在系统启动时自动执行。

  1. 创建、执行、删除存储过程

  • 存储过程定义包含两个主要组成:

  • 1.过程名称及其参数的说明

  • 2.过程的主体(其中包含执行过程操作的Transact-SQL语句)。创建存储过程的语法格式如下:


--创建存储过程
create procedure 存储过程名(参数列表)
begin
    存储过程体
end
1.参数列表:1.参数模式2.参数名3.参数类型
2.参数模式:
in:该参数作为输入,也就是啊该参数需要调用方传入值
out:该参数作为输出值,也就是该参数可以作为返回值
inout:该参数可以输入又可以输出,也就是该参数即需要传入值,又可以返回值
3.如存储过程仅有一句话,begin end 可以省略
-- 执行存储
exec[ute]
{
    [返回状态=]
    {存储过程名}
    [@参数=] {值|@变量[output]|[default]}]
    [,···n]
    [with recomplie]
}
SQL server存储过程调用时,参数必须为常数或变量,但不能是表达式或函数
with recomplie:在运行存储过程前对存储过程进行重新编译
-- 删除存储过程
DROP PROCEDURE 存储过程名

第二节 用户定义函数

  1. 用户定义函数:

类似于编程语言中的函数,其结果与存储过程类似, 但函数必须有一个RETURN子句,用于返回函数值。

  1. 两类用户定义函数:

标量函数和表值函数。前者返回单位数据值,表值函数返回一个表。

3.定义标量函数


CREATE FUNCTION .....RETURNS return_data_type 
AS
BEGIN
[函数体]
RETURN scalar_expression
END

4.调用标量函数

注意: 调用时需要提供函数拥有者名和函数名;

可以在任何出现表达式的SQL语句中调用类型一致的标量函数。

5.创建和调用内嵌表值函数

创建内联表值函数:


CREATE FUCTION .... RETURNS TABLE
[AS]
RETURN [ ( ] select_stmt [ ) ]

-- 参数说明: select_stmt是定义内联表值函数返回值的单个SELECT语句; 
-- 表值函数没有返回变量, 没有函数体,只返回一个查询结果。

调用内联表值函数:

使用内联表值函数与视图类似,其作用相当于带参数的视图

6.创建和调用多语句表值函数

7. 删除用户自定义函数


DROP FUNCTION 函数名

第三节 触发器

  1. 基本概念

  • 触发器:特殊存储过程,在对表中数据进行UPDATE、INSERT、DELECT操作时自动触发执行,常用于保证业务规则和数据完整性,增强数据完整性约束能力。

  • SQL Server 2008支持三种类型的触发器:

DML、DDL、登录触发器。

  1. 适用场合:

  • 完成比CHECK(只能实现同一表列之间取值约束)约束更复杂的数据约束。

  • 保证数据库性能而维护的非规范化数据。

  • 可实现复杂的商业规则。

  • 评估数据修改前后的表状态,并采取对策。



在 SQL 中,创建触发器的语法格式如下:
CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE | DELETE | TRUNCATE}
ON table_name
[FOR EACH ROW]
[WHEN condition]
BEGIN
  trigger_body
END [trigger_name];

其中,各个关键字的含义如下:

-`CREATE TRIGGER`:创建触发器
-`OR REPLACE`:可选项,如果指定了`OR REPLACE`,则表示如果同名的触发器已经存在,则替换掉已有的触发器。如果未指定`OR REPLACE`,则创建同名触发器会报错。
-`trigger_name`:触发器的名称,需要自己定义
- `BEFORE | AFTER}`:触发时机,`BEFORE` 表示在数据被修改前触发,`AFTER` 表示在数据被修改后触发
- `INSERT | UPDATE | DELETE | TRUNCATE}`:触发类型,`INSERT` 表示在插入数据时触发,`UPDATE` 表示在修改数据时触发,`DELETE` 表示在删除数据时触发,`TRUNCATE` 表示在截断表时触发。
-`ON table_name`:触发器作用的表名
- `FOR EACH ROW]`:如果指定了`FOR EACH ROW`,则表示此触发器是针对每一行数据进行操作的。如果没有指定,则此触发器是针对整个表进行操作的。
- `WHEN condition]`:可选项,表示当条件`condition` 满足时触发触发器,`condition` 是一个 Boolean 表达式,可以包含运算符和 SQL 函数。
-`BEGIN` 和`END`:在这两个关键字中间,书写触发器的操作语句。
-`trigger_body`:触发器的具体操作语句,必须以`BEGIN` 开始,以`END` 结束。
-`;`:表示语句的结束符号,不要忘记。

需要注意的是,触发器的操作语句中,可以使用类似变量的`OLD` 和`NEW` 来分别表示被修改前的数据和被修改后的数据。
  1. 注意:

一个表可建多个触发器,每个触发器可由三个操作触发。ALTER类型同一操作上建立多个触发器,INSTEAD OF类型同一个操作上建立一个触发器。

所有建立和更改数据库以及数据库对象的语句、DROP语句不允许在触发器中用

触发器不要返回任何结果

  1. 删除触发器

DROP TRIGGER 触发器名

第四节 游标

游标: 实现对SELECT结果集的逐行处理。

  1. 游标的组成

游标结果集(SELECT返回结果集)与游标当前行指针(指向结果集中某一行)

特点:定位特定行;从当前位置检索一行或多行;支持当前行数据修改;对修改结果提供不同级别的可见性支持。

  1. 使用游标

(1)声明游标

ISO标准语法:DECLARE cursor_name[1] CURSOR FOR select_statement[2]

参数说明:[1] INSENSTITIVE:创建临时副本,对临时表操作;

SCROLL:范围,否则支持NEXT;

[2]READ ONLY:禁止更新 UPDATE 更新列指定列或所有。

(2) 打开游标

OPEN cursor_name

(3) 提取数据

FETCH [1] FROM cursor_name [INTO @ variable_name [,…n]]

(4) 关闭游标

CLOSE cursor_name

可以再次打开

(5) 释放游标

DEALLOCATE curssor_name

释放分配给游标的所有资源

十一、安全管理

第一节 安全控制概述

数据库安全性不同于数据的完整性。

  • 安全性: 保护数据以防止不合法用户故意造成破坏。(确保用户被允许做其想做的事情.)

  • 完整性:保护数据以防止合法用户无意中造成破坏。(确保用户做的事情是正确的)

  1. 数据库安全控制的目标

保护数据免受意外或故意的丢失、破坏或滥用。

  1. 数据库安全的威胁

安全计划需要考虑:可用性损失,机密性数据损失,私密性数据损失,偷窃和欺诈,意外的损害。

  1. 安全控制模型

包括四阶段:

  • 身份验证(用户)

  • 操作权限控制(数据库应用程序与数据库管理系统)

  • 文件操作控制(操作系统)

  • 加密存储与冗余(数据库)

  1. 授权和认证

认证是一种鉴定用户身份的机制。授权是将合法访问数据库或数据库对象的权限授予用户的过程。包括认证用户对对象的访问请求。

DBMS通常采用自主存取控制和强制存储控制两种方案来解决安全控制问题。

第二节 存取控制

  1. 自主存取控制

又称自主安全模式,通过SQL的GRANT, REVOKE,DENY语句来实现。

  • 权限种类: 维护权限与操作权限(语句权限与对象权限)

  • 用户分类:系统管理员(sa)、数据库对象拥有者、普通用户。

  1. 强制存取控制

  • 为避免自主存取模式下数据的"无意泄露", 采取强制存取控制。

  • DBMS将全部实体分为主体和客体两大类。

  • 主体: 系统活动实体,实际用户和进程。

  • 客体:被动实体,受主体操纵,包括文件、基本表、视图。

  • 对于主体和客体,DBMS为他们的每个实例指派一个敏感度标记(Label)

  • 敏感度标记: DBMS指派,主体为许可证级别,客体为密级。分绝密(Top Secret,TS)、秘密(Secret,S)、可信(Confidential,C)和公开(Public,P)等若干级别。记TS>=S>=C>=P

  • 强制存取控制遵守如下规则

  • 1. 读访问控制规则:仅当主体的许可证级别大于或等于客体的密级时,该主体才能读相应的客体。

  • 这条规则意味着主体必须满足一定的密级要求,才有权利去读取对应的客体。如果主体的密级不足,则无法对客体进行读取操作。

  • 2. 写访问控制规则:仅当主体的许可证级别小于或等于客体的密级时,该主体才能写相应的客体。

  • 这条规则意味着主体必须满足一定的密级要求,才有权利去写入对应的客体。如果主体的密级过高,则不能将高级别信息写入到低级别客体中。

第三节 审计跟踪

  • 审计跟踪实质上是一种特殊的文件或数据库。系统自动记录用户对常规数据的所有的操作。

  • 审计跟踪对数据安全有辅助作用。

第四节 统计数据库的安全性

  • 统计数据库提供基于各种不同标准的统计信息或汇总数据。

  • 统计数据库安全系统用于控制对统计数据库的访问。

  • 统计数据库允许用户查询聚合类型的信息, 如总和、平均等,但不允许查询个人信息。

第五节 SQL Server的安全控制

  1. 身份验证模式

  • Windows身份验证模式

  • SQL Server通过Windows操作系统获得用户信息,验证登录名和密码,一般推荐。

  • 混合身份验证模式

  • Windows授权用户和SQL授权用户可以登录。

  1. 登录账户

  • 两类:

  • SQL Server自身负责身份验证的账户,内置系统账户与用户自己创建。

  • 登录到SQL Sever的Windows网络账号,可以是组账号或用户账户。

  • 建立登陆账户

  • CREATE LOGIN login_name

  • 修改登录账户属性

  • ALTER LOGIN login_name

  • 删除登录账户

  • DROP LOGIN login_name

  1. 数据库用户

  • 用户有了登录账户,只能连接到SQL服务器,并不具有访问数据库的权限。

  • 映射: 让登录账户成为数据库用户的操作成为映射。一个登录账号可以映射为多个数据库用户,默认情况下,新建数据库只有一个用户:dbo, 数据库用户的拥有者。

  • 建立数据库用户

  • CREATE USER user_name[|FOR|FROM]

  • LOGIN login_name

  • Guset用户

  • 特殊数据库用户,匿名访问,有映射到登录账户的时候使用。

  • GRANT CONNECT TO guest 授权

  • REVOKE CONNECT TO guest 收回权限

  • 删除数据库用户

  • DROP USER user_name

  1. 权限管理

登录账户成为合法用户后没有任何操作权限,就需要为用户授予数据库数据及其对象的操作权限。

  • 对象级别的权限(6种):

  • SELECT、INSERT、UPDATE、DELETE、REFERENCES、EXECUTE

  • 授权语句:

  • GRANT 对象权限 ON 对象 TO (主体:数据库用户名或角色 )[WITH GRANT OPTION]

  • 拒接权限语句:

  • DENY 对象权限 ON 对象 TO (主体:数据库用户名或角色 )[CASCADE][AS主体]

  • 收权语句:

  • REVOKE 对象权限 ON 对象 TO (主体:数据库用户名或角色 )[CASCADE][AS角色]

  1. 角色

  • 定义: 一组具有相同权限的用户就是角色。

  • SQL Server 2008中,角色分为预定义的系统角色和用户角色两种。

  • 系统角色又分为固定服务器角色(服务器级角色)和固定数据库角色(数据库级角色)

  • 用户角色均是数据库级角色

  • 固定服务器角色:

  • 1. sysadmin:该角色是 SQL Server 实例中的最高权限角色,可以执行所有操作,包括配置、管理、维护和安全性管理。

  • 2. serveradmin:具有此角色的用户可以配置服务器级别选项,如内存限制和默认备份路径。

  • 3. securityadmin:该角色可以创建和管理 SQL Server 的登录账户、服务器级别的角色、登录密码策略以及其他安全性相关的操作。

  • 4. processadmin:该角色允许用户管理正在运行的 SQL Server 进程,包括停止、启动、暂停、恢复和查看当前运行的进程。

  • 5. setupadmin:具有此角色的用户可以安装或卸载 SQL Server 实例,以及配置服务器级别选项。

  • 6. bulkadmin:该角色允许用户执行 BULK IMPORT 和 BULK EXPORT 操作。

  • 7. diskadmin:该角色允许用户管理 SQL Server 实例中的磁盘文件和文件组。

  • 8. dbcreator:该角色允许用户创建、更改和删除数据库。

  • 9.Public:系统预定义服务器角色,每个登录名都是这个角色的成员。没有授予或拒绝特定权限,则将具有这个角色权限。

  • 10. 为固定服务器角色添加成员

  • Sp_addsrvrolemember

  • EXEC Sp_addsrvrolemember 'user1', 'sysadmin'

  • 11. 删除固定服务器角色添加成员

  • Sp_dropsrvrolemember

  • EXEC Sp_dropsrvrolemember 'user1', 'sysadmin'

  • 固定数据库角色:

定义在数据库级别上, 存在于每个数据库中。

用户加入固定数据库角色就具有数据库角色权限

  • 1. db_owner:该角色是数据库中的最高权限角色,可以对数据库进行所有操作,包括读、写、修改和删除等操作。

  • 2. db_datareader:该角色允许用户只读取数据库中的数据,但不能对数据进行修改。

  • 3. db_datawriter:该角色允许用户修改数据库中的数据,但不能读取系统表或元数据。

  • 4. db_ddladmin:该角色允许用户创建、更改或删除任何类型的数据库对象,包括表、视图、存储过程、用户定义函数、触发器和索引等。

  • 5. db_securityadmin:该角色允许用户管理数据库中的安全设置,包括创建、更改或删除安全对象和管理用户帐户的权限等。

  • 6. db_accessadmin:该角色允许用户管理数据库用户和角色的访问。它包括添加或删除用户、更改用户权限和授予或撤销角色等。

  • 7. 为固定数据库角色添加成员

  • Sp_addsrvrolemember

  • EXEC Sp_addsrvrolemember 'Db_datareader', 'SQL_User2'

  • 11. 删除固定数据库角色添加成员

  • Sp_dropsrvrolemember

  • EXEC Sp_dropsrvrolemember 'Db_datareader', 'SQL_User2'

  • 用户定义角色:

  • 用户定义的角色属于数据库一级

  • 用来简化使用数据库时的权限管理

  • 用户定义的角色成员可以是用户定义角色或数据库用户。注意:角色中的成员拥有的权限=成员自身权限+所在角色权限。但若某个权限在角色中被拒绝, 则成员不再拥有。

  • 创建用户定义的角色

  • 实例: CREATE ROLE MathDept [AUTHORIZATION Software]

  • 注意:为用户定义角色授权、添加、删除用户定义的角色中的成员与固定数据库角色一致

  • 删除用户定义角色

  • DROP ROLE

  • 实例: DROP ROLE MathDept

第五节 Oracle的安全管理

➢Oracle的安全机制分为数据库级的安全控制、表级、列级、行级的安全控制。

数据库级的安全性通过用户身份认证和授予用户相应系统权限来保证;

表级、列级、行级的安全性通过授予或回收对象权限保证。支持集中式、分布式、跨平台应用。

➢Oracle系统通常设置两级安全管理员:

全局级:负责管理、协调,维护全局数据一致性和安全性;

场地级:负责本结点数据库安全性,用户管理、系统特权与角色管理。

1 .用户与资源管理

➢按权限大小划分为DBA用户和普通用户。

  • DBA用户由DBMS自动创建,sys与system用户,拥有全部系统特权。

  • 普通用户:由DBA用户或有相应特权的用户创建,并授予系统特权。

➢建立用户

  • CREATE USER use1 IDENTIFIED BY 123456

  • DEFAULT TABLESPACE student (存储在student表空间)

  • QUOTA 5M ON student (限制使用空间为5M)

➢管理用户和资源

  • DBA特权用户可以改变个用户资源使用限额、密码、登录次数等


ALTER USER use1 
QUOTA 60M ON student(限制使用空间为60MB) 
ALTER USER use1 IDENTIFIED BY 12345678

➢删除用户


DROP USER 
DROP USER user1 CASCADE(删除用户及其所拥有的全部对象)

2. 权限管理

➢(1)系统特权

  • 三种默认特权:

  • Connect:不能建立任何对象,可以查询数据字典及访问数据库对象。

  • Recource:可建立数据库对象(表、视图、索......)

  • DBA:拥有预定义的全部权限。

➢(2)对象特权

  • 用于维护表级、行级、列级数据的安全性。

  • 实例:


GRANT all ON dep TO user1 
GRANT select(tno,tname,sal) ON teacher TO user2

十二、数据库运行维护与优化

第一节 数据库运行维护基本工作

DBAS 进入运行维护阶段的主要任务:

  • 保证数据库系统安全、可靠且高效率地运行。

  • 数据库地运行除了DBMS与数据库外,还需要各种系统部件协同工作。

  • 首先必须有各种相应地应用程序。

  • 其次各应用程序与DBMS都需要在操作系统(OS)支持下工作。

维护工作包括

  • 数据库转储与恢复

  • 数据库安全性、完整性控制

  • 检测并改善数据库性能

  • 数据库的重组和重构

重组不修改数据库原有设计的逻辑结构和物理结构

重构部分修改模式和内模式

第二节 运行状态监控与分析

数据库的监控分析:指管理员借助工具检测DBMS的运行情况,掌握系统当前或以往的负荷、配置、应用等信息,并分析检测数据的性能参数和环境信息,评估DBMS的整体运行状态。

根据监控分析实现不同,分为:

  • 数据库系统建立的自动监控机制

  • 由DBMS自动监控数据库的运行情况

  • 管理员手动实施的监控机制

根据监控对象不同,分为:

  • 数据库架构体系的监控

  • 监控空间基本信息、空间使用率与剩余空间大小等

  • 数据库性能监控

  • 监控数据库缓冲区命中率、库缓冲、用户锁、索引使用、等待事件等。

第三节 数据库存储空间管理

对数据库使用空间进行管理是一项非常重要的工作。

空间使用情况变化带来的问题:

降低数据库系统服务性能

空间溢出导致灾难停机事故

数据的存储结构分为:

逻辑存储结构

物理存储结构

SQL Server数据库中一个逻辑上的数据库直接和一组物理上的数据文件对应,没有表空间概念。

DBMS对空间的管理包括:

  • 创建数据库空间、

  • 更改空间大小

  • 删除空间

  • 修改空间状态

  • 新建、移动、关联数据文件等。

第四节 数据库性能优化

数据库性能优化是DBMS系统上线后最常见的运行维护任务之一。

进行数据库性能优化时, 首先要确定优化目标,一般从数据库运行环境、参数调整·、模式调整、数据库存储优化、查询优化几个方面考虑。

  1. 数据库运行环境与参数调整

  • 一般来说,可以从外部环境、调整内存分配、调整资源竞争等几个方面着手改变数据库参数,提高其性能。

  • 外部环境: 数据库性能和外部环境有很大关系,主要外部条件包括CPU(CPU的处理能力是衡量计算机性能的一个标志)、网络(大量的SQL数据在网络上传输会导致网速变慢).

  • CPU 使用情况判断依据: 对于一台数据库服务器,如业务空闲时使用率超过90%。说明服务器缺乏CPU资源,如高峰时CPU使用率依然低,说明服务器CPU资源充足。

  • 解决方案:增加CPU数量或者终止需要许多资源的进程。

  • 调整内存分配:调整相关参数控制数据库内存分配,很大程度改善数据库系统性能。

  • 调整磁盘I/O: 数据库性能优劣的重要度量是响应时间

  • 改善方法: 令I/O时间最小化,减少磁盘上文件竞争带来的瓶颈。

  • 调整资源竞争:

  • 修改参数以控制连接到数据库的最大进程数。

  • 减少调度进程的竞争

  • 减少多线程服务进程竞争

  • 减少重做日志缓冲区竞争

  • 减少回滚段竞争

2. 模式调整与优化

  • 数据库的规范化过程:高效率利用存储空间, 减少数据的冗余,减少数据的不一致性。

  • 问题: 规范化关系解决了数据维护的异常,并使数据冗余最小化,但会导致数据处理性能下降。

  • 反规范化: 将规范化关系转换为非规范化的关系的过程。

  • 反规范化方法: 增加派生性冗余列,增加冗余列、重新组表、分割表和新增汇总等方法。都会破坏数据完整性。

  • 采用反规范化技术从实际出发均衡利弊。

  • 增加派生性冗余列:

  • 增加的列由表中的一些数据项经过计算生成。

  • 作用:查询时减少连接操作,避免使用聚合函数。

  • 例如: 销售单据明细表(单据编号,商品编号,单价,数量,总价),总价=单价*数量,属于派生性增加冗余列。

  • 增加冗余列

  • 在多个表中增加具有相同语义的列,常用来在查询时避免连接操作。(外码不属于这种情况)

  • 重新组表

  • 当用户经常查看的某些数据是由多个表连接之后才能得到,就可以考虑先把这些数据重新组成一个表,这样在查询时会减少连接提高效率。

  • 分割表(重点)

  • 水平分割: 根据行的使用特点进行分割,分割之后所有表的结构都相同。而存储的数据不同。使用并(Union)操作。

  • 垂直分割: 根据列的特点分割,分割后所得表除了都包含主码外其他列都不相同。通常将常用列与不常用列分别放在不同表中,查询减少I/O次数, 缺点是使用连接(Join)操作。

  • 新增汇总表

  • 大量执行报表等汇总操作会影响性能。

  • 为降低总操作的时间, 将频繁使用的统计中间结果或最终结果存储在汇总表中,从而降低数据访问量和汇总操作的CPU计算量。

3. 存储优化

  • (1)物化视图(索引视图)

  • 定义:包括一个查询结果的数据库对象,是预先计算并保存表连接或聚集等耗时较多的操作结果。(一个定期刷新数据的视图,自动刷新或人工刷新)

  • 合适于多个数据量较大的表进行连接操作及分布式数据库中在多站点的表进行连接时使用。

  • 物化视图还可以远程数据的本地复制(物化视图的存储也成为快照),用于实施数据库间的同步。

  • (2)聚集

  • 聚集是物理存储表中数据的可选择的方法。

  • 一个聚集是一组表,将经常一起使用的具有同一公共列值多个表中的数据行存储在一起,由公共列构成聚集码。

  • 作用:最小化必须执行的I/O次数。

  • 注意:将记录插入聚集的表之前,必须建立聚集索引,且按聚集码进行索引;对于聚集中的多个表,聚集值只存储一次。

  • 劣势: 聚集表的插入、更新、删除性能差,具体使用要衡量。

4.查询优化

效率低下的SQL语句常常是系统效率不佳的主要原因。常用优化方法如下:

  • (1) 合理使用索引

  • 权衡:索引提高查询效率,索引增加系统开销。

  • 建立索引原则:

  1. 是否为一个属性间索引:该属性是码或存在某个查询中被使用

  1. 在某些竖向建立索引:若一个关系的多个属性共同新出现在若干个查询中每一班会采用多属性索引

  1. 是够建立聚簇索引:聚簇缩影适合范围查询,可建立多属性索引。优点体现在数据记录存取过程中

  1. 使用散列还是树索引: 散列索引适合等值查询,关系数据库多使用B+索引,支持作为搜索吗的属性上的等值查询和范围查询

  • 索引使用原则

  1. 经常在查询中作为条件被使用的列,应为建立索引。

  1. 频繁进行排序或分组的列,应为其建立索引

  1. 一个列的值域很大是,应为其建立索引

  1. 如果待排列有多个,建符合索引

  1. 可以使用系统工具类检查完整性,必要时进行修复,当数据表更新大量数据后,删除并重建索引以提高查询

  • 索引建立完成后,运行期间还需调优。调优的目的:动态的评估需求

  • 索引调整和修改的原因:

  1. 由于缺少,某些查询语句执行时间过长

  1. 某些索引自始自终没有使用,却占用较多磁盘

  1. 某些索引建立在被频繁改变的属性上,导致系统开销过大

  • (2) 避免或简化排序

  • ORED BY 和 GROUP BY 语句的执行设计排序,磁盘排序开销很大,应利用索引自动以适当的次序输出

  • 影响优化器因素:

  1. 由于索引不足,导致排序索引中不包括一个或几个待排序的列

  1. Group by 和 order by 字句中列的次序与索引次序不一致

  1. 排列的列来自不同的表

  1. 为避免不必要的排序,要正确地增建索引,合理合并数据库表,如排序不可避免,则简化它,如缩小排序例的范围

  • (3) 消除对大型表数据的顺序存取

  • 嵌套查询,对表的顺序存取严重影响查询效率

  • 优化方法:对连接列进行索引,或使用并集来避免顺序存取

  • (4) 避免复杂的正则表达式

  • 原因:消耗较多CPU 资源进行字符匹配

  • (5) 使用临时表加速查询

  • 将表的一个子集进行排序并创建临时表

  • (6) 用排序来取代非顺序词磁盘存取

  • 原因:非顺序磁盘存取最慢,使用以数据库排序功能以基础的SQL 替代非顺序存取

  • (7) 不充分的连接条件

  • 原因:左(右)外连接包含于null 数据匹配,相比内连接,代价可能更高

  • (8) 存储过程

  • 尽量使用自带返回参数,而非自定义返回参数,减少不必要参数,避免数据冗余

  • (9) 不要随意使用游标

  • 游标占用较多的系统资源,尤其是大规模并发情况下,很容易使得系统资源耗尽而崩溃

  • (10) 事务处理

  • 一旦将多个处理放入事务,会降低系统处理速度,将频繁操作的多个可分割的处理过程放入多个存储过程中,这样就大大提高系统响应速度

5. SQL Server 性能工具

  • SQL Server profile

  • 用来监视SQL Server 事件的多用途监控工具(性能,存储过程,T-SQL 语句运行等监控)。结果存储在一个跟踪文件中,可通过分析文件诊断问题

  • 数据库引擎优化顾问

  • 测试数据库工作负荷(一组在数据库中执行的T-SQL语句),给出优化建议

十三、故障管理

第一节 故障管理概述

  1. 故障类型及其解决方案

➢ DBMS中常见的4类故障:

事务内部故障

系统故障

介质故障

计算机病毒故障

➢ 事务内部故障

事务故障导致数据不一致,分为预期的(大部分)和非预期的。

  • 预期的事务内部故障

  • 可通过事务过程本身发现的。解决办法: 事务回滚

  • 非预期的事务内部故障

  • 不能由事务程序处理的故障,如运算溢出等。

  • 事务故障的恢复由系统自动完成。

➢系统故障

  • 又称软故障,运行期间,由于硬件故障、数据库软件及OS漏洞、突然断电等故障,导致数据不一致。

  • 解决办法: 重启后,撤销(UNDO)所有未提交的事务;重做(REDO)所有已提交的事务;

➢介质故障

  • 又称硬故障,运行期间由于磁头碰撞、磁盘损失、强磁干扰、天灾人祸等,使得数据丢失的一类故障。导致物理存储设计损坏,数据文件及数据全部丢失,破坏性最大。

  • 容错策略:软件容错及硬件容错。

  • ➢软件容错:

  • 使用数据库备份及事务日志文件, 通过恢复技术,恢复数据库到备份结束时的状态。若故障导致事务日志文件丢失,则不能完全恢复。

  • ➢硬件容错:

  • 一种方案是使用双物理存储设备,如双硬盘镜像。缺点:自然灾害或机房水灾导致双硬盘同时损坏,则失去保护作用。

  • 另一种方案是设计两套相同的数据库系统,通过数据库软件机制,同时变化数据。

➢计算机病毒故障

  • 病毒是恶意的计算机程序,破坏OS及数据库系统(破坏数据文件为主)。

  • 解决方法:防火墙、杀毒软件、数据库备份文件。

  1. 数据库恢复技术概述

无论那种故障, 恢复的基本原理是冗余

数据库恢复:把数据库从错误状态恢复到某一已知的正确状态。

在DBMS中,数据库恢复子系统占10%以上

恢复机制涉及两个问题:如何建立冗余数据; 如何利用这些冗余数据实施数据库恢复。

➢ 建立冗余的技术:

  • 数据备份、登记日志文件、数据库复制、数据库镜像、为段设立保存点以及使用后备段与现行页表来支持对段的保存等。

  • 最常用的是数据备份和等级日志文件。

第二节 数据转储

➢ 数据转储即数据备份

指DBA或DBMS定期复制数据库,并将其存放到其他介质的过程。

这些保存的副本被称为后援副本或后备副本。

1. 静态转储和动态转储

  • 静态转储:期间系统不能运行其他事务,不允许任何存取、修改活动。

  • 静态转储保证数据的一致性,但降低了数据库的可用性。转储和事务是互斥的。

  • 动态转储:即允许转储和事务并发执行。

  • 动态转储不能保证转储数据的一致性。

  • 动态转储+日志文件(记录转储期间各事务对数据库的修改活动记录):即保证数据一致性又提高了数据库的可用性。

2.数据转储机制

  • 完全转储: 对数据库中所有数据进行转储。占据较多时间和空间,但恢复时间短。

  • 增量转储:只复制上次转储后发生变化的文件或数据块。所需时间及空间短,但只能和完全转储配合才能对数据库进行恢复。

  • 差量转储: 对最近一次数据库完全转储以来发生的数据变化进行转储。

3.多种转储方法结合使用

仅使用完全转储: 占据时间和空间多,代价大。

完全转储+增量转储:恢复时间较长。

完全转储+差量转储:恢复时间短。

第三节 日志文件

1. 日志文件的概念

  • DBMS运行中,将所有事务的修改操作登记到日志文件。

  • 作用:事务故障恢复和系统故障恢复必须使用日志文件。

  • 在动态转储方式中必须建立日志文件

  • 在静态转储方式中也可使用日志文件。

2. 日志文件的格式与内容

两种格式:

  • 以记录为单位的日志文件

  • 需要记录的内容:

  • 各个事务的开始标记BEGIN TRANSAC TION

  • 各个事务的结束标记COMMIT OR ROLLBACK

  • 各个事务的所有更新操作

  • 以数据块为单位的日志文件

  • 日志记录的内容包括:

  • 事务标识和被更新的数据块

3. 登记日志文件的原则

  1. 登记的次序严格按并行事务执行的时间次序。

保证事务对数据库的操作的可再现性和正确性。

  1. 必须先写日志文件,后写数据库。

先后顺序导致必然性。

4. 检查点

检查点的作用:最大限度地减少数据完全恢复时必须执行的日志部分。

➢检查点的引入

在日志中增加检查点记录,增加个“重新开始文件”。

检查点记录的内容:建立检查点时刻正执行的事务清单;这些事务最近一个日志记录的地址。

重新开始文件记录的内容:各个检查点记录在日志中的地址。

➢基于检查点的恢复步骤

①从“重新开始文件”中找到最后个检查点记录在日志文件中的地址,从而找到最后一个检查点记录。

②由该检查点记录得到执行的事务清单ACTIVE_ LIST.

③从检查点开始正向扫描文件。

④对UNDO-LIST中的事务执行UNDO,对REDO-LIST中的事务执行REDO。

第四节 硬件容错方案

1. 概述

由于数据库运行的硬件故障、机房电力故障、机房自然灾害等,要求从硬件级别对DBMS进行保护。

从DBMS运行所需要的各种环境出发,分析支撑数据库系统运行的环节。

相关度最紧密的技术:数据库存储保护技术,服务器容错技术及数据库镜像与容灾技术。

2. 磁盘保护技术

➢RAID:廉价冗余磁盘阵列,多块磁盘构成的一个整体。

计算机三级数据库技术_第7张图片

RAID依靠冗余技术数据保护:

1.镜像冗余

即把所有的数据复制到其他设备。

额外开销大:更多的磁盘、控制器、电缆。

2.校验冗余

对成员磁盘的数据执行异或( XOR )操作,得到其校验值,并存放在另外的校验盘上。

实现复杂,但比镜像冗余占据的空间小。

➢RAID根据所采用的方法不同,分为RAID-0,RAID-1 , RAID-1E , RAID-5 , RAID-6,RAID-7 , RAID-10,RAID-50 , RAID- 60.

  • RAID-0:将多个磁盘分割成块,并将数据块按顺序依次存储到各个磁盘上,以提高数据读写速度。RAID-0不提供冗余功能,一块磁盘发生故障将导致所有数据丢失。

  • RAID-1:两组以上的N个磁盘相互作镜像,在一些多线程操作系统中能有很好的读取速度,理论上读取速度等于硬盘数量的倍数,另外写入速度有微小的降低。只要一个磁盘正常即可维持运作 ,可靠性最高。

  • RAID-5:RAID Level 5是一种储存性能、 数据安全和存储成本兼顾的存储解决方案。它使用的是Disk Striping(硬盘分区)技术。RAID 5至少需要三颗硬盘,RAID 5不是对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。

  • RAID-10:RAIDO与RAID-1的组合体,继承了前者的快速,后者的安全。RAID-10冗余度为50%。

3. 服务器容错技术

➢引入服务器容错原因

解决服务器硬件异常问题。

➢服务器容错技术简介

采用两台相同的服务器,共享存储设备。(双机热备,Active -Standby)

两台服务器之间会有私有网络进行心跳检测。

➢服务器接管过程

计算机三级数据库技术_第8张图片

➢其他服务器容错技术

硬件级别:自行设计制造的专用软硬件架构。

软件级别:专门的服务器级别容错技术,如Oracle提供了RAC架构。

4. 数据库镜像与数据库容灾

➢引入数据库镜像原因

前面几种恢复技术都必须及时正确地转储数据库。

➢数据库镜像简介

  • 是一种用于提高数据库可用性的解决方案,它根据DBA的要求,自动把整个数据库或关键数据复制到另一个磁盘上。

➢数据库镜像分类

  • 双机互备援模式

  • 两台机器均为工作机。正常状况下均为系统提供支持,互相监视对方的运行情况。

  • 双机热备份模式

  • 一台为工作机,一台为备份机。工作机为系统提供支持,备份机监视工作机的运行情况。

➢工作方式

  • "数据库镜像会话”中,主体服务器和镜像服务器作为“伙伴”进行通信和协作。在会话中扮演互补角色。一旦出现故障,使用“角色切换”过程来互换主体服务器和镜像服务器。

5. SQL Server数据库镜像简介

  • SQL Server数据库镜像是将数据库事务处理从一个SQL Server数据库移到不同的SQL Server数据库。

  • 镜像的复制是一个备用的复制,不能直接访问,只用来进行错误恢复。

  • "见证服务器”使镜像服务器自动识别。

  • 两种运行模式:“高安全性模式“及运行模式。

SQL Server数据库镜像提供三种实现方式:

  1. 高可用性。两台服务器同步事务写入,支持自动错误恢复。

  1. 高保护性。两台服务器同步事务写入,手工错误恢复。

  1. 高性能。两台服务器写入不同步,手工错误恢复。

十四、备份与恢复数据库

第一节 备份与恢复的概念

1. 备份数据库

数据备份的原因:

  • 防止数据丢失(存储介质故障、用户的操作错误、服务器故障、病毒侵害、自然灾害),一旦出现问题,能够根据备份进行恢复。

  • 数据转移的一种方式。(将数据库从一台服务器复制到另一台服务器、 设置数据库镜像、文件归档和灾难恢复)

2. 恢复数据库

  • 恢复数据库指数据库系统出现故障时,利用备份副本将数据库恢复到某个正确、一致的状态的过程。

  • 两种类型:介质故障恢复、非介质故障恢复

第二节 SQL Server的备份与恢复机制

1. 恢复模式

恢复模式是一个数据库属性,它用于控制数据库备份和还原操作的基本行为。

恢复模式决定备份类型和还原方案。备份类型决定数据库备份的内容。

三种恢复模式:简单恢复模式、完整恢复模式、大容量日志恢复模式

  • 简单恢复模式:

  • 此模式简略地记录大多数事务,不备份事务日志。所记录的信息只是为了确保在系统崩溃或还原数据备份之后数据库的一致性。

  • 完整恢复模式:

  • 此模式完整地记录了所有的事务,并保留所有的事务日志记录,直到将它们备份

  • 大容量日志恢复模式:

  • 此模式简略地记录大多数大容量操作(例如索引创建和大容量加载), 完整地记录其他事务。大容量日志恢复模式提高了大容量操作的性能,常用作完整恢复模式的补充。

2. 备份内容及时间

备份内容:

  • 用户数据库

  • 系统数据库

备份时间

  • 系统数据库:修改之后进行备份

  • 用户数据库:周期性备份

进行下列操作后,立刻进行备份:

  • 创建数据库之后,或批量加载数据之后。

  • 创建索引之后。

  • 执行清理事务日志的操作之后。

  • 执行大容量数据操作之后。

3. SQL Server的备份机制

(1)备份设备

SQL Server将备份数据库的场所称为备份设备。

支持将数据库备份到磁带或磁盘上。

备份设备类型:

  • 永久备份设备:在备份之前需要先建立。

  • 临时备份设备:不需要预先建立,在备份时将数据库直接备份到物理文件上。

使用系统存储过程创建备份设备:

sp_addumpdevice

[ @devtype = ] 'device_ type',

[ @logicalname = ] 'logical name',

[ @physicalname = ] 'physical name'

其中,device_type表示设备类型,其值可为disk和tape。logical_name表示设备的逻辑名称。physical_name表示设备的实际名称。

例:创建一个名为MYDISKDUMP的磁盘备份设备,其物理名称为D:\Dump1.bak。

EXEC sp_addumpdevice 'disk', 'mydiskdump', 'D:\dump1 bak'

(2)备份类型

  • 1)数据库备份

  • 完整数据库备份

  • 差异数据库备份

  • 2)文件备份

  • 文件备份

  • 差异文件备份

  • 3)事务日志备份

完整数据库备份(也称完全转储)

  • 完整备份将备份整个数据库,包括事务日志部分(以便可以恢复整个备份)。完整备份代表备份完成时的数据库。

  • 是恢复的基线

  • 备份数据文件、数据库对象和数据的信息

  • 备份备份过程中发生的活动

  • 备份末提交的事务到日志

差异数据库备份(也称差异转储)

  • 备份从上次完整备份之后数据的改变

  • 备份差异备份过程中发生的活动

  • 备份未提交的事务到日志

  • 比完整备份节约时间

  • 以前次完整备份为基准点(成为差异基准)。

  • 在还原差异备份前,应先还原最新的完整备份,再还原基于该完整备份的最新差异备份。

文件备份

  • 可以分别备份和还原数据库中的文件。使用文件备份使用户可以仅还原已损坏的文件,而不必还原数据库的其余部分,从而提高恢复速度

差异文件备份

  • 创建文件或文件组的完整备份后,可以基于该完整备份创建一系列的差异备份。

  • 差异文件备份只捕获自上一次文件备份以来更改的数据。

事务日志备份

  • 备份从上次日志备份之后的日志记录备份完成后要截断日志

  • 事务日志备份仅用于完整恢复模式或大容量日志恢复模式

  • 三种类型的事务日志备份:纯日志备份,大容量操作日志备份,结尾日志备份。

(3)常用备份策略

完整备份

完整备份+日志备份

完整备份+差异备份+日志备份

完整备份:

  • 适合于数据库数据不是很大,而且数据更改不是很频繁的情况。

  • 完整备份一般可以几天进行次或几周进行一次。

  • 当对数据库数据的修改次数不是很频繁,而且允许一定量的数据丢失时,可以选择只用完整备份策略。

  • 完整备份包括了对数据和日志的备份。

完全备份+日志备份:

  • 如果不允许丢失太多的数据,而且又不希望经常地进行完全备份(因为完全备份进行的时间比较长),则可以在完全备份中间加些日志备份。

  • 例如,可以每天0:00点进行一次完全备份 ,然后每隔几小时进行次日志备份。

完全备份+差异备份+日志备份:

  • 完全备份加差异备份和日志备份的策略,即在完全备份中间加一些差异备份,在差异备份中间加一些日志备份。

  • 比如每周周日0:00进行次完全备份,然后每天0:00进行次差异备份,然后再在两次差异备份之间增加一些日志备份。

  • 这种策略的好处是备份和恢复的速度都比较快,而且当系统出现故障时,丢失的数据也比较少。

(4)实现备份

使用SQL Server管理平台

使用T-SQL语句

示例1:对“Students”理数据库进行一次完全备份,并备份到MyBK_1备份设备上(假设此备份设备已创建好)。


BACKUP DATABASE students TO MyBK_1

示例2:对"pubs"数据库进行一次完全备份,备份到MyBK_1备份设备上,并覆盖掉该备份设备上已有的内容。


BACKUP DATABASE pubs 
TO MyBK_1 WITH INIT

示例3:对“pubs”进行次事务日志备份,并以追加的方式备份到MyBKLog1备份设备上。


BACKUP LOG pubs 
TO MyBKLog1

4. SQL Server的恢复机制

SQL Server支持在以下级别恢复(还原)数据:

  • 数据库(数据库完整还原)

  • 数据文件(文件还原)

还原的顺序:

  1. 恢复最近的完全备份;

  1. 恢复最近的差异备份(如有);

  1. 恢复自差异备份之后的所有日志备份(按备份的先后顺序)。

  1. 恢复数据库。

实现还原:

  • 使用SQL Server管理平台

  • 使用T-SQL语句

示例:假设已对pubs数据库进行了完全备份,并备份到MyBK_1备份设备上,假设此备份设备只含有对pubs数据库的完全备份。则恢复pubs数据库的语句为:


RESTORE DATABASE pubs 
FROM MyBK_1 
RESTORE DATABASE Students 
FROM MyBK_2 
WITH FILE=1, 
NORECOVERY RESTORE DATABASE Students 
FROM MyBK_2 WITH FILE=2, 
NORECOVERY RESTORE LOG Students 
FROM MyBKLog1

第三节 Oracle的备份与恢复机制

1. Oracle数据库逻辑备份与恢复

Oracle数据库常见的故障类型:

  • 内部恢复机制自动处理:

  • SQL语句错误

  • 进程失效

  • 实例失效

  • 网络失效

  • 利用备份数据恢复:

  • 用户错误

  • 介质失效

逻辑备份:

  • 指通过工具将数据库中的数据转换成专用或通用格式的文件,保存在文件系统中。

工具:

  • EXP/IMP

  • EXPDP/IMPDP

2. Oracle数据库物理备份与恢复

物理备份:

  • 指对数据物理文件所实施的备份。

物理备份管理方式:

  • 用户管理的备份

  • Recover Manager(RMAN)备份

  • 第三方备份软件

恢复数据库两个过程:

  • Restore:从备份数据中找到完整备份文件,恢复完整文件的过程。

  • Recover:将日志和增量备份的改变应用到数据文件,使数据文件恢复到指定时间点上的过程。

十五、大规模数据库架构

第一节 分布式数据库

1 分布式数据库系统概述

分布式数据库系统与分布式数据库的区别:

  • 分布式数据库系统——数据分布存储于若干场地,并且每个场地由独立于其它场地的DBMS进行数据管理。物理上分散、逻辑上集中的数据库系统。

  • 分布式数据库——分布式数据库系统中各场地上数据库的逻辑集合。

2 分布式数据库目标与数据分布策略

分布式数据库目标:

  • 12个目标:

  • 本地自治、非集中式管理、高可用性。( 最基本特征)

  • 位置独立性、数据分片独立性、数据复制独立性。(分布透明性)

  • 分布式查询、事务管理。(复杂性)

  • 硬件独立性、操作系统独立性、网络独立性、数据库管理系统独立性。

数据分布策略:

  • 从数据分片和数据分配考虑

数据分片(对关系操作)

  • 按定规则将某个全局关系划分为多个片断。四种基本方法:

  • 水平分片——每个分片是原始关系所有数据行的子集合。

  • 垂直分片——每个分片是原始关系所有数据列的子集合。

  • 导出分片——导出水平分片。

  • 混合分片——以上三种的混合。

数据分配(对分片结果操作)

  • 将分片产生的片断分配存储在各个场地上。解决数据分配的方法:

  • 集中式——所有数据片断安排在一个场地上。

  • 分割式——所有全局数据有且只有一份,分割成若干被分配在特定场地上的片断。

  • 全复制式——全局数据有多个副本,每个上有一个完整的数据副本。

  • 混合式——介于分割与全复制式之间。

3 分布式数据库系统的体系结构

计算机三级数据库技术_第9张图片

分布透明性

  • 分片透明性。用户无需考虑数据分片。

  • 位置透明性。用户只需考虑数据分片情况,无需考虑数据分片位置。

  • 局部数据模型透明性。用户既要了解全局数据的分片情况,还要了解各片断的副本复制情况及位置分配情况。

计算机三级数据库技术_第10张图片

GDBMS全局数据库管理系统

GDD全局数据字典

LDBMS局部数据库管理系统

CM通信管理

4 分布式数据库的相关技术

分布式查询

  • 用户与分布式数库系统的接口。分布式查询优化需考虑:

  • ①操作执行的顺序。

  • ②操作的执行算法(连接操作和并操作)。

  • ③不同场地间的数据流动的顺序。

分布式事务管理

  • ①恢复控制:基于两阶段的提交协议。

  • ②并发控制: 基于封锁协议。

第二节 并行数据库

1 并行数据库概述

  • 并行数据库系统——通过并行实现各种数据操作,如数据载入、索引建立、数据查询等,可以提高系统的性能。

  • 优势:增强的可用性:当存储某个关系的场地系统崩溃时,可继续使用存储在别的场地的副本。

2 并行数据库系统结构

实现并行DBMS的三种硬件结构:

(1)共享内存系统(Shared Memory):多个cpu通过连接网络进行通信,并能访问公共的主存。

随着CPU增加,造成内存冲突。

计算机三级数据库技术_第11张图片

(2)共享磁盘系统(Shared Disk):每个cpu拥有自的私有内存,并通过连接网络直接访问所有磁盘。

通过网络实现CPU之间的数据交换,增加了通信代价。

计算机三级数据库技术_第12张图片

(3)无共享资源系统(Shared Nothing):每个cpu拥有自己的内存和磁盘空间,并无公共区域,cpu之间所有通信通过连接网络来完成。

存在通信代价,非本地磁盘访问代价高。

计算机三级数据库技术_第13张图片

(4)层次结构(Hierachical):前三种体系的结合。分为两层,顶层是无共享结构,底层是共享内存或共享磁盘结构。

集成了以上三种结构的优缺点

计算机三级数据库技术_第14张图片

3 数据划分与并行算法

一维数据划分:将大数据集水平划分到多个磁盘上,可以通过并行读写有效地利用多磁盘的I/O带宽。

  • (1)轮转法——如果系统有n个cpu,将第i条记录划分到第i mod n处理器的方法称为轮转划分方法。

  • (2)散列法使用特定的哈希函数,作用于选定的属性,将记录划分到不同的处理机。

  • (3)范围划分法——首先对记录进行排序,然后按照排序码将其划分成n个区域,使每个区域中近似含有相同数目的记录,处于第i个区域的记录分布于处理机i。

优势劣势:

  • (1)轮转法可有效应用于需要访问整个关系的查询处理,当需要访问部分记录时,散列法和范围更优。

  • (2)范围法可能会导致数据偏斜,也就是不同分片含有的记录数目差别很大。数据偏斜会造成存有大片数据分片的处理机的性能瓶颈问题。

  • (3)散列法优点是:即使数据随时间增加或减少,也能保持均匀分布。

多维数据划分:

CMD多维划分法

BERD多维划分法

MAGIC多维划分法。

并行算法:

(1)并行排序:

  1. 用区域划分法先将关系的所有记录重新分布再进行排序。

  1. 每个cpu使用排序算法对分配给它的记录排序。每个处理机得到分配给它的所有记录的有序序列。

  1. 通过按照区域划分的对应次序访问处理机得到完整的有序关系。

难点:如何进行区域划分来使得每个处理机分布的记录数目近似相等。否则,对具有大量记录的处理机排序时将产生性能瓶颈,从而限制并行排序的可扩展性。

(2)并行连接:

假设:对关系A和B进行划分时,连接属性为age,关系初始分布在若干磁盘上,但不是基于连接属性分布的。

方法:对关系A和B重新划分:把连接属性age的取值分成k个区域

缺点:产生由对数据偏斜不同分片的记录数目差别很大

第三节 云计算数据库架构

1 云计算概述

云计算是一种商业计算模型。它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。

计算机三级数据库技术_第15张图片

云计算服务类型:

计算机三级数据库技术_第16张图片

云(cloud) :即云计算提供商的数据中心的软硬件设施。

云分为:

  • 公共云:以即用即付的方式提供给公众。

  • 私有云:不对公众开放的云。

  • 混合云

2 云数据库体系结构

云数据库(CloudDB,简称云库):云+数据库。

目前主要的云计算平台:

  • AWS(Amazon Web Services)

  • GAE(Google AppEngine)

  • Hadoop

云计算技术体系结构

计算机三级数据库技术_第17张图片

谷歌云计算基础架构模式(4个子系统)

  • Google File System文件系统

  • Map/Reduce分布式编程环境

  • Chubby分布式锁机制

  • BigTable大规模分布式数据库

3 云数据库与传统数据库比较

云数据库的缺点:

  • 数据安全问题

  • 对云的管理问题

  • 对因特网的依赖

第四节 XML数据库

1 XML数据库概述

XML,eXtensible Markup Language.可扩展标识语言。

XML数据库——支持对XML文档格式进行存储和查询等操作的数据库管理系统。

三种类型的XML数据库:

  • XML Enabled Database(XEDB)——能处理XML的数据库。

  • Native XML Database(NXD) )——纯XML数据库。

  • Hybird XML Database(HXD)——混合XML数据库。

与传统数据库比较, XML数据库的优势:

  • 能够对半结构化数据进行处理。

  • 提供对标签和路径的操作。

  • 能清晰地表达数据的层次特征。

2 SQL Server 2008 与 XML

SQL Server中的XML语句:

FOR XML:将返回结果变为XML格式。


示例:
SELECR * FROM Table_cus 
WHERE ... FOR XML RAW

SQL Server中的XML数据类型:

XML类型的字段


示例:
CREATE TABLE_info 
{ cid int, Content xml }

十五、数据仓库与数据挖掘

第一节 决策支持系统的发展

➢如何利用日益增长的数据为企业的管理和决策服务?

经过研究和实践产生了数据仓库和数据挖掘技术。

1 决策支持系统及其演化

➢一般将数据分为:

  • 分析型数据

  • 操作型数据:由企业的基本业务系统产生的数据,用于联机处理环境(OLTP)。

➢决策支持系统(DSS):

  • 综合利用大量数据,有机组合众多模型(数学模型和数据处理模型),通过人机交互,辅助各级决策者实现科学决策的系统。

➢Keen和Scott Morton于70年代中期首次提出了"决策支持系统”(Decision Support System,简称DSS)一词,标志着利用计算机与信息支持决策的研究与应用进入了个新的阶段,并形成 了决策支持系统新学科。

➢20世纪80年代,个人计算机和第四代编程语言的出现,使得最终用户可以对数据和系统直接控制,很多管理息系统(MIS)开始出现,用以支持企业管理决策。被用户和开发人员改称为决策支持系统,即DSS。

➢传统的DSS一般建立在OLTP环境下。

➢演化过程进行到抽取程序阶段

  • 大型OLTP出现后,使用抽取程序解决性能和历史数据问题

  • 用抽取程序能将数据从高性能联机事务处理方式中转移出来,所以,在需要总体分析数据时就与OLTP处理性能不发生冲突。

➢自然演化体系结构——贯穿于公司或组织时抽取处理模式很常见,这种由失控的抽取过程产生的结构被称为"自然演化体系结构"。

➢自然演化体系结构的问题

  • 忙碌的IT人员

  • 蜘蛛网问题

  • 数据缺乏可信性

  • 生产率问题

  • 从数据到信息的转换的不可行性

➢数据仓库的产生:为决策者建立一个集成的数据源——数据仓库

2 基于数据仓库的决策支持系统

操作型系统

数据仓库是核心,操作型系统是数据源,决策支持系统是数据的需求者。

第二节 数据仓库技术概述

1 数据仓库的概念与特性

➢建立数据仓库的目的:根据决策需求对企业的数据采取适当的手段进行集成,形成个综合的、面向分析的数据环境,用于支持企业的信息型、决策型的分析应用。

➢数据仓库的特性:面向主题性、集成性、不可更新性和时间特性等。

➢主题与面向主题

  • 数据仓库中的数据是以面向主题的方式进行组织的。

  • 主题也称为分析主题或分析领域,用于表示某一宏观的分析领域所涉及的对象,以及与对象有关的数据集合。

  • 目前,数据仓库主题数据的实现采用关系型数据库技术。

➢数据仓库的其他特征

  • 集成:数据仓库最重要的特性。分为数据抽取、转换、清理(过滤)和装载4项任务。

  • 不可更新:数据仓库中的数据以批量方式处理,不进行一般意义 上的数据更新。

  • 随时间变化:不断捕捉数据。

2 数据仓库的体系结构与环境

➢从数据层次角度来看,典型的数据仓库的数据体系结构包括:操作型数据、操作型数据存储(Operation Data Store)、数据仓库(Data Warehouse)和数据集市( Data Mart)。也可以包括个体层数据。

➢从功能结构看,可分为数据处理、数据管理和数据应用三个层次。

3 数据仓库的数据组织

  • 粒度

数据仓库的数据单位中保存数据的细化或综合程度的级别。细化程度越高,粒度越小。

➢粒度影响到数据仓库的数据量及系统能回答的查询的类型。

➢进行数据仓库的数据组织时,应根据当前应用的需求进行多粒度级设计。满足多角度、多层次数据查询要求。

  • 数据分区(分割)

数据分散到各自的物理单元中去,它们能独立地处理。

➢最常见的是按照时间标准分区。

➢数据分区的方式可以分成系统层分区(数据库系统提供的机制)和应用层分区(由应用代码实现)两种。

➢如何分区由开发者和程序员控制。

  • 元数据

关于数据的数据,或叫描述数据的数据。用于构造、维持、管理、和使用数据仓库,在数据仓库中尤为重要。

➢元数据描述了数据的结构、内容、链和索引等内容。

➢在数据仓库中,元数据分成技术型元数据和业务型元数据。

➢元数据解决了人在何时何地为了什么原因及如如何使用数据仓库的问题。

  • Data Mart

数据集市--小型的,面向部门或工作组级数据仓库。

  • Operation Data Store

操作型数据存储——ODS是能支持企业日常的全局应用的数据集合,是不同于DB的一种新的数据环境,是DW扩展后得到的一个混合形式。四个基本特点:面向主题的(Subject -Oriented)、集成的、可变的、当前或接近当前的。

➢ODS分成4类:

  • ODS I:数据更新频率秒级。

  • ODS II:数据更新频率小时级。

  • ODSIII:数据更新频率天级。

  • ODSIV:根据数据来源方向和类型区分。

第三节 设计与建造数据仓库

1 数据仓库设计的需求与方法

计算机三级数据库技术_第18张图片

传统的系统开发生命周期是SDLC

计算机三级数据库技术_第19张图片

数据仓库环境的系统开发生命周期(CLDS)

➢SDLC是典型的需求驱动开发生命周期,CLDS是典型的数据驱动开发生命周期。

➢传统的系统开发生命周期支持操作型环境,为建立系统,必须首先理解需求,然后进入到设计和开发阶段。

➢CLDS由数据开始,一旦数据到手,就集成数据,然后,如果数据有偏差,就检验看看数据存在什么偏差,再针对数据写程序,分析程序执行结果,最后,系统需求才得到理解。

数据仓库是为了构建新的分析处理环境而出现的一种数据存储和组织技术,基本特征包括:数据是面向主题的、集成的、非易失的、随时间不断变化的。主题是一个在较高层次上对数据的抽象,这使得面向主题的数据组织可以独立于数据的处理逻辑,因而可以在这种数据环境上方便地开发新的分析型应用。

2 数据仓库的数据模型

➢数据仓库的数据模型分为概念( E-R图)、逻辑(关系型模型或多维数据模型)、物理三级数据模型。与普通数据库系统的数据模型不同:

①一般不包含纯操作型数据。

②一般需要扩充关键字结构,在其中加入时间属性。

③需要增加导出数据。

3 数据仓库设计步骤

➢数据仓库的设计过程分为:

概念模型设计、技术评估与环境准备工作、逻辑模型设计、物理模型设计、数据生成与应用实现、数据仓库运行与维护。

第四节 数据仓库的运行与维护

1 数据仓库数据的更新与维护

➢数据仓库维护的基本思路:

根据某种维护策略,在一定条件下触发维护操作;维护操作捕捉到数据源中的数据变化;通过一定策略对数据仓库中的数据进行相应的更新操作,以保持两者的致性。

➢维护策略

  • 实时维护

  • 在数据源发生变化时,立即更新。

  • 延时维护

  • 在数据仓库中的视图被查询时完成更新。

  • 快照维护

  • 定期对数据仓库进行维护,触发条件是时间。

➢捕捉数据源的变化

  • 当数据源发生变化时,告知数据仓库源数据发生变化的机制,就是源数据变化的监听及捕获问题。典型的方法有:

  • 触发器

  • 修改数据源应用程序

  • 通过日志文件

  • 快照比较法

➢导出数据的刷新

两种:

  • 根据维护对象的数据源对其进行重新计算。

  • 根据数据源的变化量在维护对象原有数据的基础上进行添加和修改,即增量式维护。

用户不可存取数据仓库时间的长短是衡量数据维护效率的重要指标。将维护分为“聚集"和"更新”两个部分。

2 数据仓库监控与元数据管理

➢数据仓库监控

对数据仓库的数据量、各种数据的使用率、用户和安全状况、网络通信情况、网络数据流量、数据源数据变化情况、集成和维护工具运行效率、查询响应时间、应用支持效率等进行必要的监控。

➢元数据管理

一般采用元数据库来存储和管理元数据。

第五节 联机分析处理与多维数据模型

1 OLAP简介

➢OLAP——联机分析处理或在线分析处理、

主要用于支持复杂的分析操作,侧重对决策人员和高层管理人员的决策支持。

➢OLAP工具一般具有快速、可分析和多维的特点。

2 多维分析的基本概念

➢维一——人们观察数据的角度。

➢数据的多维分析——针对数据仓库中以多维形式组织起来的数据,从多个角度、不同层次,采取各种数据分析技术,对数据进行剖析,以使用户能从多角度和不次观察和分析数据。

3 多维分析的基本操作

➢钻取与卷起

OLAP分析最基本的操作。钻取指对应于某一维逐步向更细节层方向观察数据,卷起则反之。

➢切片和切块

实现局部数据的显示。

➢旋转

改变个报告或页面显示的维方向,得到不同视角的数据。最简单的旋转就是数据交叉。

4 OLAP的实现方式

OLAP的实现方式有三种:

➢基于多维数据库的OLAP(MOLAP)

以多维数组为基本存储结构。

➢基于关系数据库的OLAP(ROLAP)

采用关系表表示和存储。(星形模式或雪花模式)

➢混合型的OLAP(HOLAP)

结合MOLAP与ROLAP。具有最好的查询性能。

➢数据挖掘(Data Mining)就是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。

➢数据源必须是真实的、大量的、含噪声的;发现的是用户感兴趣的知识;发现的知识要可接受、可理解、可运用。

第六节 数据挖掘技术

➢数据挖掘(Data Mining) -- 就是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。

➢数据源必须是真实地、大量的、含噪声的;发现的是用户感兴趣的知识;发现的知识要可接受、可理解、可运用。

1 数据挖掘步骤

数据挖掘作为知识发展的过程,分为三个阶段:

➢数据准备

三个子步骤:数据选取;数据预处理;数据变化。

➢数据挖掘

首先确定挖掘的任务,其次决定挖掘算法。

➢结果解释评估

剔除冗余或无关的模式。

常见的数据挖掘任务:

➢分类预测任务

常见的方法:决策树、神经网络、规则归纳、支持向量机、贝叶斯、粗糙集、回归分析、K最近邻等。

➢描述型任务

典型的方法:聚类、关联、分析等。

2 关联规则挖掘

“啤酒和尿布”

➢关联规则挖掘过程主要包含两个阶段:

第一阶段必须先从资料集合中找出所有的高频项目组(Frequent Itemsets) ,

第二阶段再由这些高频项目组中产生关联规则(Association Rules).

3 分类挖掘

➢分类挖掘方法——用于预测数据对象的离散类别。

一般分为两个步骤:

通过已知数据集,建立分类函数,构造分类器。

利用所获得的分类函数对未知类别标记的数据项进行分类操作。

4 聚类挖掘

➢聚类挖掘方法——用于对集中的数据进行分组,使得每组内的数据尽量相似而不同组间的数据尽可能不同。

➢聚类方法包括统计方法、机器学习方法、神经网络方法和面向数据库的方法等。

5 时间序列分析

➢时间序列——用时间排序的一组随机变量。

➢时间序列分析——又称为数据演变分析 ,描述行为随时间变化的对象的规律或趋势,并对其进行建模。

➢从不同角度可分为:一元时间序列和多元时间序列;等间隔时间序列和不等间隔时间序列;平稳时间序列和非平稳时间序列。

你可能感兴趣的:(数据库)