Introduccion a SQL Server 2000

37
Bases de Datos y SQL Bases de Datos y SQL

Transcript of Introduccion a SQL Server 2000

Page 1: Introduccion a SQL Server 2000

Bases de Datos y SQLBases de Datos y SQL

Page 2: Introduccion a SQL Server 2000

Í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: Introduccion a SQL Server 2000

¿Porque las bases de datos?¿Porque las bases de 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: Introduccion a SQL Server 2000

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: Introduccion a SQL Server 2000

Papel de BBDD (2)Papel de BBDD (2)

■ La creación de la base de datos SIG supone la La creación de la base de datos SIG supone la recogida de datos carto(geo)gráficos y atributosrecogida de 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 ...a la

base de datos base 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: Introduccion a SQL Server 2000

Papel de BBDD (3)Papel de BBDD (3)

■ Un experto en BBDD puede determinar el éxito de (o Un experto en BBDD puede determinar el éxito de (o salvar) un proyecto SIG; un cartógrafo nosalvar) un proyecto SIG; un cartógrafo no

■ UNIGIS ofrece UNIGIS ofrece dosdos asignaturas (módulos) dedicadas asignaturas (módulos) dedicadas a las BBDDa las BBDD

■ Aconsejables los dos módulosAconsejables los dos módulos■ Y si puede ser, un curso de Oracle después de UnigisY si puede ser, un curso de Oracle después de Unigis■ Si no puede ser, utilización de MS-Access (en adición Si no puede ser, utilización de MS-Access (en adición

a Quasar) para el primer móduloa Quasar) para el primer módulo

Page 7: Introduccion a SQL Server 2000

Modelos de bases de datosModelos de bases de datos

■ 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: Introduccion a SQL Server 2000

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: Introduccion a SQL Server 2000

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 primaria)claves para crear relaciones (solo una es clave primaria)

Page 10: Introduccion a SQL Server 2000

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 los Codd define álgebra y cálculo relacional (el usuario no los

vea)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 nueva : especificar “criterios de búsqueda” y crear una nueva tabla con solo los datos que buscábamostabla con solo los datos que buscábamos

■ PROJECTPROJECT: copia un subconjunto de campos a una tabla nueva: copia un subconjunto de campos a una tabla nueva■ 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: Introduccion a SQL Server 2000

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) y que garantiza que los campos clave tengan datos (no nulos) y que si existe un registro se puede localizarsi existe un registro se puede localizar

– Integridad Integridad referencialreferencial■ mantiene intactas relaciones (referencias) de clave a clavemantiene intactas relaciones (referencias) de clave a clave■ 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: Introduccion a SQL Server 2000

Grado = 5C

ardi

nali

dad

= 2

155

Page 13: Introduccion a SQL Server 2000
Page 14: Introduccion a SQL Server 2000
Page 15: Introduccion a SQL Server 2000

¿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 versiones Los fabricantes han creado sus propias versiones no exactamente estándares...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: Introduccion a SQL Server 2000

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 (DDL) y Sirve como lenguaje completo: de definición (DDL) y

de manipulación (DML) de datos según el modelo de manipulación (DML) de datos según el modelo relacionalrelacional

■ 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: Introduccion a SQL Server 2000

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: Introduccion a SQL Server 2000

Ejemplos del sintaxis SQLEjemplos del sintaxis SQL

create 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: Introduccion a SQL Server 2000

Mas ejemplos...Mas ejemplos...

SELECT DISTINCT NomConsSELECT DISTINCT NomConsFROM ofarea,relacion,ofcd,zona,parcela,construcFROM ofarea,relacion,ofcd,zona,parcela,construcWHERE 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: Introduccion a SQL Server 2000

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: Introduccion a SQL Server 2000

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: Introduccion a SQL Server 2000

RelacionesRelaciones

■ Son BBDD relacionales, ¿no?Son BBDD relacionales, ¿no?■ Dividimos los datos entre varias tablas (específicas) Dividimos los datos entre varias tablas (específicas)

para minimizar la duplicación de datos, y también las para minimizar la duplicación de datos, y también las dependencias entre camposdependencias entre campos– 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: Introduccion a SQL Server 2000

Relaciones (2)Relaciones (2)

■ El modelo relacional no permite relaciones M:N, por El modelo relacional no permite relaciones M:N, por eso a veces hay que crear nuevas tablas (auxiliares) eso a veces hay que crear nuevas tablas (auxiliares) como “puentes” entre una tabla y otrascomo “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 esta Problema: ¿Como modelar el caso en que una película esta

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

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

Page 24: Introduccion a SQL Server 2000

ClavesClaves

■ Para enlazar tablas mediante un campo en comúnPara enlazar tablas mediante un campo en común■ Claves primarias (campo único), como DNI en la Claves primarias (campo único), como DNI en la

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

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

Page 25: Introduccion a SQL Server 2000

Diseño de la Base de DatosDiseño de la Base de Datos

■ 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: Introduccion a SQL Server 2000

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: Introduccion a SQL Server 2000

Problemas con SQLProblemas con SQL

■ Normalmente el SIG maneja datos alfanuméricos (en Normalmente el SIG maneja datos alfanuméricos (en tablas relacionales) y gráficos (en ficheros tablas relacionales) y gráficos (en ficheros propietarios)...propietarios)...

■ Ejemplos de Arc/INFO, MapInfoEjemplos de Arc/INFO, MapInfo■ SQL no ofrece herramientas para la parte gráficaSQL no ofrece herramientas para la parte gráfica

– No es eficiente guardar miles (millones) de coords x,y,z en No es eficiente guardar miles (millones) de coords x,y,z en columnas largascolumnas largas

– Para representar un polígono hace falta crear por lo menos Para representar un polígono hace falta crear por lo menos 5 tablas y sus relaciones correspondientes5 tablas y sus relaciones correspondientes

– Demasiado complicado y lentoDemasiado complicado y lento

Page 28: Introduccion a SQL Server 2000

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 siempre (que siempre

es unidimensional) sobre este campoes 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: Introduccion a SQL Server 2000

Problemas con SQL (3)Problemas con SQL (3)

■ No se puede definir “tipos de datos abstractos”No se puede definir “tipos de datos 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 campos extensiones especiales al SQL para servir los campos SIG, CAD, diseño...SIG, CAD, diseño...

Page 30: Introduccion a SQL Server 2000

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, que Gestor de base de datos hecho por MapInfo, que entiende estas extensiones, y que trabaja con entiende estas extensiones, y que trabaja con ficheros DBFficheros DBF

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

Page 31: Introduccion a SQL Server 2000
Page 32: Introduccion a SQL Server 2000

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 relacionales) (todos los datos en tablas 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: Introduccion a SQL Server 2000

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: Introduccion a SQL Server 2000

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: Introduccion a SQL Server 2000

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 sustancialBD relacionales poseen una masa crítica sustancial■ Todos los sistemas utilizan indexación 2-D (o n-D) Todos los sistemas utilizan indexación 2-D (o n-D)

para mejorar rendimientopara mejorar rendimiento– tema tratado en otro modulo de Unigistema tratado en otro modulo de Unigis

Page 36: Introduccion a SQL Server 2000

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: Introduccion a SQL Server 2000

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