D:\Introduccion A Sql 2000 Server

37
Bases de Datos y SQL Bases de Datos y SQL

Transcript of D:\Introduccion A Sql 2000 Server

Page 1: D:\Introduccion A Sql 2000 Server

Bases de Datos y SQLBases de Datos y SQL

Page 2: D:\Introduccion A Sql 2000 Server

ÍndiceÍndice Introducción: Bases de datosIntroducción: Bases de datos Modelo relacionalModelo relacional SQLSQL

– Repaso de comandos principalesRepaso de comandos principales– Lenguaje de definición de datos (DDL)Lenguaje de definición de datos (DDL)– Lenguaje de manipulación (DML)Lenguaje de manipulación (DML)

DemostracionesDemostraciones Extensiones de SQL para el mundo SIGExtensiones de SQL para el mundo SIG Problemas con el modelo relacionalProblemas con el modelo relacional

Page 3: D:\Introduccion A Sql 2000 Server

¿Porque las bases de ¿Porque las bases de datos?datos?

Parece obvio hoy en díaParece obvio hoy en día Tradicionalmente sistemas trabajaban a base de Tradicionalmente sistemas trabajaban a base de

ficheros sueltos, y procedimientos sobre ellosficheros sueltos, y procedimientos sobre ellos– sistemas a medida de cada aplicación (pág. 2-9)sistemas a medida de cada aplicación (pág. 2-9)

Bdatos: separación de datos e su implementación Bdatos: separación de datos e su implementación (hardware/software)(hardware/software)– Independencia Independencia – Protección (permite sistema multiusuario)Protección (permite sistema multiusuario)– Flexibilidad (conectar la bdatos a todo)Flexibilidad (conectar la bdatos a todo)– Eficiencia (minimiza duplicidad de datos)Eficiencia (minimiza duplicidad de datos)– Integridad (minimiza errores lógicos)Integridad (minimiza errores lógicos)

Page 4: D:\Introduccion A Sql 2000 Server

Papel de BBDD en los SIGPapel de BBDD en los SIG Típicamente mucha énfasis en cursos de SIG en la Típicamente mucha énfasis en cursos de SIG en la

parte cartográficaparte cartográfica– digitalización, depuración, conversión de mapas digitalización, depuración, conversión de mapas

digitales...digitales...– enfoque geométrico enfoque geométrico – “ “ y se puede enlazar atributos a cada elemento y se puede enlazar atributos a cada elemento

geográfico...línea, polígono etc.”geográfico...línea, polígono etc.”– típico ejemplo: segmento de calle (línea) con 6 típico ejemplo: segmento de calle (línea) con 6

atributos: longitud, anchura, 4 números de policíaatributos: longitud, anchura, 4 números de policía La parte cartográfica es más visual, interesanteLa parte cartográfica es más visual, interesante

(transparencias)(transparencias)

Page 5: D:\Introduccion A Sql 2000 Server

Papel de BBDD (2)Papel de BBDD (2) La creación de la base de datos SIG supone la recogida La creación de la base de datos SIG supone la recogida

de datos carto(geo)gráficos y atributosde datos carto(geo)gráficos y atributos Ocupa gran parte del tiempo/presupuestoOcupa gran parte del tiempo/presupuesto Durante la Durante la explotaciónexplotación de un SIG, a largo plazo, la de un SIG, a largo plazo, la

actualización cartográfica juega un papel trivialactualización cartográfica juega un papel trivial Explotación del SIG sinónimo con Explotación del SIG sinónimo con consultarconsultar ...a la base ...a la base

de datos de datos (transparencias)(transparencias)

– la geometría se mantiene relativamente fija, los atributos nola geometría se mantiene relativamente fija, los atributos no– el SGBDR permite combinaciones de consultas casi sin limiteel SGBDR permite combinaciones de consultas casi sin limite– limitación: del limitación: del diseñodiseño de la base de datos de la base de datos– esta en vuestros manosesta en vuestros manos

Page 6: D:\Introduccion A Sql 2000 Server

