190 likes | 373 Views
Bases de Datos Espaciales SPATIAL QUERY LANGUAGES. Qué es un query?. Qué es un Query ? Una pregunta que se desarrolla en una base de datos Los Queries son expresados en una declaración del alto nivel El algoritmo de búsqueda no es expresado en la consulta Ejemplos:
E N D
Qué es un query? • Qué es un Query ? • Una pregunta que se desarrolla en una base de datos • Los Queries son expresados en una declaración del alto nivel • El algoritmo de búsqueda no es expresado en la consulta • Ejemplos: • SELECT S.nombre FROM Personas S WHERE S.genero = ‘F’
Qué es query language? • Qué es query language? • Un lenguaje a través del cual podemos expresar las consultas a una base de datos • Un query language restringe las tuplas de una tabla • Ejemplos: • Lenguaje Natural, e.j. Español, podemos expresar consultas a través de preguntas con palabras claves como Qué, Cunado, Donde, etc. • Lenguajes de programación, e.j. Java, • Se pueden expresar preguntas de diferente forma, indicando diferentes acciones • Structured Query Language(SQL)
Ejemplo de base de datos • Modelo conceptual • 3 Entities: Country, City, River • 2 Relationships: capital-of, originates-in • Attributes listed in Figure
Ejemplo de Bases de datos – Modelo Lógico • 3 Relaciones • Country(Name, Cont, Pop, GDP, Life-Exp, Shape) • City(Name, Country, Pop,Capital, Shape) • River(Name, Origin, Length, Shape) • Keys • Primary keys are Country.Name, City.Name, River.Name • Foreign keys are River.Origin, City.Country • Datos para las 3 tablas • Se muestran en el siguiente slide
Qué es SQL? • SQL – información General • Es un estándar para consultar bases de datos • Se soporta en el concepto lógico de las relaciones y el algebra relacional • Soportado por muchas herramientas como por ejemplo: IBM DB2, Oracle, MS SQL Server, Sybase, ... • 3 versiones: SQL1 (1986), SQL2 (1992), SQL 3 (1999) • Puede expresar cualquier acceso a una base de datos relacional • SQL and spatial data • ESRI Arc/Info maneja su estándar propietario de consultas • Otros GIS interactuan con las bases de Datos usando el estándar de SQL • Usando open database connectivity (ODBC) o otros protocolos • Muchas consultas son manejadas por el cliente no por el servidor
Componentes de SQL? • Data Definition Language (DDL) • Data Manipulation Language (DML) • Data Control Language (DCL)
Poblando tablas en SQL • Adicionando registros a una tabla • Estamento “INSERT INTO” • Se especifica el nombre de la tabla, los atributos y valores • Ejemplo: • INSERT INTO River(Name, Origin, Length, Shape) • VALUES(‘Magdalena’, ‘Col’, 6000,Line((1,2), (5,6), (8,9)))
Estamentos SELECT • Clauses • SELECT especifica las columnas • FROM especifica las tablas • WHERE especifica el filtro o restricción • ORDER BY especifica el tipo de orden • GROUP BY, HAVING especifica un nivel de agregación • Operators and functions • Operadores aritmeticos, e.j. +, -, … • Operadores de comparación, e.j. =, <, >, BETWEEN, LIKE… • Operadores lógicos, e.j. AND, OR, NOT, EXISTS, • Operadores de manipulación, e.j. UNION, IN, ALL, ANY, … • Funciones estadisticas, e.j. SUM, COUNT, ... • Etc.
Resultado SELECT Ejemplo 1. • SELECT Name, Country • FROM CITY
SELECT Ejemplo 2. SELECT * FROM CITY WHERE CAPITAL=‘Y ’ Resultado
SQL for Spatial Data • Open Geodata Interchange Standard (OGIS) • Define los tipos de datos para los estamentos DDL • Define operadores relacionales para los estamentos DML • Soportado por proveedores como por ejemplo: Oracle, IBM,...
OGIS Spatial Data Model • Tipos de geometrias: • Point, Curve, Surface and GeometryCollection • Operaciones sobre los datos espaciales: • Aplica a la definición de la geometría • SpatialReference, Envelope, Export,IsSimple, Boundary • Predicados sobre las relaciones topologicas • Equal, Disjoint, Intersect, Touch, Cross, Within, Contains • Analisis espacial • Distance,Buffer,Union, Intersection, ConvexHull, SymDiff
Ejemplo SELECT C1.Nombre FROM Paises C1, Paises C2 WHERETouch(C1.Shape,C2.Shape)=1 AND C2.Nombre =‘Colombia ’ Resultado
Ejemplo SELECT R.Name, C.Name FROM River R, Country C WHERECross(R.Shape,C.Shape)=1
Ejemplo SELECT Ci.Nombre FROM Ciudades Ci, Rios R WHEREOverlap(Ci.Shape, Buffer(R.Shape,300))=1 AND R.Name =‘Magdalena ’
Ejemplo CREATE VIEW Vecinos AS SELECT P1.Nombre , Count (Nombre) Vecinos FROM Paises P1, Paises P2 WHERETouch(P2.Shape,Co1.Shape) GROUP BY P1.Nombre