Sunteți pe pagina 1din 37

Seminario Unigis 21 de Enero 2000

Bases de Datos y SQL

Michael Gould

ndice

Introduccin: Bases de datos Modelo relacional SQL Repaso de comandos principales Lenguaje de definicin de datos (DDL) Lenguaje de manipulacin (DML) Demostraciones Extensiones de SQL para el mundo SIG Problemas con el modelo relacional

Porque las bases de datos?

Parece obvio hoy en da Tradicionalmente sistemas trabajaban a base de ficheros sueltos, y procedimientos sobre ellos
sistemas a medida de cada aplicacin (pg. 2-9)

Bdatos: separacin de datos e su implementacin (hardware/software)


Independencia Proteccin (permite sistema multiusuario) Flexibilidad (conectar la bdatos a todo) Eficiencia (minimiza duplicidad de datos) Integridad (minimiza errores lgicos)

Papel de BBDD en los SIG

Tpicamente mucha nfasis en cursos de SIG en la parte cartogrfica digitalizacin, depuracin, conversin de mapas digitales... enfoque geomtrico y se puede enlazar atributos a cada elemento geogrfico...lnea, polgono etc. tpico ejemplo: segmento de calle (lnea) con 6 atributos: longitud, anchura, 4 nmeros de polica La parte cartogrfica es ms visual, interesante
(transparencias)

Papel de BBDD (2)

La creacin de la base de datos SIG supone la recogida de datos carto(geo)grficos y atributos Ocupa gran parte del tiempo/presupuesto Durante la explotacin de un SIG, a largo plazo, la actualizacin cartogrfica juega un papel trivial Explotacin del SIG sinnimo con consultar ...a la base de datos
(transparencias)

la geometra se mantiene relativamente fija, los atributos no el SGBDR permite combinaciones de consultas casi sin limite limitacin: del diseo de la base de datos esta en vuestros manos

Papel de BBDD (3)

Un experto en BBDD puede determinar el xito de (o salvar) un proyecto SIG; un cartgrafo no UNIGIS ofrece dos asignaturas (mdulos) dedicadas a las BBDD Aconsejables los dos mdulos Y si puede ser, un curso de Oracle despus de Unigis Si no puede ser, utilizacin de MS-Access (en adicin a Quasar) para el primer mdulo

Modelos de bases de datos

Modelo jerrquico
estructura de rbol: relaciones 1:muchos requiere duplicacin de datos

Modelo en red
permiten mejor relacin entre los datos todo conectado a todo muy utilizado en aplicaciones COBOL (empresarial)

Dibujos en la pgina 2-30 Modelo relacional


modelo dominante hoy en da

Modelo relacional

Dr Edgar (Ted) Codd, de la IBM 1970 A relational model of data for large shared data banks Communications of the ACM 13(6). Modelo muy simple, flexible hasta cierto punto Todo en tablas, con columnas y filas Operaciones para crear, borrar, modificar tablas Otras operaciones (lgebra relacional) para manipular (consultar) estas tablas... El modelo se caracteriza por tres elementos

Caractersticas del modelo

Elemento estructural: forma de guardar datos


todo en tablas, y nada ms que tablas sin duplicar registros (filas, tuplas) campos (columnas) con nombres nicos entradas en un campo de solo un tipo

numrico (entero, real..), texto, fecha, etc.

todas las entradas sern datos atmicos orden de filas/columnas no importa valores nulos soportados (<> 0) claves para crear relaciones (solo una es clave primaria)

Caractersticas (2)

Elemento de manipulacin: que se puede hacer


Entrada: una o mas tablas Salida: una tabla nueva Codd define lgebra y clculo relacional (el usuario no los vea) En la prctica, solo son 3 operadores fundamentales:

SELECT: especificar criterios de bsqueda y crear una nueva tabla con solo los datos que buscbamos PROJECT: copia un subconjunto de campos a una tabla nueva JOIN: pega dos tablas para crear una nueva