Papel de BBDD (3)Papel de BBDD (3) Un experto en BBDD puede determinar el éxito Un experto en BBDD puede determinar el éxito

de (o salvar) un proyecto SIG; un cartógrafo node (o salvar) un proyecto SIG; un cartógrafo no UNIGIS ofrece UNIGIS ofrece dosdos asignaturas (módulos) asignaturas (módulos)

dedicadas a las BBDDdedicadas a las BBDD Aconsejables los dos módulosAconsejables los dos módulos Y si puede ser, un curso de Oracle después de Y si puede ser, un curso de Oracle después de

UnigisUnigis Si no puede ser, utilización de MS-Access (en Si no puede ser, utilización de MS-Access (en

adición a Quasar) para el primer móduloadición a Quasar) para el primer módulo

Page 7: D:\Introduccion A Sql 2000 Server

Modelos de bases de Modelos de bases de datosdatos

Modelo jerárquicoModelo jerárquico– estructura de árbol: relaciones 1:muchosestructura de árbol: relaciones 1:muchos– requiere duplicación de datosrequiere duplicación de datos

Modelo en redModelo en red– permiten mejor relación entre los datospermiten mejor relación entre los datos– todo conectado a todotodo conectado a todo– muy utilizado en aplicaciones COBOL (empresarial)muy utilizado en aplicaciones COBOL (empresarial)

Dibujos en la página 2-30Dibujos en la página 2-30 Modelo Modelo relacionalrelacional

– modelo dominante hoy en díamodelo dominante hoy en día

Page 8: D:\Introduccion A Sql 2000 Server

Modelo relacionalModelo relacional Dr Edgar (Ted) Codd, de la IBMDr Edgar (Ted) Codd, de la IBM 1970 “A relational model of data for large shared 1970 “A relational model of data for large shared

data banks” data banks” Communications of the ACM 13(6).Communications of the ACM 13(6). Modelo muy simple, flexible hasta cierto puntoModelo muy simple, flexible hasta cierto punto Todo en tablas, con columnas y filasTodo en tablas, con columnas y filas Operaciones para crear, borrar, modificar tablasOperaciones para crear, borrar, modificar tablas Otras operaciones (álgebra relacional) para Otras operaciones (álgebra relacional) para

manipular (consultar) estas tablas...manipular (consultar) estas tablas... El modelo se caracteriza por tres elementosEl modelo se caracteriza por tres elementos

Page 9: D:\Introduccion A Sql 2000 Server

Características del modeloCaracterísticas del modelo Elemento Elemento estructuralestructural: forma de guardar datos: forma de guardar datos

– todo en tablas, y nada más que tablastodo en tablas, y nada más que tablas– sin duplicar registros (filas, tuplas)sin duplicar registros (filas, tuplas)– campos (columnas) con nombres únicoscampos (columnas) con nombres únicos– entradas en un campo de solo un tipoentradas en un campo de solo un tipo

numérico (entero, real..), texto, fecha, etc.numérico (entero, real..), texto, fecha, etc.– todas las entradas serán datos atómicostodas las entradas serán datos atómicos– orden de filas/columnas no importaorden de filas/columnas no importa– valores nulos soportados (<> 0)valores nulos soportados (<> 0)– claves para crear relaciones (solo una es clave claves para crear relaciones (solo una es clave

primaria)primaria)

Page 10: D:\Introduccion A Sql 2000 Server

Características (2)Características (2) Elemento de Elemento de manipulaciónmanipulación: que se puede hacer: que se puede hacer

– Entrada: una o mas tablasEntrada: una o mas tablas– Salida: una tabla nuevaSalida: una tabla nueva– Codd define álgebra y cálculo relacional (el usuario no Codd define álgebra y cálculo relacional (el usuario no

los vea)los vea)– En la práctica, solo son 3 operadores fundamentales:En la práctica, solo son 3 operadores fundamentales:

