全国计算机三级数据库技术

全国计算机等级考试三级(数据库技术)

一:考试内容及要求

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

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

3.具备数据库系统安装、配置及数据库管理和维护的基本

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

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

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

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

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

二:题型及内容范围预测

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

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

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

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

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

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

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

考试系统使用说明

一、考试环境

1.硬件环境:PC兼容机,硬盘剩余10GB或以上

2.软件环境:操作系统:中文windows7 应用软件:SQL Server 2008

二、考试形式及考试时间

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

2.考试时间:120分钟

3.考试时间由系统自动进行及时,提前5分钟自动报警提醒考生存盘

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

三、分值

1.满分100分

2.题型有三种

  • 选择题 40分(30小题)
  • 应用题 30分(10小题)
  • 设计与应用题 30分(3小题)

第一章:数据库应用系统开发方法

内容概要:

1、掌握数据库的基本概念

2、了解软件工程与数据库技术

3、理解DBAS生命周期模型

3、应用案例解析

第一节:数据库的基本概念

1、数据

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

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

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

  4. 数据举例:学生记录(李明,男1994,湖南,计算机学院)

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

    • ​ 临时性数据

    • ​ 持久性数据

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

    • ​ 型:数据表示的类型,如整型、字符型

    • ​ 值:给出了符合给定型的值

2、数据库

​ 数据库——Database,简称DB

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

​ 按数据所提供的数据模型存放的

3、数据库系统

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

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

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

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

​ 组成:数据库(数据)数据库管理系统(软件)数据库管理人员(人员)硬件平台:计算机和网络 软件平台:操作系统、数据库系统开发工具、接口软件

4、数据库应用系统

​ 数据库应用系统——Database Application System,简称DBAS

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9nYW4h6U-1582357290406)(D:\计算机等级考三级数据库\1.png)]

第二节 :软件构成与数据库技术

1、软件工程:

​ 1968年北大西洋公约组织的工作会议上Firtz Bauer 首先提出”软件工程概念“,提出要用工程化的思想开发软件。从此,软件生产进入软件工程时代。

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

​ 软件工程由方法、工具和过程三部分组成——软件工程三要素

2、软件的生存周期:

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

3、数据库工程:

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

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

​ 典型的软件开发模型有:瀑布模型,快速原型模型,螺旋模型等。

第三节:DBAS的生命周期模型

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

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

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

1.规划与分析

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

​ 规划与分析的主要工作内容

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

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

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

    2.需求分析

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

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

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

    各种需求的主要工作:

    ​ 数据需求分析:描述用户需要组织的信息内容形成数据字典
    ​ 功能需求分析:描述系统做什么数据处理需求分析、业务规则需求分析
    ​ 性能需求分析:描述系统应当做到什么程度数据操作需要时间、系统吞吐量、硬件资源
    ​ 其他需求:存储需求、安全性需求、备份与恢复

3.系统设计

​ 如果需求分析阶段的任务是解决”干什么“的问题。那么系统设计阶段的任务是确定”怎么干“

​ 系统设计包括:

  • ​ 概念设计:数据库概念模型设计、系统总体设计
    ​ 逻辑设计:数据库逻辑结构设计、应用程序概念设计、数据库事务概要设计
    ​ 物理设计:数据库物理结构设计、数据库事务概念设计、应用程序详细设计

4.实现与部署

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

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

5.运行管理与维护

​ 主要包括日常维护、系统监控与分析、系统性能调整、系统进化升级等。这些工作主要由DBA负责

6.第一章例题分析:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aFx7xBno-1582357290407)(C:\Users\ADMINI~1\AppData\Local\Temp\1577623729954.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qbqSiGNK-1582357290407)(C:\Users\ADMINI~1\AppData\Local\Temp\1577623929051.png)]

第二章:需求分析

内容概要:

1、了解需求分析的概念及需求获取的方法

2、了解需求建模的方法

3、结构化分析案例-教材购销系统

第一节:需求分析

1.需求分析的概念和意义

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

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

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

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

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

软件功能复杂,需求的可变性,软件产品的不可见性

3.需求获取的方法

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

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

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

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

面谈(用户访谈):

  • ​ 准备访谈
    ​ 计划和安排访谈日程
    ​ 访谈开始和结束
    ​ 引导访谈
    ​ 访谈整理工作

实地考察

  • ​ 现场观察法
    ​ 询问法:直接访问、堵截访问、电话访问、邮局访问等。

问卷调查

​ 适合使用情况

  • 访问的个体太多
    ​ 需要回答容易确定的细节问题
    ​ 希望有详细的结果

    ​ 注意事项

      使用问卷表尽可能的简短
    
      估计回答问题需要时间,并在问卷表开头标明
    
      制定问题前,先确定你需要的答案
    

查阅资料

收集用户以下材料

  • 书面需求文档
  • 现在的业务操作流程机器改进意见文档
  • 现在使用的数据表和文件及其格式,并确定数据的来源

4.需求分析的过程

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

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

C、描述需求:需求、功能、信息、性能、环境、其他需求

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

第二节:需求分析方法

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

  • 结构化分析和建模方法

    如:DFD建模、IDEF建模

  • 面向对象分析和建模方法(第五章)

    如:UML用例建模

结构化分析的任务

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

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

​ 结构化分析的指导思想:抽象和分解是结构化分析的主要指导思想。

1.DFD需求建模方法

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

  • 数据流

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

  • 数据源(终点)

    代表系统之外的实体,可以是人、物或其他软件系统。

  • 对数据的加工(处理)

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

  • 数据存储

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

2.DFD建模过程

  • 具体建模过程及步骤:

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

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

    • (2)建立顶层DFD图

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

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

      中间层DFD,描述了某个过程的分解,而他的组成部分又要进一步分解

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

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

    • (5)检查确认DFD图

      5条规则

      检查确认DFD图的5条规则:

      • 父图中描述过的数据流必须在相应子图中出现
      • 一个处理至少需要一个输入流和输出流
      • 一个存储必定有流入的数据流和流出的数据流
      • 一个数据流至少有一端是处理框
      • 表达描述的信息是全面、完整、准确的一致的

3.IDEF0需求建模方法

  • IDEF方法:ICAM DFEinition Method,由美国空军发明,从IDEF0到DEF14(包括IDEF1X在内)共16套方法,每套方法都是通过建模程序来获取某个特定类型的信息。
  • 最常用的IDEF0~IDEF4:
    • IDEF0:描述系统功能及其相互关系;
    • IDEF1:系统信息及其数据之间的联系;
    • IDEF2:系统模拟,动态建模;
    • IDEF3:过程描述及获取方法;
    • IDEF4:面向对象设计

4.UML用例建模方法

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

5.第二章例题分析

  • 获取需求的主要方法包括:(问卷调查),(查阅资料),(面谈),(实地考察)
  • 在信息系统的需求分析中,目前广为使用的结构化分析与功能建模的方法主要有DFD、IDEF0其中,DFD建模方法也被称为过程建模和功能建模方法,其核心是(C)
    • A)数据 B)软件 C)数据流 D)分析过程
  • 下列不属于信息需求分析常用的建模方法是(A)
    • A)ER B)IDEF0 C) DFD D)UML

第三章:数据库结构设计

内容提要:

1.掌握数据库概念设计

2.掌握数据库逻辑设计

3.掌握数据库物理设计

第一节:数据库概念设计

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

一般分为

  • 数据库概念设计
  • 数据库逻辑设计
  • 数据库物理设计

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

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

  • 定义和描述应用领域设计的数据范围
  • 获取信息模型
  • 描述数据的属性特征
  • 描述数据之间的关系
  • 定义和描述数据的约束
  • 说明数据的安全性要求
  • 支持用户的各种数据处理需求
  • 保证信息模型能转化成数据库的逻辑结构(即数据库模式)。

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

  • 依据:

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

  • 结果:

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

  • 过程:

    (1)明确建模目标(概念覆盖范围)

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

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

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

    (5)确立实体集属性(属性描述一个实体集的特征和性质)

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

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

3.概念模型的设计

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

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

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

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

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

      客观存在并可相互区分的事物叫实体。如学生张三、计算机系、数据库概论

    • 实体集(Entity Set)

      同型实体的集合称为实体集。如全体学生

    • 属性(Attribute)

      实体所具有的某一特性。一个实体可以由若干个属性来刻画。每个属性取值范围称为域。例如,学生可有学号、姓名、年龄、系、年级组成。

    • 码(Key)键

      实体集中唯一标识每一个实体属性或属性组合。用来区别同一实体集中的不同实体的称作主码(主键)。一个实体集中任意两个实体在主码上的取值不能相同。如学号是学生实体的主码。

    • 联系(Relationship)

      描述实体之间的相互关系。如学生与老师间的授课关系,学生与学生间有班长关系。联系也可以又属性,如学生与课程之间有选课联系,每个选课联系都有一个成绩作为其属性。同类联系的集合称为联系集。

    实体间的联系有三类

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

    ​ 一对一联系(1:1)

    ​ 如:“系”与“系主任”(一个系只有一个系主任,一个系主任只负责管理一个系)

    ​ 一对多联系(1:n)

    ​ 如:“系”与“学生”(一个系招收若干学生,一个学生只属于一个系)

    ​ 多对多联系(m:n)

    ​ 如:“学生”与“课程”(一名学生可选修多门课程,每门课程可被多名学生选修)

    E-R模型的表示

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pSF29XKU-1582357290408)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1580200478627.png)]

​ E-R图示例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SkCc6pLx-1582357290409)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1580200466991.png)]

4.IEDF1X建模方法

  • IDEF1X与第二章中介绍的IDEF0是一个系列的建模工具。IDEF0是功能建模方法。IDEF1X是数据建模的方法

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

  • 建模目标:支持顾客管理、采购与库存观念里、人力资源管理、财务管理等多项业务活动
  • 定义实体集:顾客、会员卡、员工、收银台、销售单据、供应商、商品、采购入库单据。
  • 定义联系(难点):依据语义约束定义
  • 建立信息模型
  • 确认实体属性
  • 对信息模型进行集成与优化

第二节:数据库逻辑设计

1.逻辑设计的任务:

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ejLZQgFt-1582357290409)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1580200422307.png)]

  • 关系模型
  • 数据依赖
  • 候选码、主码、外码
  • 数据规范化
  • 范式
关系模型

​ 有三种主要的数据模型:层次模型、网状模型、关系模型。其中关系模型简单灵活,并有着坚实的理论基础,已成为当前最流行的数据模型。

​ 关系模型就是用二维表结构来表示实体与实体之间的联系的模型