Select y Join: operaciones crticas en el SIG vectorial

Caractersticas (3)

Elemento de integridad: control lgico


Integridad de entidades

garantiza que los campos clave tengan datos (no nulos) y que si existe un registro se puede localizar mantiene intactas relaciones (referencias) de clave a clave no puedes borrar un registro al que depende otra tabla los dos campos clave deben ser del mismo tipo

Integridad referencial

Cardinalidad = 2155

Grado = 5

Como manipular los datos/tablas?

Structured Query Language, SQL Viene de Sequel (IBM, 1974), todava se pronuncia siquel, aunque oficialmente es S.Q.L. Un estndar ANSI, ISO pero... Los fabricantes han creado sus propias versiones no exactamente estndares... PL/SQL de Oracle <> SQL de MS Access (Jet) Muchos SIG utilizan ficheros DBF o MDB, que los manipulan sin los gestores dBase o Access Ningn fabricante soporta el 100% del estndar

SQL y el modelo relacional

SQL no forma parte del modelo relacional Query-By-Example (QBE), otros lenguajes de consulta pueden aplicarse tambin al modelo SQL ha sido aceptado como el lenguaje de facto SQL aceptado por Codd, con matices Sirve como lenguaje completo: de definicin (DDL) y de manipulacin (DML) de datos segn el modelo relacional Tiene una estructura pseudo inglsa Se utiliza como lingua franca entre sistemas

Repaso de comandos SQL

DDL: CREATE <tabla> DROP <tabla> DML: SELECT <columna(s) de datos> FROM <tabla(s)> WHERE <condicin lgica>

Ejemplos del sintaxis SQL


create table zona ( IdZona smallint not null unique, NomZona char(30) not null unique, Superf smallint, IdOfCD smallint not null ); create table tipo ( IdTipo smallint not null unique, DescTipo char(30) not null unique );

Mas ejemplos...
SELECT DISTINCT NomCons FROM ofarea,relacion,ofcd,zona,parcela,construc WHERE NomAr=Central AND ofarea.IdAr=relacion.IdAr AND relacion.IdOfCD=zona.IdOfCD AND zona.IdZona=parcela.IdZona AND parcela.IdCons=construc.IdCons;

Mas ejemplos...
SELECT NomAr,AVG(Superf),SUM(Superf) FROM ofarea,relacion,zona WHERE ofarea.IdAr=relacion.IdAr AND relacion.IdOfCD=zona.IdOfCD GROUP BY NomAr;