SELECTSELECT: especificar “criterios de búsqueda” y crear una : especificar “criterios de búsqueda” y crear una nueva tabla con solo los datos que buscábamosnueva tabla con solo los datos que buscábamos

PROJECTPROJECT: copia un subconjunto de campos a una tabla : copia un subconjunto de campos a una tabla nuevanueva

JOINJOIN: “pega” dos tablas para crear una nueva: “pega” dos tablas para crear una nueva– Select y Join: operaciones críticas en el SIG vectorialSelect y Join: operaciones críticas en el SIG vectorial

Page 11: D:\Introduccion A Sql 2000 Server

Características (3)Características (3) Elemento de Elemento de integridadintegridad: control lógico: control lógico

– Integridad de Integridad de entidadesentidades garantiza que los campos clave tengan datos (no nulos) garantiza que los campos clave tengan datos (no nulos)

y que si existe un registro se puede localizary que si existe un registro se puede localizar– Integridad Integridad referencialreferencial

mantiene intactas relaciones (referencias) de clave a mantiene intactas relaciones (referencias) de clave a claveclave

no puedes borrar un registro al que depende otra tablano puedes borrar un registro al que depende otra tabla los dos campos clave deben ser del mismo tipolos dos campos clave deben ser del mismo tipo

Page 12: D:\Introduccion A Sql 2000 Server

Grado = 5C

ardi

nalid

ad =

215

5

Page 13: D:\Introduccion A Sql 2000 Server
Page 14: D:\Introduccion A Sql 2000 Server
Page 15: D:\Introduccion A Sql 2000 Server

¿Como manipular los ¿Como manipular los datos/tablas?datos/tablas?

Structured Query Language, Structured Query Language, SQLSQL Viene de Sequel (IBM, 1974), todavía se pronuncia Viene de Sequel (IBM, 1974), todavía se pronuncia

“siquel”, aunque oficialmente es “S.Q.L.”“siquel”, aunque oficialmente es “S.Q.L.” Un estándar ANSI, ISO pero...Un estándar ANSI, ISO pero...

– Los fabricantes han creado sus propias Los fabricantes han creado sus propias versiones no exactamente estándares...versiones no exactamente estándares...

– PL/SQL de Oracle <> SQL de MS Access (Jet)PL/SQL de Oracle <> SQL de MS Access (Jet)– Muchos SIG utilizan ficheros DBF o MDB, que los Muchos SIG utilizan ficheros DBF o MDB, que los

manipulan sin los gestores dBase o Accessmanipulan sin los gestores dBase o Access– Ningún fabricante soporta el 100% del estándarNingún fabricante soporta el 100% del estándar

Page 16: D:\Introduccion A Sql 2000 Server

SQL y el modelo relacionalSQL y el modelo relacional SQL no forma parte del modelo relacionalSQL no forma parte del modelo relacional Query-By-Example (QBE), otros lenguajes de Query-By-Example (QBE), otros lenguajes de

consulta pueden aplicarse también al modeloconsulta pueden aplicarse también al modelo SQL ha sido aceptado como el lenguaje SQL ha sido aceptado como el lenguaje de factode facto SQL aceptado por Codd, con maticesSQL aceptado por Codd, con matices Sirve como lenguaje completo: de definición Sirve como lenguaje completo: de definición

(DDL) y de manipulación (DML) de datos según (DDL) y de manipulación (DML) de datos según el modelo relacionalel modelo relacional

Tiene una estructura “pseudo inglésa”Tiene una estructura “pseudo inglésa” Se utiliza como Se utiliza como lingua francalingua franca entre sistemas entre sistemas

Page 17: D:\Introduccion A Sql 2000 Server

Repaso de comandos SQLRepaso de comandos SQL DDL: DDL:

– CREATE <tabla>CREATE <tabla>– DROP <tabla>DROP <tabla>

DML:DML:– SELECT <columna(s) de datos>SELECT <columna(s) de datos>– FROM <tabla(s)>FROM <tabla(s)>– WHERE <condición lógica>WHERE <condición lógica>

Page 18: D:\Introduccion A Sql 2000 Server

