体是地理数据库不同于一般数据库的功能之一。如查询满足下列条件的城市:
? 沪线东部(空间方位关系);
? 距离京沪线不超过50km(空间距离关系); ? 城市人口大于100万(属性信息查询);
面面查询 如与某个多边形相邻的多边形有哪些 ·面线查询 如某个多边形的边界有哪些线 ·面点查询 如某个多边形内有哪些点状地物 ·线面查询 如某条线经过(穿过)的多边形有哪些,某条链的左、右多边形是哪些
·线线查询 如与某条河流相连的支流有哪些,某条道路跨过哪些河流。
·线点查询 如某条道路上有哪些桥梁,某条输电线上有哪些变电站。
·点面查询 如某个点落在哪个多边形内。 ·点线查询 如某个结点由哪些线相交而成。 举例:点面查询 查询城镇是否位于平原区内
城镇邻接查询 从多边形与弧段关系的表中,检索出该多边形关系的所有弧段;从弧段关系的左右多边形的表中,检索出这些弧段所关联的多边形
包含关系查询 查询某一个面状所包含的某一类的空间对象
穿越查询
落入查询 查询一个空间对象它落在哪个空间对象之内。可采用空间运算,使用点在多边形内,线在多边形内,或面在多边形内的差别方法。
缓冲区查询 缓冲区查询根据用户需要给定一个点缓冲、线缓冲或面缓冲的距离,从而形成一个缓冲区的多边形,再根据多边形检索的原理,检索出该缓冲区多边形内的空间地物。
地址匹配查询 根据街道地址来查询事物的空间位臵和属性信息是地理信息系统特有的一种查询功能,这种查询利用地理编码,输入街道门牌号码,就可知道大致的位臵和所在的街区。
SQL查询
空间信息查询语言1、SQL查询语言;2、扩展的SQL
查询
多表连接查询:如查出美国地图数据中总人口大于1000万 且州府人口大于20万的州 。
SELECT *
FROM States, Statecap
WHERE States.state = Statecap .State and
States.pop_1990>10000000 and Statecap.pop_1990 >200000
嵌套查询 求世界地图中同伊拉克处于同一大洲的国家
SELECT country,continent FROM world
WHERE continent = (SELECT continent FROM world
WHERE country=?Iraq?
);首先求出伊拉克处于哪个洲;之后求出同伊拉克处于同一洲的国家。
扩展SQL查询 1、查询谓词的扩展 2、面向对象的扩展 3、模糊扩展
查询谓词的扩展:增加空间数据类型 (点、线、面)增加空间操作算子 (长度、面积)增加查询条件 (临近、叠加、经过)
Mapinfo在SELECT语句中增加了地理函数和地理运算符.
例 :美国“I 10”号高速公路经过哪几个洲? ? 先美国高速公路中找出 ?I10”号高速公路; ? 再找“I 10”号高速公路经过哪几个洲。 WHERE States.obj CONTAINS Us_Hiway.obj AND (States.obj INTERSECTS (SELECT obj FROM Us_Hiway WHERE us_Hiway.highway= ?I 10?)) (下划线的地方代表地理运算符)
例如查询三峡地区长江流域人口大于50万的县或市,扩展的SQL空间查询语句为: SELECT *
FROM 县或市
WHERE 县或市·人口>50万
AND CROSS (河流·名称=“长江”)
这些SQL扩充和应用有关,目前还没有形成标准。例: (1)选择河南省所有城市和人口 SELECT 城市名,人口 FROM 城市
WHERE CENTER(城市地图)INSIDE 河南; (2)选择流经河南省的所有河流的名称和河南境内长度 SELECT 河流名,LENGTH(INTERSECTS (ROUTE(河流流域图),河南)); FROM 河流 WHERE ROUTE (河流流域图)INTERSECTS 河南;
面向对象的扩展 采用面向对象的方法来设计SQL语言(OOSQL)。优点如下:
(1)良好的查询机制,易于实现持久性。
(2)对象简化了查询,解决了某些常见的 SQL难题。 OGIS协会(Open GIS)是由一些主要软件供应商
组成的联盟,负责制定与GIS互操作相关的行标准。OGIS的空间数据模型可以嵌入到各种编程语言中,例如C、Java、SQL等等,提出了一套规范,把二维地理空间ADT(abstract data type, 抽象数据类型)整合到SQL之中,并且包括了指定拓扑的操作和空间分析操作。在OGIS标准中,所指定的操作可分成三类:⑴ 用于所有几何类型的基本操作。例如,SpatialReference返回所定义对象几何体采用的基础坐标系统。⑵ 用于空间对象间拓扑关系的操作测试。例如,overlay判断两个对象内部是否有一个非空的交集。⑶ 用于空间分析的一般操作。例如,distance返回两个空间对象之间的最短距离。
模糊扩展 对查询谓词的空间扩展只能处理精确数据,无法表达自然语言中的模糊概念。因此,在具体应用中对SQL进行模糊扩展。
例如:查询面积较小,噪声小,住宅低价偏低的宗地号。
SELECT 宗地号 FROM table_price
WHERE (面积=?较小? AND 噪声=?小? AND 住宅低价=?偏低?); 问题
1、空间查询的几种方式?
2、什么是空间数据库的空间索引,空间索引的作用。
3、说明R树空间索引的作用原理。
4、用ArcView、MAPINFO练习各种空间查询方式。
第五章 数据库设计
数据库设计的任务 广义的数据库设计:是指建立数据库及其应用系统,包括选择合适的计算机平台和数据库管理系统、设计数据库、以及开发数据库应用系统等。其成果有二:一是数据库,二是以数据库为基础的应用系统。 狭义的数据库设计,是指根据一个组织的信息需求、处理需求和相应的数据库支撑环境,设计出数据库。其成果主要是数据库,不包括应用系统。本章重点讲解狭义的数据库设计。
数据库设计是指对于一个给定的应用环境,构造最优
的数据库逻辑模式和物理结构,建立数据库以及应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息管理要求和数据操作要求)。信息管理要求指在数据库中该存储管理哪些数据对象。数据操作要求指对数据对象进行的操作。如查询、增、删、改、统计等。
为什么需要设计数据库 良好的数据库设计:节省数据的存储空间;能够保证数据的完整性;方便进行数据库应用系统的开发;糟糕的数据库设计:数据冗余、存储空间浪费;内存空间浪费;数据更新和插入的异常
数据库和信息系统 数据库是信息系统的核心和基础:把信息系统中大量的数据按一定的模型组织起来;提供存储、维护、检索数据的功能;使信息系统可以方便、及时、准确地从数据库中获得所需的信息。 数据库是信息系统的各个部分能否紧密地结合在一起以及如何结合的关键所在;数据库设计是信息系统开发和建设的重要组成部分
数据库设计的特点一、数据库建设的基本规律:三分技术,七分管理,十二分基础数据;二、结构(数据)设计和行为(处理)设计相结合——结构(数据)设计:设计数据库框架或数据库结构;行为(处理)设计:设计应用程序、事务处理等。传统的软件工程忽视对应用中数的分析和抽象,只要有可能就尽量推迟数据结构设计;早期的数据库设计致力于数据模型和建模方法研究,忽视了对行为的设计
数据库设计方法:新奥尔良(New Orleans)方法——将数据库设计分为若干阶段和步骤;基于E-R模型的数据库设计方法——概念设计阶段广泛采;3NF(第三
范式)的设计方法——逻辑阶段可采用的有效方法 ;ODL(Object Definition Language)方法——面向对象的数据库设计方法
数据库设计人员应该具备的技术和知识 数据库的基本知识;数据库设计技术;计算机科学的基础知识;程序设计的方法和技巧;软件工程的原理和方法;应用领域的知识
数据库设计的过程(准备工作) 一、选定参加设计的人员
1. 数据库分析设计人员:数据库设计的核心人员;自始至终参与数据库设计;其水平决定了数据库系统的质量
2. 用户:在数据库设计中也是举足轻重的;主要参加需求分析和数据库的运行维护;用户积极参与带来的好处——加速数据库设计;提高数据库设计的质量 3. 程序员(在系统实施阶段参与进来,负责编制程序) 4. 操作员(在系统实施阶段参与进来,准备软硬件环境)二、数据库的范围:综合,多个独立的三、单机还是网络:设备、软件、网络的构建等四、人员培训五、软硬件需求六、时间七、人员的消耗八、可预见的回报
数据库设计的过程(六个阶段)
⒈需求分析阶段 准确了解与分析用户需求(包括数据与处理);是整个设计过程的基础,是最困难、最耗费时间的一步。需求分析是设计数据库的起点需求分析的结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用
2.概念结构设计阶段 是整个数据库设计的关键通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型(E-R图)。段将概念结构转换为某个DBMS所支持的数据模型(关系数据模型);对其进行优化。然后根据用户处理的要求、安全性的考虑,在基本表的基础上再建立必要的视图(View),形成数据的外模式
3.逻辑结构设计阶 为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法);根据DBMS特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式
⒋数据库物理设计阶段 运用DBMS提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计的结果:建立数据库;编制与调试应用程序;组织数据入库;并进行试运行
5.数据库实施阶段 数据库应用系统经过试运行后即可投入正式运行。在数据库系统运行过程中必须不断地对其进行评价、调整与修改。
⒍数据库运行和维护阶段
设计一个完善的数据库应用系统往往是上述六个阶段
的不断反复
数据库设计的基本步骤
需求分析 需求分析就是分析用户的需要与要求需求分析是设计数据库的起点;需求分析的结果是否准确地反映了用户的实际要求,将直接影响到后面各个阶段的设计,并影响到设计结果是否合理和实用 “软件项目中百分之四十至百分之六十的问题都是在需求分析阶段埋下的祸根 ” (Leffingwell 1997)。 需求分析的任务 调查应用领域——>进行详细分析后确定系统的功能和性能——>形成需求分析说明书
详细调查现实世界要处理的对象(组织、部门、企业等);充分了解原系统(手工系统或计算机系统);明确用户的各种需求;确定新系统的功能;充分考虑今后可能的扩充和改变
需求分析的重点 需求分析的重点是调查、收集与分析用户在数据管理中的信息要求、处理要求、安全性与完整性要求。(1)信息要求:用户需要从数据库中获得信息的内容与性质;由用户的信息要求可以导出数据要求,即在数据库中需要存储哪些数据(2)处理要求:对处理功能的要求;对处理的响应时间的要求;对处理方式的要求(批处理 / 联机处理)(3)新系统的功能必须能够满足用户的信息要求、处理要求、安全性与完整性要求。
需求分析的难点 确定用户最终需求的难点:用户缺少计算机知识,开始时无法确定计算机究竟能为自己做什么,不能做什么,因此无法一下子准确地表达自己的需求,他们所提出的需求往往不断地变化。设计人员缺少用户的专业知识,不易理解用户的真正需求,甚至误解用户的需求。新的硬件、软件技术的出现也会使用户需求发生变化。解决方法:设计人员必须采用有效的方法,与用户不断深入地进行交流,才能逐步得以确定用户的实际需求
需求分析的方法:一、调查清楚用户的实际需求 二、需求的分析与整理,与用户达成共识 三、进一步分析与表达这些需求 四、确定数据库设计方向
一、 调查用户需求
1、调查步骤
⑴ 调查组织机构情况:组织部门的组成情况;各部门的职责等
(2)调查各部门的业务活动情况。调查重点之一。各个部门输入和使用什么数据;如何加工处理这些数据;输出什么信息;输出到什么部门;输出结果的格式是什么
(3)在熟悉业务活动的基础上,协助用户明确对新系统的各种要求。调查重点之二。信息要求;处理要求;完全性与完整性要求
流 通 组 信息要求:(要数据库存取哪些数据) 处理要求:(由计算机完成哪些功能) 完全性与完整性要求: (如:一个学生最多不能借5本书;) 2. 常用调查方法 做需求调查时,往往需要同时采用多种方法;无论使用何种调查方法,都必须有用户的积极参与和配合;设计人员应该和用户取得共同的语言,帮助不熟悉计算机的用户建立数据库环境下的共同概念,并对设计工作的最后结果共同承担责任 常用调查方法
⑴跟班作业:通过亲身参加业务工作了解业务活动的情况;能比较准确地理解用户的需求,但比较耗时 ⑵开调查会:通过与用户座谈来了解业务活动情况及用户需求
⑶请专人介绍
⑷询问:对某些调查中的问题,可以找专人询问 ⑸设计调查表请用户填写:如果调查表设计合理,则很有效,且易于为用户接受
⑹查阅记录:查阅与原系统有关的数据记录 二、初步分析用户需求
确定新系统的边界:确定哪些功能由计算机完成或将来准备让计算机完成;确定哪些活动由人工完成;由计算机完成的功能就是新系统应该实现的功能。 三、进一步分析和表达用户需求
分析和表达用户的需求的常用方法 自顶向下的结构化分析方法(Structured Analysis,简称SA方法) SA方法从最上层的系统组织机构入手,采用逐层分解的方式分析系统,并用数据流图(Data Flow Diagram ,DFD)和数据字典(Data Dictionary,DD)描述系统。
数据存储数据来源处理数据输出系统高层抽象图
数据流图
数据流图:简称DFD,是一种能全面描述系统逻辑模型的工具,它可以用少数几种符号综合地反映出数据在系统中的流动、存储和处理情况。
数据流图基本符号含义:矩形。代表外部实体。圆形(椭圆)。代表对数据的处理。箭头。代表数据流。双横线。代表数据存储。
数据字典:面向数据流分析需要引进数据字典;数据字典以一种准确、简洁的方式对数据流图中数据流、外部实体、数据存储作说明;数据字典中有以下内容:数据项;数据结构;数据流;数据存储;数据处理 数据项:数据项是不可再分的数据单位;对数据项的描述。数据项描述={ 数据项名,数据项含义说明,别名,数据类型,长度,取值范围,取值含义,与其他数据项的逻辑关系,数据项之间的联系 }
数据结构:数据结构反映了数据之间的组合关系。一个数据结构可以由若干个数据项组成,也可以由若干个数据结构组成,或由若干个数据项和数据结构混合组成。对数据结构的描述。数据结构描述={数据结构名,含义说明,组成:{数据项或数据结构}} 数据流:数据流是数据结构在系统内传输的路径。对数据流的描述。数据流描述={ 数据流名,说明,数据流来源,数据流去向,组成:{数据结构},平均流量,高峰期流量}
数据存储:数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。对数据存储的描述数据存储描述={数据存储名,说明,编号,输入的数据流 ,输出的数据流 ,组成:{数据结构},数据量,存取频度,存取方式}
处理过程:具体处理逻辑一般用判定表或判定树来描
述;处理过程说明性信息的描述。处理过程描述={处理过程名,说明,输入:{数据流}, 输出:{数据流},
处理:{简要说明}}
数据项和数据结构数据项数据结构数据结构名:图书状态表数据结构编号:01特征数据项1数据项2数据项3数据项4数据项5名称书号书名借出日期已借人数书价编号01010102010301040105类型CCDNN长度922857小数位02数据字典单位人民币元值约束数字符正整数正数可否空值否否可否可取值个数<=1E7<=1E7不限不限不限
处理过程表和数据存储表处理过程表编号应用名功能定义输入信息输出信息1办证办证建档申请表读者档案,借书证2借书查书借出借书单借出记录3还书还书登记验书还书记录4催还逾期计罚读者档案催罚报表数据存储表编号信息名内容定义来源去向1读者资料姓名,单位,证号办证业务借还统计2借书记录姓名,书号,日期借还业务借还统计数据量:每年3000张数据量:每年3000张存取方式:随机存取,联机处理,检索存取方式:顺序存取,联机处理,更新存取频度:每天500次存取频度:每天300次 数据字典举例
例:学生学籍管理子系统的数据字典。 数据项,以“学号”为例: 数据项: 学号
含义说明:唯一标识每个学生 别名: 学生编号 类型: 字符型 长度: 8
取值范围:00000000至99999999 取值含义:前两位标别该学生所在年级, 后六位按顺序编号 与其他数据项的逻辑关系: 数据结构,以“学生”为例
“学生”是该系统中的一个核心数据结构: 数据结构: 学生
含义说明: 是学籍管理子系统的主体数据结构, 定义了一个学生的有关信息
组成: 学号,姓名,性别,年龄,所在系,