FROM Datum INNER JOIN (Map_projection INNER JOIN (Height_reference_system INNER JOIN (((Keyword INNER JOIN ((Ellipsoid INNER JOIN (Geographic_area INNER JOIN (Standard_product INNER JOIN (Scale INNER JOIN ((Organisation INNER JOIN Contact ON Organisation.organisationID = Contact.organisationID) INNER JOIN (Dataset INNER JOIN (((((((((((Application_schema INNER JOIN Contact_Role_of_contact ON Application_schema.datasetID = Contact_Role_of_contact.datasetID) INNER JOIN Dataset_Keyword ON Application_schema.datasetID = Dataset_Keyword.datasetID) INNER JOIN Dataset_quality ON Application_schema.datasetID = Dataset_quality.datasetID) INNER JOIN Distribution ON Application_schema.datasetID = Distribution.datasetID) INNER JOIN Extent ON Application_schema.datasetID = Extent.datasetID) INNER JOIN Extent_Geographic_area ON (Extent.datasetID = Extent_Geographic_area.datasetID) AND (Application_schema.datasetID = Extent_Geographic_area.datasetID)) INNER JOIN Object_type ON Application_schema.datasetID = Object_type.datasetID) INNER JOIN Organisation_Role_of_organisation ON Application_schema.datasetID = Organisation_Role_of_organisation.datasetID) INNER JOIN Role_of_contact ON (Role_of_contact.roleID = Contact_Role_of_contact.roleID) AND (Organisation_Role_of_organisation.roleID = Role_of_contact.roleID)) INNER JOIN Role_of_organisation ON (Role_of_organisation.roleID = Organisation_Role_of_organisation.roleID) AND (Contact_Role_of_contact.roleID = Role_of_organisation.roleID)) INNER JOIN Spatial_reference_system ON Application_schema.datasetID = Spatial_reference_system.datasetID) ON (Dataset.datasetID = Dataset_quality.datasetID) AND (Dataset.datasetID = Dataset_Keyword.datasetID) AND (Dataset.datasetID = Contact_Role_of_contact.datasetID) AND (Dataset.datasetID = Organisation_Role_of_organisation.datasetID) AND (Dataset.datasetID = Object_type.datasetID) AND (Dataset.datasetID = Extent.datasetID) AND (Dataset.datasetID = Application_schema.datasetID) AND (Dataset.datasetID = Distribution.datasetID) AND (Dataset.datasetID = Spatial_reference_system.datasetID)) ON (Contact.contactID = Contact_Role_of_contact.contactID) AND (Organisation.organisationID = Organisation_Role_of_organisation.organisationID)) ON Scale.scaleID = Dataset.scaleID) ON Standard_product.standard_productID = Dataset.standard_productID) ON Geographic_area.geographic_areaID = Extent_Geographic_area.geographic_areaID) ON Ellipsoid.ellipsoidID = Spatial_reference_system.ellipsoidID) INNER JOIN Attribute_type ON Object_type.object_typeID = Attribute_type.object_typeID) ON Keyword.keywordID = Dataset_Keyword.keywordID) INNER JOIN Association_type ON Object_type.object_typeID = Association_type.from_object_typeID) INNER JOIN Object_Structure_primitive ON Object_type.object_typeID = Object_Structure_primitive.object_typeID) ON Height_reference_system.height_reference_systemID = Spatial_reference_system.height_reference_systemID) ON Map_projection.map_projectionID = Spatial_reference_system.map_projectionID) ON Datum.datumID = Spatial_reference_system.datumID WHERE

Relaciones

Son BBDD relacionales, no? Dividimos los datos entre varias tablas (especficas) para minimizar la duplicacin de datos, y tambin las dependencias entre campos
proceso conocido como normalizacin (seccin 4.1.3)

Hay relaciones de 3 tipos entre atributos


1:1, una persona tiene un DNI 1:M, una persona tiene muchos amigos M:N, una tienda tiene muchos clientes, cada uno de los cuales es cliente de muchas tiendas

Relaciones (2)

El modelo relacional no permite relaciones M:N, por eso a veces hay que crear nuevas tablas (auxiliares) como puentes entre una tabla y otras Ejemplo de la Videoteca:
tabla clientes (cada cliente es nico) tabla pelculas (cada pelcula es nica) Problema: Como modelar el caso en que una pelcula esta en manos de muchos clientes, y que cada cliente puede haber alquilado muchas pelculas?

Solucin: nueva tabla movimientos, con campos en comn con clientes y pelculas

Claves

Para enlazar tablas mediante un campo en comn Claves primarias (campo nico), como DNI en la tabla clientes Claves externas (forneas), como DNI en la tabla
movimientos Ejemplo de Neptuno en Access

Diseo de la Base de Datos

Cuales son las entidades (y sus atributos) de importancia Cuales son las relaciones entre ellas Creacin de modelos E-A-R tratada en detalle en la seccin 4 del libro Unigis Luego disear una bdatos fsica de acuerdo con el modelo Este diseo no es una tarea trivial La explotacin del SIG (consultas posibles) se basa en este diseo !! Redisear una base de datos a posteriori MUY caro !!

SQL en el mbito SIG

Se utiliza (SQL es un estndar de facto)


Cuando sabes SQL, sabes el 30% de cualquier SIG vectorial