Ejemplos del sintaxis SQLEjemplos del sintaxis SQLcreate table zona (create table zona ( IdZonaIdZona smallint not null unique,smallint not null unique, NomZonaNomZona char(30) not null unique,char(30) not null unique, SuperfSuperf smallint,smallint, IdOfCDIdOfCD smallint not nullsmallint not null););create table tipo (create table tipo ( IdTipoIdTipo smallint not null unique,smallint not null unique, DescTipoDescTipo char(30) not null uniquechar(30) not null unique););

Page 19: D:\Introduccion A Sql 2000 Server

Mas ejemplos...Mas ejemplos...SELECT DISTINCT NomConsSELECT DISTINCT NomConsFROM FROM

ofarea,relacion,ofcd,zona,parcela,construofarea,relacion,ofcd,zona,parcela,construcc

WHERE NomAr=’Central’WHERE NomAr=’Central’AND ofarea.IdAr=relacion.IdArAND ofarea.IdAr=relacion.IdArAND relacion.IdOfCD=zona.IdOfCDAND relacion.IdOfCD=zona.IdOfCDAND zona.IdZona=parcela.IdZonaAND zona.IdZona=parcela.IdZonaAND parcela.IdCons=construc.IdCons;AND parcela.IdCons=construc.IdCons;

Page 20: D:\Introduccion A Sql 2000 Server

Mas ejemplos...Mas ejemplos...

SELECT SELECT NomAr,AVG(Superf),SUM(Superf)NomAr,AVG(Superf),SUM(Superf)FROM ofarea,relacion,zonaFROM ofarea,relacion,zonaWHERE ofarea.IdAr=relacion.IdArWHERE ofarea.IdAr=relacion.IdArAND relacion.IdOfCD=zona.IdOfCDAND relacion.IdOfCD=zona.IdOfCDGROUP BY NomAr;GROUP BY NomAr;

Page 21: D:\Introduccion A Sql 2000 Server

FROMDatum 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 ContactON Organisation.organisationID = Contact.organisationID) INNER JOIN (DatasetINNER JOIN (((((((((((Application_schema INNER JOIN Contact_Role_of_contact ONApplication_schema.datasetID = Contact_Role_of_contact.datasetID) INNER JOINDataset_Keyword ON Application_schema.datasetID = Dataset_Keyword.datasetID)INNER JOIN Dataset_quality ON Application_schema.datasetID =Dataset_quality.datasetID) INNER JOIN Distribution ONApplication_schema.datasetID = Distribution.datasetID) INNER JOIN Extent ONApplication_schema.datasetID = Extent.datasetID) INNER JOINExtent_Geographic_area ON (Extent.datasetID = Extent_Geographic_area.datasetID)AND (Application_schema.datasetID = Extent_Geographic_area.datasetID)) INNER JOINObject_type ON Application_schema.datasetID = Object_type.datasetID) INNER JOINOrganisation_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 JOINRole_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 ONApplication_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 ONObject_type.object_typeID = Attribute_type.object_typeID) ON Keyword.keywordID =Dataset_Keyword.keywordID) INNER JOIN Association_type ONObject_type.object_typeID = Association_type.from_object_typeID) INNER JOINObject_Structure_primitive ON Object_type.object_typeID =Object_Structure_primitive.object_typeID) ONHeight_reference_system.height_reference_systemID =Spatial_reference_system.height_reference_systemID) ONMap_projection.map_projectionID = Spatial_reference_system.map_projectionID) ONDatum.datumID = Spatial_reference_system.datumID

WHERE

Page 22: D:\Introduccion A Sql 2000 Server

RelacionesRelaciones Son BBDD relacionales, ¿no?Son BBDD relacionales, ¿no? Dividimos los datos entre varias tablas Dividimos los datos entre varias tablas

(específicas) para minimizar la duplicación de (específicas) para minimizar la duplicación de datos, y también las dependencias entre datos, y también las dependencias entre camposcampos– proceso conocido como normalización (sección 4.1.3)proceso conocido como normalización (sección 4.1.3)