​ 关系的描述称为关系模型。关系模型由五部分组成,即他的五个元组:R(U,D,DOM,F)

​ R:关系名 U:组成盖棺内西的属性名集合 D:属性组U中属性所来自的域 DOM:属性到域的映射

F:属性组U上的一组数据依赖

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

1.关系数据库设计的核心:关系模式的设计
2.关系模式的设计目标

​ 按照一定的原则及数量众多而又相互关联的数据中,构造出一组既能较好的反映现实世界,而又有良好的操作性能的关系模式。

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

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

3.数据依赖

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

​ 关系内部属性与属性之间的一种约束关系,是现实世界属性相互联系的抽象,数据的内在性质,语义的体现

完整约束的表现形式

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

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

4.数据依赖的类型

​ 函数依赖(Functional Dependency,FD)

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

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

​ 身份证号码一确定,则地址唯一确定,因此地址函数依赖身份证号码

​ 而姓名一确定,不一定确定地址。

​ 多值依赖(Multivalued Dependency,MD)

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

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

​ 完全依赖与部分函数依赖

​ 传递函数依赖

5.候选码、主码、外码

​ 我们已经知道,如果某属性组的值能唯一确定整个元组的值,则称该属性组为候选码或候选关键字。

​ 例如(学号,姓名,性别,年龄)中学号是关键字,(学号,姓名)不是关键字。性别不是关键字。候选码如果有多个,可以选其中一个作为主码(Primary key)。

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

​ 例如:在SC(Sno,Cno,Grade)中,Sno既不是码,但Sno是关系模型S(Sno.Sdept,Sage)的码,则Sno是关系模式SC的外码

6.数据规范化

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

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

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

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

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

  • 范式

    ​ 范式:关系模式满足的约束条件称为范式。根据满足规范化的程度不同,范式由低到高分为1NF,2NF,3NF,BCNF,4NF,5NF.

    ​ 1NF:如果关系模式R,其所有属性都是不可再分的基本数据项,则称R属于第一范式

    ​ 2NF: 如果关系模式R属于1NF,且每个非主属性完全函数依赖于主码,则称R属于第二范式 例:判断R(学号,姓名,年龄,课程,名称,成绩,学分)是否属于第二范式(否)

    ​ 3NF:如果关系模型R为2NF,且R中的每个非主属性不传递依赖于R的主码,则称关系R是属于第三范式 例:判断R(学号,姓名,年龄,所在学院,学院地点,学院电话)是否属于第三范式(否,传递依赖)。

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

设计逻辑结构分为三步:

- 将概念结构转化为一般的关系模型
  • 将转化来的关系模型向特定的DBMS支持下的数据模型转化

  • 对数据模型进行优化

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

数据库逻辑模型的产生

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

  • 一个实体转换成一个关系模式
  • 一个1:1联系也可以转化成一个独立的关系模式,也可以与任意一端对应的关系模型合并。
  • 一个1:n联系可以转化成一个独立的关系模式,也可以与N端对应的关系模式合并。
  • 一个m:n联系转为为一个关系模式
  • 三个或三个以上实体间的一个多元联系转换为一个关系模式

第三节:数据库物理设计

1.物理设计概述

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

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

2.数据库的物理结构

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

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

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

​ 数据库的物理结构需要解决如下问题:文件组织、文件结构、文件存取、索引技术

3.索引

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

​ 索引技术的关键:建立记录域取值到记录的物理地址(如页码)间的映射关系,即索引。索引能提高性能,但是有代价的。设计和创建索引是,应确保对性能的提高程度大于在存储空间和处理资源方面的代价。

1、索引技术的分类
  • 有序索引

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

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

    • (1)聚集索引(索引项与数据记录排列顺序一致,索引顺利文件)和非聚集索引。一个数据文件只可建立一个聚集索引,但可建立多个非聚集索引。
    • (2)稠密索引(数据文件中每个查找吗都对应索引记录)和稀疏数组(部分查找码的值对应索引记录)
    • (3)主索引(主码属性集上建立的索引)与辅索引(非主属性上建立的索引)
    • (4)唯一索引(索引列不包含重复值)
    • (5)单层索引(线性索引,每个索引项的顺序排列直接指向数据文件中的数据记录)和多层索引(大数据量文件中的多层树型(B,B+树)索引快速定位)。
  • 散列索引

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

4.数据库的物理设计

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

环节:数据库物理设计包括五个环节。

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

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

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

    ​ SQL Server采用T-SQL语言

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

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

    ​ 基本原则

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

    ​ 分析理解数据库事务访问特性:使用事务-基本表交叉引用矩阵;估计各事务执行频率;汇总每张基本表各十五操作频率信息;根据结果设计文件结构。

    什么是存取路径:

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

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

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

    DBMS常用存取方法:

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

    ​ 聚簇方法

    ​ HASH方法

    建立索引原则:

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

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

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

  • (3)数据分布设计

    ​ 不同类型的数据的物理分布

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

    ​ 应用数据的划分与分布

    ​ 根据数据的使用特征划分

    ​ 根据时间、地点划分

    ​ 分布式数据库系统(DDBS中的数据划分)

    ​ 派生属性数据划分

    ​ 关系模式的去规范化

  • (4)确定系统的配置

    ​ DBMS产品一般都提供了一些存储分配参数:条设使用数据库的用户数、数据库大小、时间片大小…

  • (5)物理模式评估

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

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

第四章:数据库应用系统功能设计与实施

内容概要

1、了解软件体系结构与设计过程

2、了解DBAS总体设计

3、了解DBAS功能概要设计

4、了解DBAS功能详细设计

5、了解DBAS安全架构设计

6、了解DBAS实施的过程及内容

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

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

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

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

软件体系结构

  • 又称软件架构,软件体系结构={构件,连接件,约束}
  • 软件体系结构是软件系统中最本质的东西。良好的体系结构必须是普适,高效和稳定的。
  • 软件体系结构有多值风格和类型,如分层体系结构,模型-视图-控制器(MVC)体系结构、客户端/服务端体系结构。

第二节:软件设计过程

软件设计过程

  • 软件开发由设计、实现、测试三个环节组成,设计又包含概要设计和详细设计。
  • 概要设计的任务是进行软件设计总体结构设计,可采用层次结构图建立软件总体结构图。详细设计的任务有是

进行数据设计、过程设计及人机界面设计。

  • 设计原则:模块化、信息隐藏、抽象与逐步求精。
  • 软件设计可选用结构化设计方法、面向对象设计方法或面向数据设计方法等。

第三节:DBAS总体设计的任务是确定系统总体框架

主要内容包括:

  • DBAS体系结构设计
  • 软件体系结构设计
  • 软件硬件选型与配置设计
  • 业务规则初步设计
1、DBAS体系结构设计
  • 将系统从功能、层次/结构、地理分布等角度进行分解,将划分为多个子系统、定义各子系统功能,设计系统的全局控制,明确各子系统间的交互和接口关系。
  • 两种常见的DBAS体系结构:
    • 客户/服务器体系结构(C/S)
    • 浏览器/服务器体系结构(B/S)
2、软件体系结构设计
  • DBAS软件包括操作系统、数据库管理系统、开发环境、中间件、应用软件(数据库事务和应用程序)。
  • 从需求分析出发分解成各子系统、分配相应功能,定义相互间交互机制,完成子系统结构设计,将子系统从功能上分成数据库事务模块(事务自身处理逻辑)与粒度大的应用程序模块(业务规则),确定全局控制和调用关系。可用模块结构图(模块+调用+数据+控制+转接)表示系统主体结构和分层模块结构。
3、软件硬件选型与配置设计
  • 规划分析阶段提出系统功能、性能及实现的约束对硬件做了评估和选择建议:需求对系统功能性能提出了具体要求,保证了DBAS功能性能顺利实现,总体设计阶段需要对软硬件设备做出合理选择,并进行初步配置设计。
  • 软硬件选型涉及的内容:
    • 网络及设备选型;数据存储及备份方案:服务器选型;终端软件环境;软件开发平台和语言、工具;系统中间件及第三方软件选型。
4、业务规则初步设计
  • 任务:从系统的角度,规划DBAS的业务流程,和客户的实际业务需要。
  • DBAS的各项业务活动具有逻辑上的先后关系。他们表示成一个操作序列,并用业务流程图表示。
  • 在总体设计结果基础上,将DBAS应用软件进一步细化为模块/子结构,组成应用软件的系统-子系统=子模块层次结构,并从结构、行为、数据三方面进行设计。
  • 从功能角度,DBAS系统通常分为四个层次实现
    • 表示层
    • 业务逻辑层
    • 数据访问层
    • 数据持久层

第四节:DBAS功能概要设计

1、表示层概要设计

  • 人机界面设计,影响系统易用性。目前第四代是WIMP(窗口、图标、菜单、指示器)与WEB技术、多任务处理技术相结合。
  • 设计原则:‘用户自主控制’;反馈及时上下文感知;容错与错误恢复;界面标准常规;输入灵活;界面简洁交互及时…

2、业务逻辑层概要设计

  • 设计原则:高内聚低(松)耦合,即架构单一原则;构建独立功能;接口简单明确;构建间关系简单,过于复杂,就细化,分解。
  • 设计内容:结构,行为,数据,接口,故障出安全设计,系统维护和保障等。

3、数据访问层概要设计

  • 任务:针对DBAS的数据处理需求设计用于操作数据库的任务。
  • 事务概要设计核心在于辨识和设计事务自身处理逻辑,注重流程,不考虑与平台相关、具体操作方法和事务实现机制。
  • 一个完整的事务概要设计包括事务名称、访问的关系表及数据项、事务逻辑(事务描述),事务用户(使用、启动、调用该事务的软件模块和系统)

补充:

  • 事务:事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)
  • 事务的特性:原子性、一致性、隔离性、持续性。称为ACID特性。
  • 原子性。一个不可分割的工作单位。
  • 一致性。从一个一致状态变到另一个一致性状态
  • 隔离性。执行不能被其他事务干扰
  • 持久性。永久性,事务一旦提交,他对数据库中数据的改变就应该是永久的。

4、数据持久层概要设计

  • 属于数据组织与存储方面的设计内容

第五节:DBAS功能详细设计

1、表示层详细设计

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

  • (1)初步设计:设计人机交互命令系统并优化。(总体设计)
  • (2)用户界面细节设计。如组织形式、风格,彩色,操作方式(概要设计)
  • (3)原型设计与改进(详细设计)
2、业务逻辑层详细设计

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

第六节:应用系统安全结构设计

