地理信息系统数据库.docx
《地理信息系统数据库.docx》由会员分享,可在线阅读,更多相关《地理信息系统数据库.docx(16页珍藏版)》请在冰点文库上搜索。
地理信息系统数据库
地理信息系统数据库
分析题:
概念模型设计方面;ER模型设计;关系模型规范化(逻辑模型层面上的设计(候选码,范式));sql语言查询与更新,创建;与空间数据相关:
空间数据的存储,逻辑上的表现形式(三种,主要考察坐标序列法,二进制大对象),空间索引(大致的原理),空间簇聚(两个方面,簇聚和稀薄曲线,行、列序为主,簇聚)
非考试重要内容:
第六章的安全性控制,数据备份与恢复
第一章绪论
1.1数据库的基本概念(四个基本概念,优势体现在数据库结构里,相对于文件存储的优势体现在三种模式和保护功能上)
A.数据(data):
数据库系统处理的对象是数据。
数据是指用数字、文字、图形、图像、声音等符号记录下来的对事物的描述。
这里仅指经过数字化存入计算机中的数据。
B.数据处理(dataprocessing):
是指从某些已知的数据出发,推导加工出一些新的数据的过程。
C.数据库(database):
是长期存储在计算机内、有组织的、统一管理的相关数据的集合。
数据库能为各种用户共享,具有较小冗余度、数据间联系紧密而又有较高的数据独立性等特点。
D.数据库管理系统(DatabaseManagementSystem,简记为DBMS):
是位于用户与操作系统之间的一层数据管理软件,它为用户或应用程序提供访问数据库的方法,包括数据库的建立、查询、更新及各种数据控制。
数据库管理系统总是基于某种数据模型,可以分为层次型、网状型、关系型和面向对象型等。
E.数据库系统(DatabaseSystem,简记为DBS):
数据库系统是实现有组织地、动态地存储大量关联数据、方便多用户访问的计算机硬件、软件和数据资源组成的系统,即它是采用数据库技术的计算机系统。
数据库系统与文件系统
文件系统是一种先于数据库管理系统出现的数据管理方式。
文件系统的主要缺陷是:
a.数据冗余与不一致,数据重复存储在多个文件中;b.数据间的联系弱,不同文件中的数据之间不存在联系;c.数据与程序之间存在依赖性,数据独立性较差。
数据库系统能够对数据进行更有效的管理:
a.数据库具有自描述特征;b.有较高的数据独立性;c.提供了完整性、安全性、数据恢复、并发控制四个方面的数据控制功能。
1.2数据模型(三种模式(视图对应用户模式),模式的优势,数据的逻辑、物理(物理存储变化对数据库结构没有影响)独立性),四个控制对数据的保护功能
(1)模型(Model):
是对现实世界的抽象。
在数据库技术中,我们用数据模型(DataModel)的概念来描述数据库的结构和语义,对现实世界的数据进行抽象。
(2)依据抽象层次差异可以将数据模型分为三类:
概念数据模型、逻辑数据模型、物理数据模型。
A.概念模型
常见的概念模型有实体-联系模型、扩展实体-联系模型、面向对象模型和谓词模型等B.逻辑模型
逻辑模型主要有层次、网状、关系和对象模型等四种。
层次模型的数据结构是树结构,网状模型的数据结构是有向图,这两种模型的特点是数据之间的联系用指针来实现。
关系模型是用二维表格表示实体集,用关键码表示数据之间的联系。
对象模型采用了面向对象技术,用“引用”(类似于指针)方式实现了数据之间的嵌套联系。
关系模型是由若干个关系模式组成的集合。
关系模式的实例称为关系,每个关系实际上是一张二维表格。
C.物理模型
物理模型是数据库最低层的抽象,它描述数据在磁盘或磁带上的存储方式(文件的结构)、存取设备(外存的空间分配)和存取方法(主索引和辅助索引)。
物理模型是与硬件和软件紧密相连的。
1.3数据库结构
数据库的三级模式
三级模式是指DBMS将数据库中的数据抽象成外模式、模式和内模式三个级别来进行组织和管理。
A.内模式也称物理模式或存储模式,是数据库物理结构和存储方式的描述,是数据在数据库内部的表示方式。
例如数据存储的文件组织方式、索引方式、是否压缩存储等。
DBMS提供内模式定义语言来严格地定义内模式。
B.逻辑模式或概念模式,是数据库中全部数据的整体逻辑结构的描述,是所有用户的公共数据视图。
它描述数据库中存储什么数据,以及这些数据间存在什么联系。
DBMS提供逻辑模式定义语言来严格地定义逻辑模式。
C.外模式也称子模式或用户模式,是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,一般是模式的子集,只描述整个数据库的某个部分。
DBMS提供用户模式定义语言来严格地定义用户模式。
采取三级模式结构的主要意义:
一是减少数据冗余,实现数据共享,故而把所有用户的数据进行综合,抽象成一个统一的数据库模式;二是提高存储效率,改善性能,把全局的数据按照物理组织的最优形式存放.
三级模式实现了对数据的三个抽象层次,它把数据的具体物理组织方式留给物理模式,使用户不必关心数据在计算机中的具体存储实现。
1.4数据库系统的组成(了解)
1.5GIS数据库概述
第二章E-R模型及关系模型(两个大题)
特点
1NF属性值是原子值
2NF消除了非主属性对候选键的部分函数依赖
3NF消除了非主属性对候选键的传递函数依赖
BCNF消除了每一个属性对候选键的传递函数依赖
4NF消除了非平凡且非函数以来的多值依赖
5NF消除了不是由超键组成的连接依赖
第三章SQL(查询和更新)
3.4SQL的数据更新
(1)插入
A插入一行中所有列的值
INSERTINTOemployee
VALUES(‘505’,‘朱建强’,‘男’,‘78-12-01’,‘99-03-25’,‘小车驾驶员’,2000,null,
‘p50’)
B.插入一行中部分列的值
INSERTINTOemployee(ecode,ename,sex,bdate,wdate,job,dcode)
VALUES(‘308’,‘刘小玲’,‘女’,’77-11-21’,’98-08-20’,‘办事员’,‘p31’);C.带有子查询的插入
建一个公司各部门平均工资表
CREATETABLED_Income(dcodechar(3),avgwagesmallint);
INSERTINTOD_Income
SELECTdcode,avg(wage)FROMemployeeGROUPBYdcode;
(2)删除
A.删除单行/多行记录
把名叫“朱建强”的职工记录从employee表中删除。
Deletefromemployewhereename=‘朱建强’;
B.删除所有记录
删除公司各部门平均工资表D_INCOME中的所有记录
DeletefromD_INCOME;
C.带有子查询的删除
删除在“销售研究中心”工作的职工记录。
Deletefromemployee
wheredcode=(selectdcodefromdepartmentwheredname=‘销售研究中心’);(3)修改
A.修改单个列的值
把工资低于2600元的科员、办事员的工资增加8%。
Updateemployeesetwage=wage*1.08Wherejobin(‘科员’,‘办事员’)andwage<2600;B.修改多个列的值
把职工刘志平调任为科员,工资增加5%。
Updateemployeesetjob=‘科员’,wage=wage*1.05Whereename=‘刘志平’;
C.带有子查询的修改语句
把工资低于所在部门平均工资90%的职工的奖金增加100元。
UpdateemployeeFsetawd=awd+100Wherewage<(select0.9*avg(wage)fromemployeeSwhereS.dcode=F.dcode);
第四章空间数据的关系化存储
4.1空间数据模型
4.2空间数据的关系化表示(典型的三种表示方式,主要掌握坐标序列法,大进制表示法)
(1)空间数据分解到多行形式
分解到多行表示方式的主要优点有:
A.使用基本数据类型在二维表格中表示几何数据,不需要数据库管理系统具有支持嵌套信息结构的特殊数据类型;
B.可以直接利用关系数据库查询语言在几何数据上进行各类查询运算。
缺点:
A.一个空间对象(包括线对象和面对象)往往需要几十条记录甚至更多的记录来存储,线ID和面ID重复存储而冗余量大,而且数据表的记录数庞大,难以胜任海量空间数据的存储与管理;
B.一个空间对象不是作为一个整体存储在一个数据项中,每获取一个空间对象都需要进行一系列的查询,访问效率很低;
C.一个空间实体类型的数据需要用多个表来存储,拓扑关系的维护代价比较高;D.数据之间存在着复杂的关系,数据编辑的运算量很大,且容易产生存储空间的碎片。
(2)空间数据分解到多列表示方式
分解到多列表示方式是OGC(OpenGeospatialConsortiumInc.)简单地理要素存取实施规范中定义的一种面向普通关系数据库管理系统的几何信息表示方式。
它将几何实体解构为坐标点的集合,并在Geometry表中用多个列来存储这些坐标值,所有x、y坐标值采用基本数据类型表示。
当描述一个几何实体的坐标点较多时,用多个行来存储该几何实体的坐标信息。
几何实体可以由相同或不同几何类型的多个部分组成,因此在Geometry表中还设有ETYPE和ESEQ两个列来存储各组成部分的几何类型和顺序号。
实际上,各坐标列存储的是这些组成部分的坐标信息。
(3)空间数据的二进制大对象表示方式
二进制大对象(BLOB)类型是在普通关系数据库中存储几何数据的最常用方式,它采用某种格式(例如WKB格式)将几何实体作为一个整体存储在一个二进制大对象类型中。
采用二进制大对象类型表示几何数据的优点是:
A.二进制大对象表示了整个几何实体,不需要依据多行或多列构建几何实体。
B.二进制大对象可以采用流(stream)方式进行读写,访问效率高。
C.二进制大对象不需要通过多行、多列或表间联系来表示几何实体,不需要对其进行复杂的数据关系维护。
D.二进制大对象是无格式数据,可以方便地进行数据压缩和加密等处理。
采用二进制大对象类型表示几何数据缺点是:
A.二进制大对象存储几何数据的具体格式不统一、不公开,由各GIS开发商控制决定。
B.数据库管理系统无法直接用SQL语句对二进制大对象类型中的几何信息进行操作,不能直接在二进制大对象类型上执行空间查询。
(4)空间数据的专属几何类型形式
在一些对象-关系数据库管理系统中,提供了若干种专属几何类型,从而可以将点、线、面等几何对象整体存储在这些专属几何类型中,并可以使用SQL语句对这些专属几何类型中的几何信息进行查询分析。
典型代表是OracleSpatial、Informix的Data-Blade以及DB2的Extension等。
此外,也可以利用对象-关系数据库管理系统提供的抽象数据类型ADT(AbstractDataType)定义功能自行定义几何数据类型来存储各种几何数据。
其特点是:
可以利用ADT在SQL系统中扩展数据类型,实现OGIS几何对象模型;ADT类型可以用于字段定义;SQL函数可以将ADT类型作为参数,可以返回ADT类型的值;一个ADT类型可以定义为另一个ADT类型的子类型,子类型可以出现在所有超类型能够出现的场合。
4.3OpenGIS简单地理要素SQL实现框架(这种数据类型表示方式,针对具体数据库能够认识各种表格有什么作用,不需死记,具体的表和列非考试范围)
4.4Oracle专属几何类型及其应用
第五章文件组织与索引技术
5.1数据存储设备(非考试内容)
5.2数据文件组织(域的组织(定长,变长域),几种存储变长数据的方式,记录的排列顺序,无序文件,有序文件,散列文件,聚簇文件(把多个(一般为两个)文件中的记录混排))
(1)数据库中的数据存储在操作系统管理的文件中
域->记录->(块)->文件
(2)域根据类型占据不同大小空间
A.定长域类型;B.变长域类型;C.二进制大对象类型(BLOB),常用于空间复杂对象的存储,至少可以提供存储管理和事务支持
(3)记录由域顺序排列组成
A.定长记录;B.变长记录:
含有变长域的记录
(4)定长记录文件
文件中所有的记录都具有相同的长度,从而一个块中所有的记录都是等长的(5)变长记录文件
文件中的记录可以有不同的长度,从而一个块中的各个记录可以具有不同的长度
1)定长记录文件
a.删除记录代价高:
把被删除记录之后的记录依次移上来,或把文件中最后一个记录填补到被删记录位置,或把被删结点用指针链接起来.
b.插入操作较简单:
在文件尾插入新记录,或在空闲记录中插入新记录.
B.变长记录文件
a.变长记录文件的定长表示法
预留空间:
使用长度为最大记录长度的定长记录。
对较短记录未使用的空间用特殊的空值或记录终结符号来填充。
使用指针:
变长记录用一系列通过指针链接起来的定长记录来表示。
b.变长记录文件的字节串表示法
尾标志法;记录长度法;分槽式页结构
2)文件中记录的组织
关系中的各个记录存放在文件中的什么位置
A.堆文件(无序文件)组织:
记录没有顺序,一条记录可以放在文件中的任何地方。
B.顺序文件组织:
记录根据搜索码的值顺序存储
C.散列文件组织:
散列函数的计算结果确定记录应存储到文件的哪个块中。
D.聚类文件组织:
逻辑上相互关联的多个关系中的记录可集中存储在一个文件中,不同关系中有联系的记录存储在同一个块内,通过降低I/O次数可极大提供查找速度。
5.3聚簇和空间聚簇(重点,其中空间涉及到两个维)
聚簇(Cluster):
是将有关的数据元组集中存放于一个物理块内或若干相邻物理块内或同一柱面内的数据存储结构。
a.搜索码值相近的记录在存储上也相近(表现在磁道和扇区上的相邻)
b.降低对于常见的大查询的响应时间(单搜索码值的查找,范围值的查找;降低寻道时间和寻扇区时间;提高磁盘缓存的命中率)
c.目前的商品化RDBMS都提供了将一个关系按照一个或几个属性进行聚簇存储的功能,即提供了聚簇索引的命令
整数、定点数、浮点数
简单数据类型的聚簇字符串、日期
具有完整的一维全序性质,其值可以排成线性单调序列,和存储器
的线性性质相符
复杂数据类型的聚簇两维以上的简单数据类型的组合向量
如空间数据、多搜索码的结构
多维数据类型的聚簇方法
a.将高维地址空间映射到一维地址空间
一一对应的映射,保证没有地址遗漏和重复
保持距离的映射,保证高维中相邻的地址也在一维中相邻
b.一一对应的映射容易构造,但保持距离只能近似实现
c.目前提出的映射方法有Z序(Z-order)、格雷码(Graycode)和Hilbert曲线等
Z序(Z-order)
Hilbert曲线
5.4索引和空间索引(两种空间索引方式)
索引:
支持对于所要求的数据进行快速定位的附加的数据结构。
每个索引结构有一个特定的搜索码与之关联(索引按一定的方式存储搜索码的值,并将搜索码与包含该搜索码的记录关联起来)
搜索码:
用于在文件中查找记录的属性或属性集。
基本索引结构
非顺序索引:
文件记录不按顺序排列,因此每个记录都必须都有一个索引项——稠密索引定义
索引表中顺序列出所有可能的键值(稠密索引),利用二分查找法查找所需键值,得到所需记录地址.该方法存取快,且无需记录顺序排列.
建立方法
记录按输入的顺序放入数据区,同时软件在索引区建立索引表,待全部数据输完后,软件自动将索引表排序.
维护
删除
删除索引项,数据区保留,重新组织文件时消除之
删除数据,索引保留,重新组织文件时消除之
增加
数据放在文件末尾,增加索引项,并排序
修改
查找相应位置,修改记录内容
顺序索引:
索引基于对搜索码值的一种排序,在索引文件中一般采用每块中最后一个记录的键值作为索引项——稀疏索引
定义
是一种按照逻辑键值排序的索引文件,是用嵌入索引的手段把顺序文件予以扩充,以加速查找,记录的物理顺序与索引中键值的顺序是一致的.
建立方法
数据按顺序分块存放(块间相临),记录每块的最后记录键值及块的首地址形成索引表维护
删除
物理删除
逻辑删除
增加
避免移动过多文件,将之暂放于溢出取.(重新组织文件时归位)
修改
查找相应位置,修改记录内容
索引紧凑,查找速度块
不足:
增删较麻烦,多次增删后,文件的空间利用率,存储效率均降低,需要重新组织文件
主索引:
若文件中的记录按照某个搜索码值的顺序来存储,则这个搜索码所对应的索引称作主索引,或者聚类索引(clusterindex)
辅助索引:
索引对应的搜索码值的顺序与文件记录的存储顺序不一致,也称作非聚集索引
一维搜索码的索引B树:
多叉树,分支数量受到上下限的限制
B+树:
平衡树,子树的层次差受到限制
区别:
1.内部节点是否存储实际的搜索码值
2.是否允许顺序索引
分段散列
类似散列表的结构网格文件
多维索引四分树
基于树形的结构R树
第六章数据库运行管理
6.4事务与并发控制(并发控制带来的问题和加锁的解决问题,协议规定,能够解决的问题,具体命令不需掌握)
(1)事务的概念
事务(Transaction)是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位
事务和程序是两个概念
a.在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序b.一个应用程序通常包含多个事务
c.事务是数据库恢复和并发控制的基本单位
(2)事务的特性
a.原子性(Atomicity):
一个事务中的所有操作是一个不可分割的逻辑单位,这些操作要么都做,要么都不做.
b.一致性(Consistency):
事务执行的结果要保持数据库的一致性,应该使数据库从一个一致性状态变到另一个一致性状态.
c.隔离性(Isolation):
并发执行的各个事务之间互不干扰,应象各个事务独立执行一样d.持续性(Durability):
一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。
接下来的其他操作或故障不应该对其执行结果有任何影响
(3)并发访问可能引起的问题
a.修改丢失(lostupdate):
两个事务读入同一数据并进行修改,其中一个事务提交的结果破坏了另一个事务的结果而导致其修改丢失
b.不可重复读(unrepeatableread):
某一事务读取数据后,另一事务执行更新操作,使前一事务无法再现前一次读取的结果
c.读“脏”数据(dirtyread):
一个事务T1修改某一数据并将其写回磁盘,另一事务T2读取同一数据后,第一个事务T1因某种原因被撤销,T1修改过的数据恢复到原值,T2读到的数据与数据库中的数据不一致。
(4)排它锁与共享锁
锁是事务并发执行的一种调度和控制手段,在操作前先对操作对象加锁。
分排他锁和共享锁两类。
排它锁(exclusivelock,记作X锁):
又称写锁。
一事务T对数据A加X锁后,T可以对A读写,而其他事务不能对A做任何操作(包括读写)。
排它锁保证了事务对数据的独占性。
当一个事务对某数据A加上X锁之后,其他事务就不得在该数据对象上加任何锁,此种锁是排它的。
共享锁(Sharinglock,记作S锁):
又称读锁。
一事务T对数据A加S锁之后,T可以读A但不能写A,而其他事务可以对A加S锁但不能加X锁。
共享锁保证了多个事务都可以读数据A,但他们都不能在T释放A上的S锁之前写A。
共享锁与共享锁兼容,而与排他锁不兼容。
(5)锁协议
在运用X锁和S锁对数据对象加锁时,还需要约定一些规则,例如申请哪种锁,何时申请,何时释放等,这些规则称为锁协议
锁协议可以分为三级:
一级、二级、三级锁协议
a.一级锁协议
事务T在对数据对象A修改之前,必须对A加X锁,直到事务结束(包括commit与rollback)才可以释放加在A上的X锁。
一级锁协议可以防止“修改丢失”所产生的数据不一致性问题。
这是因为采用一级锁协议之后,一事务T在对数据A做写操作时必须申请X锁,直至事务T结束,此X锁才释放,这样其他事务在此期间对A不能做任何操作,不会出现“修改丢失”问题。
在一级锁协议中,如果对数据对象只读不写,就不需要加锁,所以它不能保证可重复读、不能避免读“脏”数据。
b.二级锁协议
二级锁协议=一级锁协议+补充规则。
补充规则:
事务T在读数据对象A之前必须先对A加S锁,T在读完之后即释放加在A上的S锁。
二级锁协议包含了一级锁协议内容,因此可以防止丢失修改,同时它还可以防止脏读。
这主要是在事务对数据A做修改时用X锁,做读时用S锁,从而防止了脏读。
在二级锁协议中,由于读完数据即释放S锁,所以它不能保证可重复读。
c.三级锁协议
二级锁协议=一级锁协议+补充规则2。
补充规则2:
事务T在读数据对象A之前必须先对A加S锁,直到事务T结束之后才释放加在A上的S锁。
三级锁协议包含了一级锁协议内容,因此可以防止丢失修改,可以防止脏读,还进一步防止了不可重复读。
(6)三级锁协议的比较
SQL的数据控制
1.关系数据库提供统一的数据控制功能
SQL语言提供了数据控制功能,能够在一定程度上保证数据库中数据的安全性、完整性,并提供了一定的并发控制及恢复能力
2.数据库的完整性
a.数据库中数据的正确性和相容性
b.SQL语言定义完整性约束条件的语言成分主要体现在基本表、视图和索引的定义语句(CREATETABLE/VIEW/INDEX)中,可以在表的定义中定义主码、外码、取值唯一和其它的属性列级和表级约束条件
3.数据库的安全性
a.保护数据库,防止不合法的使用所造成的数据泄漏和破坏。
b.数据库系统中保证数据安全性的主要措施是进行存取控制(规定不同用户对于不同的数据对象所允许执行的操作,控制各用户只能存取有权存取的数据)
c.SQL语言提供了由DBA和数据对象所有者决定的权限定义和收回的手段(GRANT/REVOKE)(权限的对象可以定义到数据库、基本表、视图或属性列上)
4.并发控制和恢复
当多个用户并发地对数据库进行操作的时候,对他们加以控制、协调,以保证并发操作能够正确按照每个用户的操作语义进行,并保持数据库的一致性
恢复则是在发生各种类型的故障和错误,数据库处于不一致状态时,将数据库恢复到一致的状态
5.SQL语言提供了并发控制和恢复的功能
定义事务:
BEGINTRANSACTION
事务的提交:
COMMIT
事务的回滚:
ROLLBACK