Hay relaciones de 3 tipos entre atributosHay relaciones de 3 tipos entre atributos– 1:1, una persona tiene un DNI1:1, una persona tiene un DNI– 1:M, una persona tiene muchos amigos1:M, una persona tiene muchos amigos– M:N, una tienda tiene muchos clientes, cada uno de los M:N, una tienda tiene muchos clientes, cada uno de los

cuales es cliente de muchas tiendascuales es cliente de muchas tiendas

Page 23: D:\Introduccion A Sql 2000 Server

Relaciones (2)Relaciones (2) El modelo relacional no permite relaciones M:N, El modelo relacional no permite relaciones M:N,

por eso a veces hay que crear nuevas tablas por eso a veces hay que crear nuevas tablas (auxiliares) como “puentes” entre una tabla y otras(auxiliares) como “puentes” entre una tabla y otras

Ejemplo de la Videoteca:Ejemplo de la Videoteca:– tabla “clientes” (cada cliente es único)tabla “clientes” (cada cliente es único)– tabla “películas” (cada película es única)tabla “películas” (cada película es única)– Problema: ¿Como modelar el caso en que una película Problema: ¿Como modelar el caso en que una película

esta en manos de muchos clientes, y que cada cliente esta en manos de muchos clientes, y que cada cliente puede haber alquilado muchas películas?puede haber alquilado muchas películas?

Solución: nueva tabla “movimientos”, con campos Solución: nueva tabla “movimientos”, con campos en común con “clientes” y “películas”en común con “clientes” y “películas”

Page 24: D:\Introduccion A Sql 2000 Server

ClavesClaves Para enlazar tablas mediante un campo en Para enlazar tablas mediante un campo en

comúncomún Claves primarias (campo único), como DNI en Claves primarias (campo único), como DNI en

la tabla “clientes”la tabla “clientes” Claves externas (foráneas), como DNI en la Claves externas (foráneas), como DNI en la

tabla “movimientos”tabla “movimientos” Ejemplo de Neptuno en AccessEjemplo de Neptuno en Access

Page 25: D:\Introduccion A Sql 2000 Server

Diseño de la Base de Diseño de la Base de DatosDatos

Cuales son las Cuales son las entidades entidades (y sus(y sus atributos atributos) de ) de importanciaimportancia

Cuales son las Cuales son las relacionesrelaciones entre ellas entre ellas Creación de modelos E-A-R tratada en detalle en la Creación de modelos E-A-R tratada en detalle en la

sección 4 del libro Unigissección 4 del libro Unigis Luego diseñar una bdatos física de acuerdo con el Luego diseñar una bdatos física de acuerdo con el

modelomodelo Este diseño Este diseño nono es una tarea trivial es una tarea trivial La explotación del SIG (consultas posibles) se basa La explotación del SIG (consultas posibles) se basa

en este diseño !!en este diseño !! Rediseñar una base de datos Rediseñar una base de datos a posterioria posteriori MUY caro !! MUY caro !!

Page 26: D:\Introduccion A Sql 2000 Server

SQL en el ámbito SIGSQL en el ámbito SIG Se utiliza (SQL es un estándar Se utiliza (SQL es un estándar de factode facto))

– Cuando sabes SQL, sabes el 30% de cualquier SIG vectorialCuando sabes SQL, sabes el 30% de cualquier SIG vectorial PeroPero no es lenguaje óptimo para representar las no es lenguaje óptimo para representar las

relaciones espaciales (basadas en la geometría)relaciones espaciales (basadas en la geometría)– cerca de, pasando por, intersección con, dentro decerca de, pasando por, intersección con, dentro de

Y no permite interacción multimodalY no permite interacción multimodal– ¿Cuáles son las carreteras que pasan por este ¿Cuáles son las carreteras que pasan por este

<señalizando con ratón> barrio?<señalizando con ratón> barrio? En general: SQL es para tablas de textoEn general: SQL es para tablas de texto ““SQL sirve para modelar como la gente utiliza tablas”SQL sirve para modelar como la gente utiliza tablas”