1、数据安全设计

​ 五个方面:

  • 安全性保护:防止非法用户对数据库的非法使用、避免数据泄露、篡改或破坏。
  • 完整性保护:保证数据源的准确性、一致性和相容性。
  • 并发性控制:保证多个用户能共享数据库,并维护数据一致性。
  • 数据备份与恢复:系统失效后的数据恢复,配合定时备份数据库。
  • 数据加密传输:将一些高级的敏感数据通过一定的加密算法后传输。
2、环境安全设计
  • 漏洞与补丁:定期查找漏洞更新补丁
  • 计算机病毒防护:杀毒软件;实时监控;
  • 网络环境安全:防火墙;入侵检测系统;网络隔离(逻辑隔离与物理隔离)
  • 物理环境安全:如防盗设施;UPS;温湿度
3、制度安全设计

DBAS实施阶段主要包括以下工作

1、创建数据库

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

2、数据装载

步骤:筛选数据-转换数据格式-输入数据-校验数据

3、编写与调试应用程序
4、数据库系统试运行(功能测试与性能测试)

第五章:UML与数据库应用系统

内容概要:

1、了解DBAS建模方法

2、掌握DBAS业务流程与需求表达方法

3、掌握DBAS系统内部结构与表达方法

4、掌握DBAS系统微观设计的表达方法

5、了解DBAS系统宏观设计的表达方法

6、了解DBAS系统实现与部署的表达方法

第一节:DBAS建模

1、统一建模语言(UML):Unified Modeling Language

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

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

  • 建模语言:提供这种方法用于表示建模结果的符号(图形符号:可视化)
  • 建模过程:描述建模时需遵循的步骤。

2、UML的组成

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

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

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

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

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

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

​ 13钟视图(UML2.0):静态结构图及行为图两类 。

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

1、业务流程与活动图

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

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

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

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

2、系统需求与用例图

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

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

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

​ 系统:各种用力的“黑匣子”

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

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

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

1、系统结构与类图

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

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

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

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

​ 类和类之间的关系

​ 关联(聚集(共享聚集,组成或组合)),集成(泛化),依赖,精华(实现)

2、系统结构与顺序图

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

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

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

3、系统结构与通信图

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

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

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

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

1、微观设计与对象图

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

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

2、微观设计与状态机图

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

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

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

3、微观设计与时间图

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

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

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

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

1、宏观设计与包图

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

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

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

2、宏观设计与交互概述图

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

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

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

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

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

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

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

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

1、系统实现与组件图

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

​ 用来展现一组组件间的组织与依赖,用于对源代码、可执行的发布、管理数据库等的系统建模。

​ 组件时逻辑设计中定义的概念和功能在物理架构中的体现。

2、系统实现与部署图

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

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

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

第六章:数据库及数据库对象

内容概要

1、了解数据库的组成及特点

2、掌握SQL Server2008的安装与配置

3、掌握数据库的创建及维护方法

4、掌握架构的定义与为维护方法

5、掌握分区表、索引及视图的创建及维护方法

第一节:创建及维护数据库