Pero no es lenguaje ptimo para representar las relaciones espaciales (basadas en la geometra) cerca de, pasando por, interseccin con, dentro de Y no permite interaccin multimodal Cules son las carreteras que pasan por este <sealizando con ratn> barrio? En general: SQL es para tablas de texto SQL sirve para modelar como la gente utiliza tablas

Problemas con SQL

Normalmente el SIG maneja datos alfanumricos (en tablas relacionales) y grficos (en ficheros propietarios)... Ejemplos de Arc/INFO, MapInfo SQL no ofrece herramientas para la parte grfica
No es eficiente guardar miles (millones) de coords x,y,z en columnas largas Para representar un polgono hace falta crear por lo menos 5 tablas y sus relaciones correspondientes Demasiado complicado y lento

Problemas con SQL (2)

Como optimizar almacenamiento de datos espaciales?


Puedes ordenar un campo y definir un ndice (que siempre es unidimensional) sobre este campo Contra la norma de Codd, que el orden no importa Y qu campo vas a elegir? Slo coord-x, slo coord-y... En general, lectura de tablas relacionales es muy lenta (olvdalo para dibujar elementos geogrficos)

Indices bidimensionales
Quadtree, KDB-tree (van Oosterom) Decomposicin/indexacin regular en 2-D del espacio

Problemas con SQL (3)

No se puede definir tipos de datos abstractos Modelo relacional define CHAR, ENTERO, REAL, FECHA, etc. Sera til poder definir tipos geomtricos por ejemplo:
lnea, nodo, rectngulo...

Reconocida hace 20 aos la necesidad de extensiones especiales al SQL para servir los campos SIG, CAD, diseo...

Solucin 1: Pseudo-SQL

Ejemplo de MapInfo Han definido extensiones para objetos geogrficos

aqu objeto = entidad (no es OO)

obj contiene otro obj, tiene interseccin con, esta completamente dentro...

Gestor de base de datos hecho por MapInfo, que entiende estas extensiones, y que trabaja con ficheros DBF No cumple con muchas normas del ANSI SQL Pero funciona...

Solucin 2: SQL espacial

Bundock y otros (Smallworld) Herring y otros (Intergraph>>Oracle) van Oosterom (en libro anexo Unigis) SQL-3 algo ms flexible, permite algo de OO SQL-MM (multimedia) Oracle Spatial (todos los datos en tablas relacionales) Basado en un nuevo modelo objeto-relacional Soporta algo de SQL, algo de conceptos OO, programacin desde Java, C++, etc.

Ejemplos, Oracle Spatial


Cuales son los parques con ros?
SELECT parks.name FROM parks, rivers WHERE sdo_geom.relate(parks.geometry, rivers.geometry, OVERLAPBDYINTERSECT) = OVERLAPBDYINTERSECT;

Otro de Oracle Spatial


Parques por donde pasa la carretera I-93
SELECT Parks.Name FROM Parks, Roads WHERE MDSYS.SDO_RELATE(Parks.Geometry, Roads.Geometry, MASK=ANYINTERACT) = TRUE AND Roads.Name = I-93;

BBDD objeto-relacional

En su infancia Oracle liderando el campo, empujando fuerte


tiene grupo de 200 trabajando en temas especiales

BD relacionales poseen una masa crtica sustancial Todos los sistemas utilizan indexacin 2-D (o n-D) para mejorar rendimiento
tema tratado en otro modulo de Unigis

El futuro de las BBDD

Ya que vivimos en tiempo de Internet, nadie sabe Ser la propia Internet (web) nuestra base de datos?
Todo distribuido Todo conectado

Faltan nuevos ndices, buscadores Es una base de datos con dominio abierto
crece al ritmo de 100.000 pginas (recursos) al da no es posible la consulta Dame un listado de todos los recursos sobre tal tema

Otros tiempos, otros SIGs

Seminario Unigis 21 de Enero 2000

Gracias por vuestra atencin. gould@uji.es

S-ar putea să vă placă și