Page 27: D:\Introduccion A Sql 2000 Server

Problemas con SQLProblemas con SQL Normalmente el SIG maneja datos Normalmente el SIG maneja datos

alfanuméricos (en tablas relacionales) y alfanuméricos (en tablas relacionales) y gráficos (en ficheros propietarios)...gráficos (en ficheros propietarios)...

Ejemplos de Arc/INFO, MapInfoEjemplos de Arc/INFO, MapInfo SQL no ofrece herramientas para la parte SQL no ofrece herramientas para la parte

gráficagráfica– No es eficiente guardar miles (millones) de coords No es eficiente guardar miles (millones) de coords

x,y,z en columnas largasx,y,z en columnas largas– Para representar un polígono hace falta crear por lo Para representar un polígono hace falta crear por lo

menos 5 tablas y sus relaciones correspondientesmenos 5 tablas y sus relaciones correspondientes– Demasiado complicado y lentoDemasiado complicado y lento

Page 28: D:\Introduccion A Sql 2000 Server

Problemas con SQL (2)Problemas con SQL (2) ¿Como optimizar almacenamiento de datos ¿Como optimizar almacenamiento de datos

espaciales?espaciales?– Puedes ordenar un campo y definir un Puedes ordenar un campo y definir un índiceíndice (que (que

siempre es unidimensional) sobre este camposiempre es unidimensional) sobre este campo– Contra la norma de Codd, que el orden no importaContra la norma de Codd, que el orden no importa– Y ¿qué campo vas a elegir? Sólo coord-x, sólo coord-y...Y ¿qué campo vas a elegir? Sólo coord-x, sólo coord-y...– En general, lectura de tablas relacionales es muy lenta En general, lectura de tablas relacionales es muy lenta

(olvídalo para dibujar elementos geográficos)(olvídalo para dibujar elementos geográficos) Indices bidimensionalesIndices bidimensionales

– Quadtree, KDB-tree (van Oosterom)Quadtree, KDB-tree (van Oosterom)– Decomposición/indexación regular en 2-D del espacioDecomposición/indexación regular en 2-D del espacio

Page 29: D:\Introduccion A Sql 2000 Server

Problemas con SQL (3)Problemas con SQL (3) No se puede definir “tipos de datos No se puede definir “tipos de datos

abstractos”abstractos” Modelo relacional define CHAR, ENTERO, REAL, Modelo relacional define CHAR, ENTERO, REAL,

FECHA, etc.FECHA, etc. Sería útil poder definir tipos geométricos por Sería útil poder definir tipos geométricos por

ejemplo:ejemplo:– línea, nodo, rectángulo...línea, nodo, rectángulo...

Reconocida hace 20 años la necesidad de Reconocida hace 20 años la necesidad de extensiones especiales al SQL para servir los extensiones especiales al SQL para servir los campos SIG, CAD, diseño...campos SIG, CAD, diseño...

Page 30: D:\Introduccion A Sql 2000 Server

Solución 1: Pseudo-SQLSolución 1: Pseudo-SQL Ejemplo de MapInfoEjemplo de MapInfo

– Han definido extensiones para “objetos Han definido extensiones para “objetos geográficos”geográficos”

aquí objeto = entidad (no es OO)aquí objeto = entidad (no es OO) obj contiene otro obj, tiene intersección con, esta obj contiene otro obj, tiene intersección con, esta

completamente dentro...completamente dentro...– Gestor de base de datos hecho por MapInfo, Gestor de base de datos hecho por MapInfo,

que entiende estas extensiones, y que trabaja que entiende estas extensiones, y que trabaja con ficheros DBFcon ficheros DBF

– No cumple con muchas normas del ANSI SQLNo cumple con muchas normas del ANSI SQL– Pero funciona...Pero funciona...

Page 31: D:\Introduccion A Sql 2000 Server
Page 32: D:\Introduccion A Sql 2000 Server