1、SQL Server数据库概述

  • SQL Server的发展史

    • SQL Serve7.0(1999年,正式跻身企业数据库行列)
    • SQL Serve2000(2000年,代表产品)
    • SQL Serve2005(2005年,代号“YuKon")
    • SQL Serve2008(2008年,重大的产品版本)
    • SQL Serve2012
    • SQL Serve2014
  • SQL Server的特色

    • 保护数据库查询
    • 在服务器的管理操作上花费更少的时间
    • 增加应用程序稳定性
    • 系统执行效能优化与预测功能
  • SQL Server版本

    • 企业版
    • 标准版
    • 开发板
    • 工作组版
    • 网络版
    • 移动版
    • 免费版
  • 安装SQL Server2008对资源的需求

    • 最低硬件需求

    • 要求 32位 64位
      处理器 Pcntium Ⅲ或更高 Itanium、Opteron、Athcion或具有EM64T支持的Xcon/Pcntium
      处理器速度 10GHz或更高 1.6GHz或更高
      内存 512MB 512MB
  • SQL Server中的数据库分类

    • 系统数据库(自动创建)
      • master:所有系统级信息,元数据、端点、连接服务器及系统配置
      • msdb:代理服务器调度报警和作业、记录操作员时使用保存此类信息
      • tempdb:用于保存临时对象和中间结果,每次启动会重新创建
      • model:所有数据库的模板,存放用户数据库公共信息
      • resource:只读数据库。在对象资源管理器中看不到
    • 用户数据库(保存于用户业务有关的数据

2、SQL Server数据库的组成

  • SQL Server将数据库映射为一组操作系统文件:
    • 数据文件.mdf :主要数据文件。.ndf:次要数据文件。
    • 日志文件.ldf
  • 数据库存储空间分配
    • 创建用户数据库时,model数据库被自动复制到新建库。数据存储的最小单位:数据页(Page,简称页)1页是一块8kb的连续磁盘空间。页的大小决定了数据库表中一行数据的最大大小。行不能跨页存储。

3、数据库文件组

  • 两种类型的文件组
    • 主文件组(PRIMARY):系统定义,包含主要数据文件和任何没有明确分配的其他文件组的其他数据文件,系统表所有页平均分配在主文件页组中。
    • 用户定义文件组:在定义或修改数据库时用FILEGROUP关键字指定。
  • 注意
    • 日志文件不在文件组中,日志空间与数据空间分开管理。
    • 一个文件不可以是多个文件组成员。
    • 若文件组包含多个文件,则在所有文件被填满后才会自动循环增长。
    • 文件加入数据库后,不能移动到其他文件组。
    • 只能指定一个文件组为默认文件组。

4、数据库文件的属性

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

    • 文件名及其位置

      逻辑文件名,物理文件名

    • 初始大小

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

    • 增长方式

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

    • 最大大小

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

5、用T-SQL创建数据库

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

    • 通过SQL Server Management Studio创建数据库
    • 通过T-SQL语句创建数据库
  • 举例-创建学生数据库

    CREATE DATABASE Studentdb
    ON
    {
    	NAME='Studentdb_Data',
    	FILENAME='E:\Studentdb.mdf',
    	SIZE=3MB,
    	MAXSIZE=50MB,
    	FILEGROWTH=10%
    }
    LOG ON
    {
    	NAME='Studentdb_Log',
    	FILENAME='E:\Studentdb.ldf',
    	SIZE=2MB,
    	MAXSIZE=5MB,
    	FILEGROWTH=1MB
    }
    GO
    
    

6、修改数据库

  • 收缩数据库空间

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

    自动收缩:AUTO_SHRINK,默认false.

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

  • 删除和添加数据库文件

  • 扩大指定文件的大小:

    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
    
  • 删除数据库文件:

    ALTER DATABASE STU_DB
    REMOVE FILE student_log1
    
    
  • 注意

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

7、分离和附加数据库

  • 分离数据库

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

    从实例中删除,不删除数据文件和日志文件,保持了数据文件和日志文件完整一致性。使用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、创建分区

三个步骤

  • 创建分区函数:告诉DBMS以什么方式进行分区

    CREATE PARTITION FUNCTION
    
    
  • 创建分区方案:作用是将分区函数生成的分区映射到文件组中

    CREATE PARTITION SCHEME
    
    
  • 使用分区创建表

第四节:索引

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选项建视图,视图中表达式引用的所有函数必须确定。对视图建立的第一个索引时唯一聚簇索引,之后在创建其他。

4、例题

  • 在SQL Server2008中,主要数据文件必须建立在(主)文件组中
  • 不同的数据库管理系统采用的日志文件格式完全不一样。概括起来主要有以记录为单位的日志文件和以(数据块)为单位的日志文件两种
  • 在SQL Server2008中,每个数据页可存储8060字节的数据,设表T有10000行数据,每行占用4031字节,则存储该表数据大约要(80)MB空间,其空间利用率大约是(50)%(存储空间和空间利用率均保留到证书,小数点后按四舍五入处理)

第七章:高级数据库查询

内容提要

1、掌握一般数据库查询功能扩展

2、掌握查询的并、交、差运算

3、掌握子查询的使用

4、了解其他一些查询功能

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

1、SELECT语句

SELECT[DISTINCT][TOP n]select_list
[INTO new_table]
[FROM table_source]
[WHERE search_condition]
[GROUP BY group_by_expression]
[HAVING search_condition]
[ORDER BY order_expression[ASC|DESC]]
[COMPUTE expression]

2、使用top限制结果集

TOP n[percent][WITH TIES]

  • TOP n 前n行
  • TOP n[percent] 前n%行
  • [WITH TIES]:包括最后一行取值并列的结果。

【例一】查询单价最高的前三种商品名、商品类别和单价,包括并列情况。

SELECT TOP 3 WITH TIES GoodsName,

GoodsClassName,SaleUnitPrice,FROM Table_Goods a JOIN Table_GoodsClass b

ON a.GoodsClassID=b.GoodsClassID ORDER BY SaleUnitPrice DESC


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 数据源......(其他行过滤、分组语句)

注意:表名前加#为局部临时表,##为全局临时表,只有表名为永久表。

例子:

SELECT * INTO #HD_Customer FROM Table_Customer WHERE ......

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

1、并运算

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

  • 语法:

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

    • 要进行合并的查询,SELECT中列数必须相同,语义相同。
    • 每个相应列的数据类型隐式兼容,如char(20)与varchar(40)。
    • 合并后结果采用第一个SELECT语句的列标题。
    • 若需排序,则GROUP BY语句写在最后一个SELECT之后。且排序的一句时第一个SELECT中的列名。

2、交运算

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

  • 语法:

    SELECT 语句1
    INTERSECT
    SELECT 语句2
    INTERSECT......
    SELECT 语句n
    
    

3、差运算

  • 差运算:返回第一个集合中有而第二个集合中没有的记录。
  • 语法:
SELECT 语句1
EXCEPT
SELECT 语句2
EXCEPT......
SELECT 语句n

第三节:相关子查询

  • 子查询是一条包含在另一条SELECT语句里的SELECT语句。外层的SELECT语句叫外层查询,内层的SELECT语句叫内层查询(或子查询)
  • 子查询总是写在圆括号中。
  • 包括子查询的SELECT语句主要采用以下格式中的一种:
    • WHERE expression [NOT] IN (subquery)
    • WHERE expression comparion_operator [ANY|ALL]
    • WHERE [NOT] EXITS (subquery)

1、使用子查询进行基于集合的测试

实例:

SELECT Cname,Address FROM Tabel_Customer
WHERE Address IN(SELECT Address FROM Table_Customer WHERE Cname='王晓')
AND Cname!='王晓'

2、使用子查询进行比较测试

实例:查询单价最高的商品的名称和单价

SELECT Goodsname,SaleUnitPrice FROM Tabel_Goods a WHERE SaleUnitPrice=
(SELECT MAX(SaleUnitPrice)FROM Table_Goods)

3、使用子查询进行存在性测试

实例:查询购买了单价高于2000元商品额顾客的会员卡卡号

SELECT DISTINCT CardID FROM Table_SaleBill
WHERE EXITS (SELECT * FROM 
Table_SaleBillDetail WHERE SaleBillID = Table_SaleBill.SaleBillID AND UnitPrice>2000)

第四节:其他形式的子查询

1、替代表达式的子查询

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

​ 实例:

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

2、派生表

  • 也称为内联视图,是将子查询作为一个表处理,产生的新表为“派生表”。
  • 实例:查询至少买了G001和G002两种商品的顾客号和顾客名。
SELECT CustomerID,Cname FROM
(SELECT * FROM Table_SaleBill a JOIN Table_SaleBillDetail b ON a.SaleBillID=b.SaleBill WHERE GoodsID='G001')
AS T1 JOIN
(SELECT * FROM Table_SaleBill a JOIN Table_SaleBillDetail b ON a.SaleBillID=b.SaleBill WHERE GoodsID='G00')
AS T2 ON T1.CardID=T2.CardID
JOIN Table_cUSTOMER c ON c.CardID = T1

第五节:其他的一些查询功能

1、开窗函数

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

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

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

  • 开窗函数调用格式为:

    ​ 函数名(列)OVER(选项)

    • OVER关键字:表示把函数当成开窗函数而不是聚合函数
    • SQL标准允许所有聚合函数用作开窗函数,使用OVER关键字来区分这两种用法。

2、公用表表达式

  • 公用表表达式(CommonTableExpression,CTE):将查询结果集指定一个临时名字,这些命名的结果集就是公用表表达式。
  • 格式:
WITH <Common_table_expression>[,...n]
<common_table_expression>::=Expression_name[(column_name[,...n])]
AS
(SELECT语句)

第八章:数据库后台编程技术

内容概要:

1、掌握存储过程的定义和使用

2、掌握用户定义函数的创建与使用

3、掌握触发器的定义与使用

4、掌握游标的定义与使用

第一节:存储过程

1、基本概念

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

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

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

  • 存储过程分为三类:

    • 系统存储过程

    • 用户自定义存储过程

      ​ 用户自定义存储过程是由用户创建并能完成某一特定功能(如查询用户所需数据信息)的存储过程。本节将详细介绍用户自定义的存储过程。

    • 扩展存储过程

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

  • 存储过程的优点

    • 极高的执行效率
    • 增强代码的重用性和共享性
    • 使用存储过程可以减少网络流量
    • 使用存储过程保证安全性
    • 在大型数据库中,应用程序访问数据库最主要的方式就是存储过程
    • 存储过程可以在系统启动时自动执行

2、创建、执行和删除存储过程

存储过程定义包含两个主要组成部分

①过程名称

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

CREATE PROCEDURE procedure_name[;number] /*定义过程名
[{@paramter data_type}					/*定义参数的类型
[VARYING][=default][OUTPUT]   			/*定义参数的属性
[,...n1]
[WITH{RECONPILE|ENCRYPTION}|RECOMPILE]
[FOR REPLICATION]
AS sql_statement[,...n2]

第二节:用户定义函数

用户定义函数:

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

两类用户定义函数:

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

1、创建和调用标量函数

定义标量函数

CREATE FUCTION.......RETURNS return_data_type
AS
BEGIN
【函数体】
	RETURN scalar_expression
END

【实例】创建查询指定商品类别的商品种类的标量函数

CREATE FUCTION dbo.f_GoodCount(@class varchar(10))
RETURNS int
AS
BEGIN
DECLARE @x int 
SELECT @x=count(*)FROM Table_GoodsClass a JOIN Table_Goods b ON a.GoodsClassID = b.GoodsClassID WHERE GoodsClassName = @class
RETRUN @x
END

调用标量函数:

注意:

​ 调用时需要提供函数拥有者名和函数名;可以在任何出现表达式的SQL语句中调用类型一致的标量函数。

2、创建和调用内嵌表值函数

  • 创建内联表值函数:
CREATE FUCTION ......RETURNS TABLE
AS
RETRUN[select_stmt]

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

  • 调用内联表值函数:

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

3、创建和调用多语句表值函数

CREATE FUNCTION......RETURNS@return_variable
TABLE<table_type_definition定义返回的表结构>
AS
BEGIN
【函数体:sql语句】
	RETURN
END

调用建多语句表值函数:在select的from子句中使用

4、删除用户自定义函数

DROP FUNCTION

第三节:触发器

1、基本概念

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

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

​ DML、DDL、登陆触发器。

​ 使用场合:

​ 完成比CHECK(只能实现同一表列之间取值约束)约束更复杂的数据约束。保证数据库性能而维护的为规范化数据。可实现复杂的商业规则。评估数据修改前后的表状态,并采取对策。

2、创建触发器

CREATE TRIGGER trigger_name 
ON {table|view}
[WITH ENCRYPTION]
{FOR|AFTER|INSTEAD OF}
{[INSERT][,][UPDATE][,][DELETE]}
AS
sql_statement[...n]

参数说明:FOR或AFTER:后触发型,操作、约束检查完成后触发。INSTEAD OF:前触发型,数据操作语句最多定义一个触发器,执行触发器而非引发语句。若满足完整性约束则需要重新执行这些数据操作。

3、删除触发器

DROP TRIGGER

第四节:游标

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

1、游标的组成

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

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

2、使用游标

(1)声明游标

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

(2)打开游标

​ OPEN cursor_name

(3)提取数据

​ FETCH [1]FROM cursor_name[into @ variable_name[,…n]]

(4)关闭游标

​ CLOSE cursor_name可以再次打开。

(5)释放游标

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

第九章:安全管理

内容概要:

1、理解安全控制的基本概念

2、了解SQL Server2008的存取控制

3、掌握SQL Server2008的安全控制实现方式

4、了解Oracle的安全管理

第一节:安全控制概述

数据库安全性不同意数据的完整性

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

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

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

2、数据库安全的威胁

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

3、安全控制模型

​ 包括四阶段:

  • 身份验证(用户)
  • 操作权限控制(数据库应用程序与数据库管理系统)
  • 文件操作控制(操作系统)
  • 加密存储与冗余(数据库)

4、授权和认证

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

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

第二节:存取控制

1、自主存取控制

  • 又称自主安全模式,通过SQL的GRANT,REVOKE,DENY语句来实现。
  • 权限种类:维护权限与操作权限(语句权限与对象权限)
  • 用户分类:系统管理页(sa)、数据库对象拥有者、普通用户。

2、强制存取控制

  • 为避免自主存取控制模式下数据的“无意泄露”,采用强制存取控制。
  • DBMS将全部实体分为主体和客体两大类。
    • 主体:系统活动实体,实际用户和进程
    • 客体:被动实体,受实体操纵,包括文件、基本表、视图。
  • 对于主体和客体,DBMS为他们的每个实例指派一个敏感度标记(Lable)。
  • 敏感度标记:DBMS指派,主体为许可证级别,客体为密集。分绝密,秘密,可信和公开等若干级别。
  • 强制存取控制遵循如下规则:
    • 仅当主体许可证级别大于或等于客体密级,主体可以读取相应客体
    • 仅当主体许可证级别等于客体密级,该主体才能写相应客体。

第三节:审计跟踪

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

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

  • 统计数据库提供基于各种不同标准的统计信息或汇总数据。
  • 统计数据库安全系统用于控制对统计数据库的访问。
  • 统计数据库允许用户查询聚合类型的信息,如总和、平均等,但不允许查询个人信息。

第五节:SQL Server的安全控制

1、身份验证模式

  • Windows身份验证模式

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

  • 混合身份验证模式

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

2、登陆账户

  • 两类

    • SQL Server自身负责身份验证的账户,内置系统账户与用户自己创建
    • 登录到SQL Server的Windows网络账户,可以是组账户或用户账户。
  • 建立登陆账户

    CREATE LOGIN login_name
    
    
  • 修改登陆账户属性

    ALTER LOGIN login_name
    
    
  • 删除登录账户

    DROP LOGIN login_name
    
    

3、数据库用户

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

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

  • 建立数据库用户

    CREATE USER user_name[|FOR|FROM]
    LOGIN login_name
    
    
  • Guest用户,特殊数据库用户,匿名访问。没有映射到登录账户的时候使用

    • GRANT CONNECT TO guest
    • REVOKE CONNECT TO guest
  • 删除数据库用户

    DROP USER user_name
    
    

4、权限管理

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

    (1)对象级别权限(6种)SELECT、INSERT、UPDATE、DELETE、REFERENCES、EXECUTE

    • 授权语句:GRANT对象权限ON对象TO(主体:数据库用户名或角色)[WITH GRANT OPTION]
    • 拒绝权限:DENY对象权限ON对象TO(主体:数据库用户名或角色)[CASCADE][ AS主体]
    • 受权语句:REVOKE对象权限ON对象TO(主体:数据库用户名或角色)[CASCADE][ AS主体]

    (2)语句级别的权限CREATE DATABASE|PROCEDURE|TABLE|VIEW|FUNTION|BACKUP DATABASE|LOG

5、角色

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

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

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

    • Bulkadmin:执行BULK INSERT语句权限
    • Dbcreator:创建、修改、删除还原数据库权限
    • Diskadmin:具有管理磁盘文件的权限
    • Processadmin:管理运行进程权限
    • Securtyadmin:专门管理登陆账户、读取错误日志执行CREATE DATABASE权限的账户、便捷
    • Serveradmin:服务器级别的配置选项和关闭服务器权限
    • Setupadmin:添加删除链接服务器
    • Sysadmin:系统管理员,Windows超级用户,自动映射为系统管理员
    • Public:系统预定义服务器角色,每个登录名都是这个角色的成员
  • 固定数据库角色

    定义在数据库级别上,存在于每个数据库中,用户加入固定数据库角色就具有数据库角色权限

  • 用户定义的角色

    • 用户定义的角色属于数据库一级

    • 用来简化使用数据库时的权限管理

    • 用户定义的角色成员可以是用户定义角色或数据库用户。注意:角色中的成员拥有的权限=成员自身权限+所在角色权限。但若某个权限正在角色中被拒绝,则成员不在拥有。

    • 创建角色:CREATE ROLE

      实例:

      CREATE ROLE MathDept[AUTHORIZATION Software]
      
      

      注意:为用户定义角色授权、添加、删除用户定义的角色中的成员与固定数据库角色一致。

    • 删除用户定义角色:DROP ROLE

      实例:

      DROP ROLE MathDept
      
      

第六节:Oracle的安全管理

  • Oracle的安全机制分为数据库级安全控制、表级、列级、行级的安全控制
    • 数据库级的安全性通过用户身份认证和授予用户相应的系统权限来保证;
    • 表级、列级、行级的安全性通过授予或回收对象权限保证。支持集中式、分布式、跨平台应用
  • Oracle系统通常设置两级安全管理员
    • 全局级:负责管理、协调、维护数据一致性和安全性;
    • 场地级:负责本届点数据库安全性,用户管理,系统特权与角色管理

1、用户与资源管理

  • 按权限大小划分为DBA用户与普通用户
    • DBA用户由DBMS自动创建,sys与sysyem用户,拥有全部系统特权
    • 普通用户:由DBA用户或有相应特权的用户创建,并授予系统特权
  • 建立用户
CREATE USER use1 IDENTIFIED BY 123456 DEFAULT TABLESPACE student(存储在student表空间)
QUOTA 5M ON student(限制使用空间为5M)

  • 管理用户和资源
    • DBA特权用户可以改变一个用户资源使用限额、密码、登录次数等
  • 删除用户DROP USER

2、权限管理

  • (1)系统特权三种默认特权

    • Connect:不能建立任何对象,可以查询数据字典及访问数据库
    • Resource:可建立数据库对象(表、视图、索引)
    • BDA:拥有预定义的全部权限
  • (2)对象特权

    用于维护表级、行级、列级数据的安全性

第十章:数据库运行维护与优化

内容概要:

1、了解数据库运行维护的基本原理

2、了解运行状态监控与分析

3、了解数据库存储空间管理

4、掌握数据库性能优化的方法

第一节:数据库运行维护的基本任务

DBAS进入运行维护阶段的主要任务:

​ 保证数据库系统安全、可靠且高效率地运行。

​ 数据库的运行除了DBMS与数据库外,还需要各种系统部件协同工作。

​ 首先必须有各种相应的应用程序

​ 其次各应用程序与DBMS都需要在操作系统(OS)支持下工作。

维护工作包括:

  • 数据库转储与恢复
  • 数据库安全性、完整性控制
  • 检测并改善数据库性能
  • 数据库的重组和重构
  • 重组不修改数据库原有设计结构和物理结构
  • 重构部分修改模式和内模式

第二节:运行状态监控与分析

数据库的监控分析:指管理员借助工具检测DBMS的运行情况,掌握系统当前或以往的负荷、配置、应用等信息,并分析检测数据的性能参数和环境信息,评估DBMS的整体运行状态。

根据监控分析实现不同,分为:

  • 数据库系统建立的自动监控机制
  • 由DBMS自动监测数据库的运行情况
  • 管理页手动实施的监控机制

根据监控对象不同,分为:

  • 数据库构架体系的监控

    监控空间基本信息、空间使用率与剩余空间大小等。

  • 数据库性能监控

    监控数据缓冲区命中率、库缓冲、用户锁、索引使用、等待事件等。

第三节:数据库存储空间管理

对数据库使用空间来进行管理时一项非常重要的工作。

空间使用情况变化带来的问题:

  • 降低数据库系统服务性能
  • 空间溢出导致灾难停机事故

数据的存储结构分为:

  • 逻辑存储结构
  • 物理存储结构

SQL Server数据库中一个逻辑上的数据库直接和一组物理上的数据文件对应,没有表空间概念

DBMS对空间的管理包括:创建数据库空间、更改文件大小、删除空间、修改空间状态,新建、移动、关联数据文件等。

第四节:数据库性能优化

​ 数据库性能优化是DBAS系统上线后最常见的运行维护任务之一。

​ 进行数据库性能优化时,首先要确定优化目标,一般从数据库运行环境,参数调整、模式调整、数据库存储优化、查询优化几个方面考虑。

1、数据库运行环境与参数调整

​ 一般来说,可以从外部环境、调整内存分配、调整磁盘I/O、调整资源竞争等几个方面着手改变数据库参数,提高其性能。

​ 外部调整:数据库性能和外部环境有很大的关系,主要外部条件包括:CPU、网络(大量的SQL数据在网络上传输会导致网速变慢)。

​ CPU使用情况判断依据:对于一台数据库服务器,如业务空闲时使用率超过90%。说明服务器缺乏CPU资源,如高峰时CPU使用了仍然低,说明服务器CPU资源充足。

​ 解决方案:增加CPU数量或者终止需要很多资源的进程。

​ 调整内存分配:调整相关参数控制数据库内存分配,很大程度改善数据库系统性能

​ 调整磁盘I/O:数据库性能优劣的重要度量是响应时间。

​ 改善方法:令I/O时间最小化,减少磁盘上文件竞争带来的瓶颈。

​ 调整竞争:

  • 修改参数以控制连接到数据库的最大进程数
  • 减少调度进程的竞争
  • 减少多线程服务进程竞争
  • 减少重做日志缓冲区竞争
  • 减少回滚段竞争

2、模式调整与优化

​ 数据库的规范化过程:高效率利用存储空间,减少数据的冗余,减少数据的不一致性。

​ 问题:规范化关系解决了数据库维护的异常,并使数据冗余最小化。但会导致数据处理性能下降。

​ 反规范化:将规范化关系转换为非规范化关系的过程。

​ 反规范化方法:增加派生冗余列、增加冗余列、重新组表、分割表和新增汇总表方法。都会破坏数据完整性。

​ 采用反规范化技术从实际出发均衡利弊

​ (1)增加派生性冗余列

增加的列由表中的一些数据项经过计算生成。

作用:查询时减少连接操作,避免使用聚合函数。

例如:销售单据明细表(单据编号,商品编号,单价,数量,总价),总价=单价*数量,属于派生性增加冗余列

​ (2)增加冗余列

在多个表中增加具有相同语义的列,常用来在查询时避免连接操作。(外码不属于这种情况)

​ (3)重新组表

当用户经常查看的某些数据是由多个表连接之后才能得到,就可以考虑先把这些数据重新组成一个表,这样在查询时会减少连接提高效率。

​ (4)分割表(重点)

水平分割:根据行的使用特点进行分割,分割之后所有表的结构都相同。而存储的数据不同。使用并(Union)操作。

垂直分割:根据列的特点分割,分割后所得表除了都包含主码外其他列都不相同。通常将常用列与不常用列分别放在不同表中,查询减少I/O次数。缺点是使用连接(Join)操作

​ (5)新增汇总表

​ 大量执行报表等汇总操作会影响性能。

​ 为降低汇总操作的三级,将频繁使用的统计中间结果或最终结果存储在汇总表中,从而降低数据访问量和汇总操作的CPU计算量

​ 如:日销售额统计表

3、存储优化

(1)物化视图(索引视图)

​ 定义:包括一个查询结果的数据库对象,是预先计算并保存表连接或聚集等耗时多的操作结果。(一个定期刷新数据的视图,自动刷新或人工刷新)

​ 适用于多个数据量较大的表进行连接操作及数据库中在多个站点的表进行连接时使用。

​ 物化视图还可以进行远程数据的本地复制(物化视图的存储也称为快照),用于实施数据库间的同步。

(2)聚集

聚集是物理存储表中数据的可选择的方法。

一个聚集是一组表,将经常一起使用的具有同一公共列值的多个表中的数据行存储在一起,由公共列构成聚集码。

作用:最小化必须执行的I/O次数。

注意:将记录插入聚集的表之前,必须建立聚集索引,且按聚集码进行索引;对于剧集中的多个表,聚集值只存储一次。

劣势:聚集表的插入、更新、删除性能差,具体使用要权衡。

4、查询优化

效率低下的SQL语句常常是系统效率不佳的主要原因。常用优化方法如下:

​ (1)合理使用索引

权衡:索引提高查询效率,索引增加系统开销。

建立索引原则:

  • 是否为一个属性建索引:该属性是码或存在某个查询中被使用。
  • 在哪些属性建立索引:若一个关系的多个属性共同出现在若干个查询中,一般会采用多属性索引。
  • 是否建立聚簇索引:聚簇索引适合范围查询,可建立多属性索引。优点体现在数据记录存取过程中。
  • 使用散列还是树索引:散列适合等值查询;关系数据库多使用B+索引,支持作为搜索码的属性上的等值查询和范围查询。

索引使用原则:

  • 经常在查询中作为条件被使用的列,应为其建立索引。
  • 频繁进行排序或分组的列,应为其建立索引。
  • 一个列的值域很大时,应为其建立索引。
  • 如果待排列的列有多个,建复合索引。
  • 可以使用系统工具来检查索引完整性,必要时进行修复。当数据表更新大量数据后,删除并重建索引以提高查询。
  • 索引建立完成后,运行期间还需调优。
  • 调优的目的:动态地评估需求。

索引调整和修改的原因:

  • 由于缺少索引,某些查询语句执行时间过长。

  • 某些索引自始至终没有使用,却占用了较多磁盘空间。

  • 某些索引建立在被频繁改变的属性上,导致系统开销过大。

    (2)避免或简化排序

ORDER BY和GROUP BY语句的执行涉及排序,磁盘排序开销很大,应利用索引自动以适当的次序产生输出。

影响优化器的因素:

由于现有索引不足,导致排序索引中不包括一个或几个待排序的列。

Group by和order by子句中列的次序与索引次序不一致。

排列的列来自不同的表。

为避免不必要的排序,要正确地增建索引,合理合并数据库表,如排序不可避免,则简化它,如缩小排序列的范围。

​ (3)消除对大型表数据的顺序存取

嵌套查询中,对表的顺序存取严重影响查询效率。

优化方法:对连接列进行索引,或使用并集来避免顺序存取。

​ (4)避免复杂正则表达式

原因:消耗较多CPU资源进行字符串匹配。

​ (5)使用临时表加速查询

将表的一个子集进行排序并创建临时表。

​ (6)用排序来取代非顺序磁盘存取

原因:非顺序磁盘存取最慢。使用以数据库排序功能为基础的SQL替代非顺序存取。

​ (7)不充分的连接条件。

原因:左(右)外连接包含与NULL数据匹配,相比内连接,代价可能很高。

​ (8)存储过程

尽量使用自带返回参数,而非自定义返回参数,减少不必要参数,避免数据冗余。

​ (9)不要随意使用游标

原因:占用较多系统资源。尤其是大规模并发情况下,很容易使得系统资源耗尽而崩溃。

​ (10)事务处理

一旦将多个处理放入事务,会降低系统处理速度。将频繁操作的多个可分割的处理过程放入多个存储过程中,这样就大大提高系统响应速度。

5、SQLServer 性能工具

SQLServer Profiler

用来监视SQL Server事件的多用途监控工具(性能、存储过程、T-SQL语句运行等监控)。结果存储在一个跟踪文件中,可通过分析文件诊断问题。

数据库引擎优化顾问

测试数据库工作负荷(一组在数据库中执行的T-SQL语句),给出优化建议。

第十一章:故障管理

内容提要:

1、了解故障管理类型及数据库恢复技术

2、了解数据转储技术

3、了解如何利用日志文件进行数据恢复

4、了解硬件容错方案

第一节:故障管理概述

1、故障类型及其解决方案

  • DBMS中常见的4类故障:

    • 事务内部故障
    • 系统故障
    • 介质故障
    • 计算机病毒故障
  • 事务内部故障

    事务故障导致数据不一致,分为预期的(大部分)和非预期的。

    (1)预期的事务内部故障

    可通过事务过程本身发现的。解决办法:事务回滚

    (2)非预期的事务内部故障

    不能由事务程序处理的故障,如运算溢出等。

    事务故障的恢复由系统自动完成。

  • 系统故障

    又称软故障,运行期间,由于硬件故障、数据库软件及OS漏洞、突然断电等故障,导致数据不一致。

    解决办法:重启后,撤销(UNDO)所有未提交的事务;重做(REDO)所有已提交的事务;

  • 介质故障

    又称硬故障,运行期间由于磁头碰撞、磁盘损坏、强磁干扰、天灾人祸等,使得数据丢失的一类故障。导致物理存储设计损坏,数据文件及数据全部丢失,破坏性最大。

    容错策略:软件容错及硬件容错。

  • 软件容错:

    使用数据库备份及事务日志文件,通过恢复技术,恢复数据库到备份结束时的状态。若故障导致事务日志文件丢失,则不能完全恢复。

  • 硬件容错:

    一种方案是使用双物理存储设备,如双硬盘镜像。缺点:自然灾害或机房水灾、火灾导致双硬盘同时损坏,则失去保护作用。

    另一种方案是设计两套相同的数据库系统,通过数据库软件机制,同步变化数据。

  • 计算机病毒故障

    病毒是恶意的计算机程序,破坏OS及数据库系统(破坏数据文件为主)。

    解决办法:防火墙、杀毒软件、数据库备份文件。

2、数据库恢复技术概述

无论哪种故障,恢复的基本原理是冗余。

数据库恢复:把数据库从错误状态恢复到某一已知的正确状态。

在DBMS中,数据库恢复子系统占10%以上。

恢复机制涉及两个问题:如何建立冗余数据;如何利用这些冗余数据实施数据库恢复。

  • 建立冗余据的技术:

    数据备份、登记日志文件、数据库复制、数据库镜像、为段设立保存点以及使用后备段与现行页表来支持对段的保存等。

    最常用的是数据备份和登记日志文件。

第二节:数据转储

  • 数据转储即数据备份:

    指DBA或DBMS定期复制数据库,并将其存放到其他介质的过程。

    这些保存的副本被称为后援副本或后备副本。

1、静态转储和动态转储

静态转储:期间系统不能运行其他事务,不允许任何存取、修改活动。

静态转储保证数据的一致性,但降低了数据库的可用性。转储和事务是互斥的。

动态转储:即允许转储和事务并发执行。

动态转储不能保证转储数据的一致性。

动态转储+日志文件(记录转储期间各事务对数据库的修改活动记录):既保证数据一致性又提高了数据库的可用性。

2、数据转储机制

完全转储:对数据库中所有数据进行转储。占据较多时间和空间,但恢复时间短。

增量转储:只复制上次转储后发生变化的文件或数据块。所需时间及空间短,但只能和完全转储配合才能对数据库进行恢复。

差量转储:对最近一次数据库完全转储以来发生的数据变化进行转储。

3、多种转储方法结合使用

仅使用完全转储:占据时间和空间多,代价大。

完全转储+增量转储:恢复时间较长。

完全转储+差量转储:恢复时间短。

第三节:日志文件

1、日志文件的概念

DBMS运行中,将所有事务的修改操作登记到日志文件。

作用:事务故障恢复和系统故障恢复必须使用日志文件。

在动态转储方式中必须建立日志文件。

在静态转储方式中也可使用日志文件。

2、日志文件的格式与内容

两种格式:

  • 以记录为单位的日志文件

​ 需要记录的内容:

各个事务的开始标记 BEGIN TRANSACTION

各个事务的结束标记 COMMIT OR ROLLBACK

各个事务的所有更新操作

  • 以数据块为单位的日志文件

​ 日志记录的内容包括:

事务标识和被更新的数据块

3、登记日志文件的原则

  • 登记的次序严格按并行事务执行的时间次序。

保证事务对数据库的操作的可再现性和正确性。

  • 必须先写日志文件,后写数据库。

先后顺序导致必然性。

4、检查点

检查点的作用

最大限度地减少数据完全恢复时必须执行的日志部分。

  • 检查点的引入

    在日志中增加检查点记录,增加一个“重新开始文件”。

    检查点记录的内容:建立检查点时刻正执行的事务清单;这些事务最近一个日志记录的地址。

    重新开始文件记录的内容:各个检查点记录在日志中的地址。

  • 基于检查点的恢复步骤

    ①从“重新开始文件”中找到最后一个检查点记录在日志文件中的地址,从而找到最后一个检查点记录。

    ②由该检查点记录得到执行的事务清单ACTIVE_LIST。

    ③从检查点开始正向扫描文件。

    ④对UNDO-LIST中的事务执行UNDO, 对REDO-LIST中的事务执行REDO。

第四节:硬件容错方案

1、概述

​ 由于数据库运行的硬件故障、机房电力故障、机房自然灾害等,要求从硬件级别对DBMS进行保护。

​ 从DBMS运行所需要的各种环境出发,分析支撑数据库系统运行的环节。

​ 相关度最紧密的技术:数据库存储保护技术,服务器容错技术及数据库镜像与容灾技术。

2、磁盘保护技术

  • RAID:廉价冗余磁盘阵列,多块磁盘构成的一个整体。

RAID依靠冗余技术 数据保护:

  • 镜像冗余

即把所有的数据复制到其他设备。

额外开销大:更多的磁盘、控制器、电缆。

  • 校验冗余

对成员磁盘的数据执行异或(XOR)操作,得到其校验值,并存放在另外的校验盘上。

实现复杂,但比镜像冗余占据的空间小。

  • RAID根据所采用的方法不同,分为RAID-0,RAID-1,RAID-1E,RAID-5,RAID-6, RAID-7,RAID-10,RAID-50,RAID-60。

    RAID-0:将多个磁盘合并成一个大的磁盘,不具有冗余,并行I/O,速度最快。

    RAID-1:两组以上的N个磁盘相互作镜像,在一些多线程操作系统中能有很好的读取速度,理论上读取速度等于硬盘数量的倍数,另外写入速度有微小的降低。只要一个磁盘正常即可维持运作,可靠性最高。

    RAID-5:RAIDLevel 5是一种储存性能、数据安全和存储成本兼顾的存储解决方案。它使用的是Disk Striping(硬盘分区)技术。RAID5至少需要三颗硬盘,RAID5不是对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。

    RAID-10:RAID0与RAID-1的组合体,继承了前者的快速,后者的安全。 RAID-10冗余度为50%。

3、服务器容错技术

  • 引入服务器容错原因

解决服务器硬件异常问题。

  • 服务器容错技术简介

采用两台相同的服务器,共享存储设备。(双机热备,Active-Standby)

两台服务器之间会有私有网络进行心跳检测

  • 其他服务器容错技术

    硬件级别:自行设计制造的专用软硬件架构。

    软件级别:专门的服务器级别容错技术,如Oracle提供了RAC架构。

4、数据库镜像与数据库容灾

  • 引入数据库镜像原因

前面几种恢复技术都必须及时正确地转储数据库。

  • 数据库镜像简介

是一种用于提高数据库可用性的解决方案,它根据DBA的要求,自动把整个数据库或关键数据复制到另一个磁盘上。

  • 数据库镜像分类

    • 双机互备援模式

    两台机器均为工作机。正常状况下均为系统提供支持,互相监视对方的运行情况。

    • 双机热备份模式

    一台为工作机,一台为备份机。工作机为系统提供支持,备份机监视工作机的运行情况

  • 工作方式

“数据库镜像会话”中,主体服务器和镜像服务器作为“伙伴”进行通信和协作。在会话中扮演互补角色。一旦出现故障,使用“角色切换”过程来互换主体服务器和镜像服务器。

5、SQL Server数据库镜像简介

SQLServer数据库镜像是将数据库事务处理从一个SQLServer数据库移到不同的SQLServer数据库。

镜像的复制是一个备用的复制,不能直接访问,只用来进行错误恢复。

“见证服务器”使镜像服务器自动识别。

两种运行模式 :“高安全性模式”及运行模式。

​ SQL Server数据库镜像提供三种实现方式:

高可用性。两台服务器同步事务写入,支持自动错误恢复。

高保护性。两台服务器同步事务写入,手工错误恢复。

高性能。两台服务器写入不同步,手工错误恢复。

第十二章:备份与恢复数据库

内容概要:

1、理解备份与恢复的概念

2、了解SQL Server的备份与恢复机制

3、了解Oracle的备份与恢复机制

第一节:备份与恢复的概念

1、备份数据库

数据库备份的原因:

​ 防止数据丢失(存储介质故障、用户的操作错误、服务器故障、病毒侵害、自然灾害),一旦出现问题、能够根据备份进行恢复。

​ 是数据转移的一种方式。(将数据库从一台服务器复制到另一台服务器、设置数据库镜像、文件归档和灾难恢复)

2、恢复数据库

​ 恢复数据库指数据库系统出现故障时,利用备份副本将数据库恢复到某个正确、一致的状态的过程。

​ 两种类型:介质故障恢复、非介质故障恢复

第二节:SQL Server的备份与恢复机制

1、恢复模式

​ 恢复模式是一个数据库属性,它用于数据库备份和还原操作的基本行为。

​ 恢复模式决定备份类型和还原方案。备份类型决定数据库备份的内容。

​ 三种恢复模式:简单恢复模式、完整恢复模式、大容量日志恢复模式

  • 简单恢复模式

    此模式简略的记录大多数事务,不备份事务日志。所记录的信息只是为了确保在系统崩溃或还原数据备份之后数据库的一致性。

  • 完整恢复模式

    此模式完整的记录了所有事务,并保留所有事务日志记录,直到将他们备份

  • 大容量日志恢复模式

    此模式简略的记录大多数大容量操作(例如索引创建和大容量加载),完整地记录其他事务。大容量日志恢复模式提高了大容量操作的性能,常用完整恢复模式的补充。

2、备份内容及时间

  • 备份内容
    • 用户数据库
    • 系统数据库
  • 备份时间
    • 系统数据库:修改之后进行备份
    • 用户数据库:周期性备份

进行下列操作后,立刻进行备份

  • 创建数据库之后,或批量加载数据之后
  • 创建索引之后。
  • 执行清理事务日志的操作之后
  • 执行大容量数据操作之后。

3、SQL Server的备份机制

(1)备份设备

​ SQL Server将备份数据库的场所称为备份设备。支持将数据库备份到磁带或磁盘上。

备份设备类型:

  • 永久备份设备:在备份之前需要建立。
  • 临时备份设备:不需要预先建立,在备份时将数据库直接备份到物理文件上

(2)备份类型

  • 数据库备份
    • 完整数据库备份
    • 差异数据库备份
  • 文件备份
    • 文件备份
    • 差异文件备份
  • 事务日志备份

完整数据库备份(也称完全转储)

​ 完整备份将备份整个数据库,包括事务日志部分(以便可以恢复整个备份)。完整备份代表备份完成时的数据库。是恢复的基线,备份数据文件、数据库对象和数据的信息,备份备份过程中发生的活动,备份未提交的事务到日志。

差异数据库备份(也称差异转储)

​ 备份从上次完整备份之后数据的改变

​ 备份差异备份过程中发生的活动

​ 备份未提交的事务到日志

​ 比完整备份节约时间

​ 以前一次完整备份为基准点(成为差异基准)

​ 在还原从差异备份前,应先还原最新的完整备份,在还原基于该完整备份的最新的差异备份。

文件备份

​ 可以分别备份和还原数据库中的文件。使用文件备份可以仅还原已损坏的文件,而不必还原数据库的其余部分,从而提高恢复速度。

差异文件备份

​ 创建文件或文件组的完整备份后,可以基于该完整备份创建一系列的差异备份。

​ 差异文件备份只捕获自上一次文件备份以来更改的数据

事务日志备份

​ 备份从上次日志备份之后的日志记录,备份完成后要截断日志

​ 事务日志备份仅用于完整恢复模式或大容量日志恢复模式

三种类型的事务日志备份:

纯日志备份,大容量操作日志备份,结尾日志备份。

(3)常用备份策略

完整备份

完整备份+日志备份

完整备份+差异备份+日志备份

  • 完整备份

    适用于数据库数据不是很大,而且数据更改不是很频繁的情况。

    完整备份一般可以几天进行一次或几周进行一次。

    当对数据库数据的修改次数不是很频繁,而且允许一定量的数据丢失时,可以选择只用完整备份策略。

    完整备份包括了数据和日志的备份

  • 完整备份+日志备份

    如果允许丢失太多的数据,而且又不希望经常地进行完全备份(因为完全备份进行的时间比较长),则可以在完全备份中间加一些日志备份。

    例如,可以每天0:00点进行一次完全备份,每隔几小时进行一次日志备份。

  • 完整备份+差异备份+日志备份

    完全备份加差异备份和日志备份的策略,即在完全备份中间加一些差异备份,在差异备份中间加一些日志备份。

    比如每周周日0:00进行一次完全备份,然后每天0:00进行一次差异备份,然后再两次差异备份之间增加一些日志备份

    这种策略的好处是备份和恢复的速度都比较快,而且当系统出现故障时,丢失的数据也比较少。

(4)实现备份

  • 使用SQL Server管理平台
  • 使用T-SQL语句

4、SQL Server的恢复机制

SQL Server支持在一下级别恢复(还原)数据:

  • 数据库(数据库完整还原)
  • 数据文件(文件还原)

还原顺序

  • 恢复最近的完全备份;
  • 恢复最近的差异备份(如有);
  • 恢复自差异备份之后的所有日志备份(按备份的先后顺序)
  • 恢复数据库

实现还原

  • 使用SQL Server管理平台
  • 使用T-SQL语句

示例:

​ 假设已对pubs数据库进行了完全备份,并备份到MyBK_1备份设备上,假设此备份设备只含有对pubs数据库的完全备份。则恢复pubs数据库的语句为:

RESTORE DATABASE pubs
FROM MyBK_1

第三节:Oracle的备份与恢复机制

####1、Oracle数据库逻辑备份与恢复

Oracle数据库常见的故障类型:

  • SQL语句错误
  • 进程失败
  • 实例失败
  • 网络失败
  • 用户失败
  • 介质失败

逻辑备份:

​ 指通过工具将数据库中的数据转换成专用或通用格式的文件,保存在文件系统中。

​ 工具:

  • EXP/IMP
  • EXPDP/IMPDP

####2、Oracle数据库物理备份与恢复

物理备份:

​ 指对数据物理文件所实施的备份。物理备份管理方法:用户管理的备份,Recover Manager备份,第三方备份软件。

恢复数据库

两个过程:

​ Restore:从备份数据中找到完整备份文件,恢复完整文件的过程。

​ Recover:将日志和增量备份的改变应用到数据备份文件,使数据文件恢复到指定时间点上的过程。

第十三章:大规模数据库架构

内容概要:

1、了解分布式数据库技术

2、了解并行数据库技术

3、了解云数据库技术

4、了解xml数据库技术

第一节:分布式数据库

1、分布式数据库系统概述

分布式数据库系统与分布式数据库的区别:

  • 分布式数据库系统——数据分布存储与若干场地,并且每个场地由独立于其他场地的DBMS进行数据管理。物理上分散、逻辑上集中的数据库系统。
  • 分布式数据库——分布式数据库系统中各场地上数据库的逻辑集合。

2、分布式数据库目标与数据分布策略

分布式数据库目标:

12个目标:

​ 本地自治、非集中式管理、高可用性。(最基本特征)

​ 位置独立性、数据分片独立性、数据复制独立性。(透明性)

​ 分布式查询、事务管理。(复杂性)

​ 硬件独立性、操作系统独立性、网络独立性、

​ 数据库管理系统独立性。

数据分布策略:

​ 从数据分片和数据分配考虑

​ 数据分片(对关系操作)

按一定规则将某一个全局关系划分为多个片段。四种基本方法:

  • 水平分片-每个分片是原始关系所有数据行的子集合
  • 垂直分片-每个分片是原始关系所有数据列的子集合
  • 导出分片-导出水平分片
  • 混合分片-以上三种的混合

数据分配(对分片结果操作)

​ 将分片产生的片段分配存储在各个场地上。解决数据分配的方法:

  • 集中式-所有数据片段安排在一个场地上
  • 分割式-所有全局数据有且只有一份,分割成若干被分配在特定场地上的片段
  • 全复制式-全局数据有多个副本,每个场地上有一个完整的数据副本
  • 混合式-介于分割与全复制式之间。

3、分布式数据库系统的体系结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WBYpUGaD-1582357290412)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1580363563834.png)]

分布透明性

​ 分片透明性。用户无需考虑数据分片

​ 位置透明性。用户只需考虑数据分片情况,无需考虑数据分片位置。

​ 局部数据模型透明性。用户既要了解全局数据的分片情况还要了解各片段的副本复制情况及位置分配情况。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JXFt7EfM-1582357290412)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1580363916824.png)]

4、分布式数据库的相关技术

分布式查询

​ 用户与分布式数据库系统的接口。分布式查询优化需考虑:

①操作执行的顺序。

②操作的执行算法(连接操作和并操作)。

③不同场地间的数据流动的顺序。

分布式事务管理

主要包括:

  • 恢复控制:基于两阶段提交协议
  • 并发控制:基于封锁协议

第二节:并行数据库

1、并行数据库概述

​ 并行数据库——通过并行实现各种数据操作,如数据载入、索引建立、数据查询,可以提高系统的性能。

​ 优势:增强的可用性:当存储某个关系的场地系统崩溃时,可继续使用存储在别的场地的副本。

2、并行数据库系统结构

实现并行DBMS的三种硬件结构:

(1)共享内存系统(Shared Memory)

(2)共享磁盘系统(Shared Disk)

(3)无共享资源系统(Shared Nothing)

(4)层次结构(Hierachical)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ygk1GBlD-1582357290413)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1580364390101.png)]

(1)共享内存系统:多个cpu通过连接网络进行通信,并能访问公共的主存。

​ 随着cpu增加,造成内存冲突

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bmjDwoZg-1582357290413)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1580364503454.png)]

(2)共享磁盘系统:每个cpu拥有自己的私有磁盘内存,并通过连接网络直接访问所有磁盘。

​ 通过网络实现cpu之间的数据交换,增加了通信代价。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tJ9IIPxI-1582357290414)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1580364624509.png)]

(3)无共享资源系统:每个cpu拥有自己的内存和磁盘空间,并无公共区域,cpu之间所有通信通过连接网络来完成。

存在通信代价,非本地磁盘访问代价高。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O6gJ456Y-1582357290414)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1580364679878.png)]

(4)层次结构:前三种体系的结合。分为两层,顶层是无共享结构,底层是共享内存或共享磁盘结构。

集成了以上三种结构的优缺点。

####3、数据划分与并行算法

一维数据划分:将大数据集水平划分到多个磁盘上,可以通过并行读写有效地利用多磁盘的I/O带宽。

(1)轮转法——如果系统有n个cpu,将第i条记录划分到第i mod n 处理器的方法称为轮转划分方法。

(2)散列法——使用特定的哈希函数,作用于选定的属性,将记录划分到不同的处理机。

(3)范围划分法——首先对记录进行排序,然后按照排序码将其划分成n个区域,使每个区域中近似含有相同数目的记录,处于第i个区域的记录分布于处理机i。

优势劣势:

(1)轮转法可有效应用于需要访问整个关系的查询处理,当需要访问部分记录时,散列法和范围更优。

(2)范围法可能会导致数据偏斜,也就是不同分片含有的记录数目差别很大。数据偏斜会造成存有大片数据分片的处理机的性能瓶颈问题。

(3)散列法优点是:即使数据随时间增加或减少,也能保持均匀分布。

多维数据划分:

  • CMD多维划分法

  • BERD多维划分法

  • MAGIC多维划分法。

并行算法:

(1)并行排序:

a.用区域划分法先将关系的所有记录重新分布再进行排序。

b.每个cpu使用排序算法对分配给它的记录排序。每个处理机得到分配给它的所有记录的有序序列。

c.通过按照区域划分的对应次序访问处理机得到完整的有序关系。

难点:如何进行区域划分来使得每个处理机分布的记录数目近似相等。否则,对具有大量记录的处理机排序时将产生性能瓶颈,从而限制并行排序的可扩展性。

(2)并行连接:

假设:对关系A和B进行划分时,连接属性为age,关系初始分布在若干磁盘上,但不是基于连接属性分布的。

方法:对关系A和B重新划分:把连接属性age的取值分成k个区域

第三节:云计算数据库架构

1、云间算概述

​ 云计算时一种商业计算模型。它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。

云(cloud):即云计算提供商的数据中心的软硬件设施。

云分为:

  • 公共云:以即用即付的方式提供给公众。
  • 私有云:不对公众开放的云。
  • 混合云

2、云数据体系结构

云数据库(CloudDB,简称云库):云+数据库。目前主要的云计算平台:

AWS、GAE、Hadoop

谷歌云 计算基础架构模式(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格式。

示例:

SELECT * FROM Table_cus  
WHERE. FOR XML RAW

SQL Server中的XML数据类型:

XML类型的字段

示例:

CREATE TABLE T_info 
( 
cid int , 
Content xml
)

例题讲解

1、Google的云数据库是一个分布式的结构化数据存储系统,称作(  )。

答案:Bigtable

2、在分布式数据库中,使用(  )模式来描述各片段到物理存放场地的映像。

答案:分配

3、在并行数据库中,有关系R(A, B)和S(A, C),需要将它们根据A属性拆分到不同的磁盘上。现有查询SELECT B FROM R, S WHERE R.A = S.A。下列拆分方式中最适合该查询的是(  )

A.散列划分

B.轮转法

C.范围划分

D.列表划分

答案:A

4、关于分布式数据库,下列说法错误的是(  )

A.分布式数据库系统的目标是利用多处理机结点并行地完成数据库任务,以提高数据库系统的整体性能

B.分布式数据库中位置透明性是指数据分片的分配位置对用户是透明的,使得用户在编程时只需考虑数据分片情况,而不用关心具体的分配情况

C.分布式数据库的事务管理包括恢复控制和并发控制,恢复控制一般采用的策略是基于两阶段的提交协议

D.分布式数据库的查询代价需要考虑站点间数据传输的通信代价,一般来说导致数据传输量大的主要原因是数据间的连接操作和并操作

答案:A

5、在分布式数据库应用系统中,对全局关系进行分片设计时,下列说法正确的是(  )

A.对于一个全局关系中的任意数据,不允许其不属于任何一个片段,也不允许某些数据同时属于不同的片段

B.对于一个全局关系中的任意数据,可以允许其不属于任何一个片段,也允许某些数据同时属于不同的片段

C.对于一个全局关系中的任意数据,不允许其不属于任何一个片段,但允许某些数据同时属于不同的片段

D.对于一个全局关系中的任意数据,对于一个全局关系,可以允许某些数据属于不同片段,但不允许某些数据同时属于不同的片段

答案:A

第十四章:数据仓库与数据挖掘

内容概要:

1、了解数据仓库相关技术

2、了解数据仓库的设计、建造、运行及维护

3、了解OLAP及多维数据模型

4、了解数据挖掘技术

第一节:决策支持系统的发展

  • 如何利用日益增长的数据为企业的管理和决策服务?

    经过研究和实践产生了数据仓库和数据挖掘技术。

1、决策支持系统及其演化

  • 一般将数据分为:
    • 分析型数据
    • 操作型数据:由于企业的基本业务系统产生的数据,用于联机处理环境(OLTP)。
  • 决策支持系统(DSS):综合利用大量数据,有机组合众多模型(数学模型和数据处理模型),通过人机交互,辅助各级决策者实现科学决策的系统
  • Keen和Scott Morton于70年代中期首次提出了“决策支持系统”(Decision Support System,简称DSS)一词,标志着利用计算机与信息支持决策的研究与应用进人了一个新的阶段,并形成了决策支持系统新学科。
  • 20世纪80年代,个人计算机和第四代编程语言的出现,使得最终用户可以对数据和系统直接控制,很多管理信息系统(MIS)开始出现,用以支持企业管理决策。MIS被用户和开发人员改称为决策支持系统,即DSS。
  • 传统的DSS一般建立在OLTP环境下。
  • 演化过程进行到抽取程序阶段大型OLTP出现后,使用抽取程序解决性能和历史数据问题。 用抽取程序能将数据从高性能联机事务处理方式中转移出来,所以,在需要总体分析数据时就与OLTP处理性能不发生冲突。
  • 自然演化体系结构——贯穿于公司或组织的抽取处理模式很常见,这种由失控的抽取过程产生的结构被称为“自然演化体系结构”。
  • 自然演化体系结构的问题
    • 忙碌的IT人员
    • 蜘蛛网问题
    • 数据缺乏可信性
    • 生产率问题
    • 从数据到信息的转换的不可行性

2、基于数据仓库的决策支持系统

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PXAzE3d7-1582357290415)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1580529280966.png)]

​ 数据仓库是核心,操作型系统是数据源,决策支持系统是数据的需求者。

第二节:数据仓库技术概述

1、数据仓库的概念与特性

  • 建立数据仓库的目的:根据决策需求对企业数据采取适当的手段进行集成,形成一个综合的、面向分析的数据环境,用于支持企业的信息型、决策型的分析应用。
  • 数据仓库的特性:面向主题性、集成性、不可更新性和时间特性等。
  • 主题和面向主题
    • 数据仓库的数据是以面向主题的方式进行组织的
    • 肢体也称为分析主题或分析领域,用于表示某一宏观的分析领域所涉及的对象,以及与对象有关的 数据集合。
    • 目前,数据仓库主题数据的实现采用关系型数据库。
  • 数据仓库的其他特征
    • 集成:数据仓库最重要的特征。分为数据抽取、转换、清理(过滤)和装载4项任务。
    • 不可更新:数据仓库中的数据以批量方式处理,不进行一般意义上的数据更新
    • 随时间变化:不断捕捉数据

2.数据仓库的体系结构与环境

  • 从数据层次角度来看,典型的数据仓库的数据体系结构包括:操作型数据、操作型数据存储(Operation Data Store)、数据仓库(Data Warehouse)和数据集市(Data Mart)。也可以包括个体层数据。
  • 从功能结构看可分为数据处理、数据管理和数据应用三个层次。

3.数据仓库的数据组织

  • 粒度

    数据仓库的数据单位中保存数据的细化或综合程度的级别。细化程度越高,粒度越小。

    • 粒度影响到数据仓库的数据量及系统能回答的查询的类型。
    • 进行数据仓库的数据组织时,应根据当前应用的需求进行多粒度级设计。满足多角度、多层次数据查询要求。
  • 数据分区(分割)

    数据分散到各自的物理单元中去,它们能独立地处理。

    • 最常见的是按照时间标准分区。
    • 数据分区的方式可以分成系统层分区(数据库系统提供的机制)和应用层分区(由应用代码实现)两种。
    • 如何分区由开发者和程序员控制。
  • 元数据

    关于数据的数据,或叫描述数据的数据。用于构造、维持、管理、和使用数据仓库,在数据仓库中尤为重要。

    • 元数据描述了数据的结构、内容、链和索引等内容。
    • 在数据仓库中,元数据分成技术型元数据和业务型元数据。
    • 元数据解决了人在何时何地为了什么原因及如如何使用数据仓库的问题。
  • Data Mart

    数据集市 – 小型的,面向部门或工作组级数据仓库。

  • Operation Data Store

    操作型数据存储 — ODS是能支持企业日常的全局应用的数据集合,是不同于DB的一种新的数据环境, 是DW 扩展后得到的一个混合形式。四个基本特点:面向主题的( Subject –Oriented )、集成的、可变的、 当前或接近当前的。

  • ODS分成4类:

    • ODSⅠ:数据更新频率秒级。
    • ODSⅡ:数据更新频率小时级。
    • ODSⅢ:数据更新频率天级。
    • ODSⅣ:根据数据来源方向和类型区分。

第三节 设计与建造数据仓库

1.数据仓库设计的需求与方法

  • 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)——就是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。

  • 数据源必须是真实的、大量的、含噪声的;发现的是用户感兴趣的知识;发现的知识要可接受、可理解、可运用。

第六节 数据挖掘技术

1.数据挖掘步骤

数据挖掘作为知识发展的过程,分为三个阶段:

  • 数据准备

三个子步骤:数据选取;数据预处理;数据变化。

  • 数据挖掘

    首先确定挖掘的任务,其次决定挖掘算法。

  • 结果解释评估

    剔除冗余或无关的模式。

  • 常见的数据挖掘任务

    • 分类预测任务

      常见的方法:决策树、神经网络、规则归纳、支持向量机、贝叶斯、粗糙集、回归分析、K-最近邻等。

    • 描述型任务

    典型的方法:聚类、关联、分析等。

2.关联规则挖掘

“啤酒和尿布”

  • 关联规则挖掘过程主要包含两个阶段:
    • 第一阶段必须先从资料集合中找出所有的高频项目组(Frequent Itemsets),
    • 第二阶段再由这些高频项目组中产生关联规则(Association Rules)。

3.分类挖掘

  • 分类挖掘方法——用于预测数据对象的离散类别。一般分为两个步骤:

    • 通过已知数据集,建立分类函数,构造分类器。

    • 利用所获得的分类函数对未知类别标记的数据项进行分类操作。

4.聚类挖掘

  • 聚类挖掘方法——用于对集中的数据进行分组,使得每组内的数据尽量相似而不同组间的数据尽可能不同。

  • 聚类方法包括统计方法、机器学习方法、神经网络方法和面向数据库的方法等。

5.时间序列分析

  • 时间序列——用时间排序的一组随机变量。

  • 时间序列分析——又称为数据演变分析,描述行为随时间变化的对象的规律或趋势,并对其进行建模。

  • 从不同角度可分为:一元时间序列和多元时间序列;等间隔时间序列和不等间隔时间序列;平稳时间序列和非平稳时间序列。

你可能感兴趣的:(全国计算机三级数据库技术)