Solución 2: “SQL espacial”Solución 2: “SQL espacial” Bundock y otros (Smallworld)Bundock y otros (Smallworld) Herring y otros (Intergraph>>Oracle)Herring y otros (Intergraph>>Oracle) van Oosterom (en libro anexo Unigis)van Oosterom (en libro anexo Unigis) SQL-3 algo más flexible, permite algo de OOSQL-3 algo más flexible, permite algo de OO SQL-MM (multimedia)SQL-MM (multimedia) Oracle SpatialOracle Spatial (todos los datos en tablas (todos los datos en tablas

relacionales)relacionales) Basado en un nuevo modelo objeto-relacionalBasado en un nuevo modelo objeto-relacional Soporta algo de SQL, algo de conceptos OO, Soporta algo de SQL, algo de conceptos OO,

programación desde Java, C++, etc.programación desde Java, C++, etc.

Page 33: D:\Introduccion A Sql 2000 Server

Ejemplos, Oracle SpatialEjemplos, Oracle Spatial¿Cuales son los parques con ríos?¿Cuales son los parques con ríos?

SELECT parks.name SELECT parks.name FROM parks, rivers FROM parks, rivers WHEREWHEREsdo_geom.relate(parks.geometry, sdo_geom.relate(parks.geometry,

rivers.geometry,rivers.geometry,’’OVERLAPBDYINTERSECT’) = OVERLAPBDYINTERSECT’) =

’OVERLAPBDYINTERSECT’;’OVERLAPBDYINTERSECT’;

Page 34: D:\Introduccion A Sql 2000 Server

Otro de Oracle SpatialOtro de Oracle Spatial

Parques por donde pasa la carretera I-93Parques por donde pasa la carretera I-93

SELECT Parks.Name FROM Parks, Roads SELECT Parks.Name FROM Parks, Roads WHEREWHEREMDSYS.SDO_RELATE(Parks.Geometry, MDSYS.SDO_RELATE(Parks.Geometry,

Roads.Geometry,Roads.Geometry,’’MASK=ANYINTERACT’) = ’TRUE’MASK=ANYINTERACT’) = ’TRUE’AND Roads.Name = ’I-93’;AND Roads.Name = ’I-93’;

Page 35: D:\Introduccion A Sql 2000 Server

BBDD objeto-relacionalBBDD objeto-relacional En su infanciaEn su infancia Oracle liderando el campo, empujando fuerteOracle liderando el campo, empujando fuerte

– tiene grupo de 200 trabajando en temas especialestiene grupo de 200 trabajando en temas especiales BD relacionales poseen una masa crítica BD relacionales poseen una masa crítica

sustancialsustancial Todos los sistemas utilizan indexación 2-D (o Todos los sistemas utilizan indexación 2-D (o

n-D) para mejorar rendimienton-D) para mejorar rendimiento– tema tratado en otro modulo de Unigistema tratado en otro modulo de Unigis

Page 36: D:\Introduccion A Sql 2000 Server

El futuro de las BBDDEl futuro de las BBDD Ya que vivimos en tiempo de Internet, nadie sabeYa que vivimos en tiempo de Internet, nadie sabe ¿Será la propia Internet (web) nuestra base de ¿Será la propia Internet (web) nuestra base de

datos?datos?– Todo distribuidoTodo distribuido– Todo conectadoTodo conectado

Faltan nuevos índices, buscadoresFaltan nuevos índices, buscadores Es una base de datos con dominio abiertoEs una base de datos con dominio abierto

– crece al ritmo de 100.000 páginas (recursos) al díacrece al ritmo de 100.000 páginas (recursos) al día– no es posible la consulta “Dame un listado de todos los no es posible la consulta “Dame un listado de todos los

recursos sobre tal tema”recursos sobre tal tema” Otros tiempos, otros SIGsOtros tiempos, otros SIGs

Page 37: D:\Introduccion A Sql 2000 Server

Gracias por vuestra Gracias por vuestra atención.atención.