Apuntes BDC

Embed Size (px)

DESCRIPTION

Apuntes BDC

Citation preview

  • Apuntes de

    Bases de DatosCartogrficas

    Laura SebastiDepartamento de Sistemas Informticos y Computacin

  • Objetivos

    El objetivo principal de esta asignatura consiste en introducir los conceptos bsicos de lossistemas gestores de bases de datos actuales, por un lado, y por otro, la utilizacin de lasextensiones para el manejo de datos espaciales que proporcionan estos sistemas comoparte de un sistema de informacin geogrfica. Para ello deberemos ser capaces de:

    - entender los conceptos bsicos del diseo de bases de datos- ser capaces de interpretar y criticar diseos de bases de datos- entender los conceptos de las bases de datos espaciales y su implantacin e

    integracin en sistemas gestores de bases de datos tradicionales- ser capaces de realizar consultas mediante el lenguaje SQL a una base de datos

    general y a una base de datos que integre datos de negocio y datos espaciales

    Bibliografa

    La bibliografa consultada para elaborar estos apuntes es:- Bases de datos relacionales. Matilde Celma Gimnez, Juan Carlos Casamayor

    Rdenas, Laura Mota Herranz. Servicio de Publicaciones de la Universidad Politcnicade Valencia, 1997.

    - Introduccin a los sistemas de bases de datos. C.J. Date, Addison Wesley, 1998- Spatial databases : with application to GIS. Philippe Rigaux, Michel Scholl, Agns

    Voisard, Morgan Kaufmann, 2002.- Manual de usuario de Oracle 8i.

  • Indice

    Unidad temtica 1: Bases de datos relacionalesTema 1. Introduccin a las bases de datos 9Tema 2. El modelo Entidad-Relacin 17Tema 3. El modelo relacional 27Tema 4. Teora de la normalizacin 37

    Unidad temtica 2: Gestin de bases de datos relacionalesTema 5. Introduccin al lenguaje SQL 45Tema 6. Lenguaje de manipulacin de datos 53Manual del SQLWorksheet 75Prctica 1. Consultas alfanumricas 79Tema 7. Lenguaje de definicin de datos 83

    Unidad temtica 3: Bases de datos espacialesTema 8. Modelado de datos espaciales 91Tema 9. Gestin de datos espaciales en Oracle 8i 95Tema 10. Consultas espaciales en Oracle 8i 101Prctica 2. Consultas espaciales 107Prctica 3. Manipulacin de la base de datos 111

  • UNIDAD TEMTICA 1

    Bases de datos relacionales

    Objetivos Comprender el concepto de SGBD Conocer cmo se organizan los datos alfanumricos en una base de datos Ser capaces de interpretar un diagrama entidad-relacin Ser capaces de generar un diseo de base de datos que cumpla los principios bsicos

    del modelo relacional

    ContenidosTema 1. Introduccin a las bases de datosTema 2. El modelo Entidad-RelacinTema 3. El modelo relacionalTema 4. Teora de la normalizacin

  • Tema 1. Introduccin a las Bases de Datos

    1 Introduccin

    Hace unas dcadas, la principal forma de sintetizar y representar informacin geogrficaeran los mapas de papel. Desde entonces, el rpido desarrollo de nuevas tecnologas pararecoger y digitalizar datos geogrficos junto con una creciente demanda de manipulacin yanlisis interactivo de estos datos, ha dado lugar a la necesidad de software dedicado,concretamente de sistemas de informacin geogrfica (SIG). Un SIG almacena datosgeogrficos, recupera y combina estos datos para crear nuevas representaciones delespacio, proporciona herramientas para realizar anlisis espacial, etc. Debido al crecientevolumen de los datos geogrficos, una de las tareas principales de los SIG es lamanipulacin eficiente de grandes cantidades de informacin compleja. En sistemastradicionales, esta gestin la realizan sistemas gestores de bases de datos (SGBD). La granmayora de estos sistemas se basan en el modelo relacional. Actualmente se estnrealizando esfuerzos para extender la tecnologa de los SGBD de manera que seancapaces de gestionar tambin informacin geogrfica. La principal ventaja de estossistemas es que permiten al usuario manipular los datos espaciales y temticos de formaconjunta, pudiendo construir consultas complejar relacionando ambos tipos de datos.En este tema, veremos en primer lugar, qu es un SGBD, sus objetivos y funciones.Tambin comentaremos brevemente los distintos modelos de datos utilizados en SGBDrelacionales y por ltimo, introduciremos las bases de datos espaciales.

    2 Definiciones

    Una Base de datos consiste en una coleccin de datos persistentes e independientesusados por una organizacin determinada (Date, 1995).Un Sistema de base de datos es una coleccin integrada de ficheros relacionados, juntocon los detalles de la interpretacin de los datos que contienen.El software que gestiona el acceso a los datos contenidos en la base de datos es lo que sellama sistema de gestin de base de datos, SGBD (DBMS, Database ManagementSystem). La misin de un SGBD es proporcionar mtodos eficientes para definir, almacenary recuperar la informacin contenida en la base de datos.Los SGBD se disean para manejar grandes cantidades de informacin. Esta gestin delos datos incluye tanto la definicin de las estructuras para el almacenamiento como losmecanismos de acceso a los datos. Adems debe cuidar la seguridad de la informacinalmacenada en la base de datos, tanto contra las cadas del sistema como contra losintentos de acceso no autorizado. Programas de distintas aplicaciones interactan con elSGBD y el sistema debe evitar la posibilidad de obtener resultados anmalos.

  • Tema 1. Introduccin a las Bases de Datos

    10

    3 Objetivos de las Bases de Datos

    El objetivo principal de todo sistema de base de datos es proporcionar a la organizacin lagestin y control centralizado de los datos.En los sistemas de ficheros tradicionales no exista un modelo normalizado que regulase losdistintos tipos de objetos que se almacenaban as como las relaciones entre ellos y la formaen que deban ser gestionados; existen por lo general mltiples ficheros y muchasaplicaciones que los gestionan, dando lugar a mltiples vas para acceder a la informacin.Los SGBD proporcionan un nico cauce para acceder y gestionar la informacin, que esprecisamente el que posibilita el control centralizado de toda la informacin al servicio de laorganizacin. Este cauce nico, adems est controlado por una de las figuras esencialesen el SBD que es el administrador de la base de datos (ABD).

    Los objetivos bsicos de una base de datos son:! Disminuir la redundancia de datos y evitar la inconsistencia. En los sistemas

    tradicionales de almacenamiento de la informacin, debido a la falta de un modelonormalizado es posible que un objeto se represente en distintos ficheros. Estaredundancia aumenta los costes de almacenamiento y, lo que es peor, puede provocarinconsistencia de datos, es decir, que existan dos copias de un dato con valoresdiferentes. El control centralizado en los SBD permite eliminar o al menos controlarcualquier redundancia. Podemos decir que una norma bsica en todo sistema de BDpuede ser: un objeto se almacena una sola vez en un solo lugar.

    ! Hacer posible la comparticin de datos. Distintos programas de aplicacin puedenestar accediendo a los mismos datos, que estn almacenados en un slo lugar paradistintos fines.

    ! Mantener la integridad de los datos. El concepto integridad de los datos significa quelos datos almacenados en la base de datos son correctos. El control centralizadotambin permite la posibilidad de mantener controles que garanticen la integridad detodos los datos almacenados en la BD.

    ! Garantizar la seguridad de los datos. En toda organizacin existen datos que sonconfidenciales y no pueden ser accedidos por usuarios no autorizados. El ABD debeasegurar que se siguen los procedimientos adecuados en el acceso a los datos,incluyendo esquemas de autentificacin y validaciones adicionales. Los SBD permitenimplantar distintos niveles de seguridad para distintos tipos de usuarios y operaciones.

    Insercin

    Actualizacin BD

    Recuperacin

    Tratamiento

  • Tema 1. Introduccin a las Bases de Datos

    11

    ! Proporcionar independencia de datos. Este concepto hace referencia a la necesidadde establecer una desconexin entre los programas de aplicacin y los datosalmacenados. Los usuarios interactuan con una representacin de los datosindependientemente de la representacin que estos datos tienen en los dispositivosfsicos, y es el SGBD el encargado de traducir las consultas y modificaciones delusuario en operaciones eficientes sobre las estructuras de datos fsicas. Esto es muydiferente del tratamiento de ficheros tradicional, donde la estructura de un fichero juntocon las operaciones sobre l estn embebidas en un programa de acceso.Este mecanismo es alcanzable a travs del uso de diferentes niveles de abstraccin.Se distinguen tres niveles de abstraccin:- El nivel fsico trabaja sobre las estructuras de almacenamiento- El nivel lgico o conceptual define la representacin de los datos propuesta por el

    usuario

    - El nivel externo corresponde a una vista parcial de la base de datos proporcionadapor una determinada aplicacin.

    Para ilustrar el concepto de abstraccin de datos, consideremos un grupo de programas deaplicacin que se utilizan en un ayuntamiento. Cada aplicacin puede tener necesidad depercibir el mundo real de manera diferente. Fijemonos, por ejemplo, en el objeto PARCELAy en las aplicaciones de IMPUESTOS y AYUDAS_AGRARIAS.La aplicacin de IMPUESTOS recauda cada trimestre el impuesto correspondiente a laparcela, por lo que necesita conocer su localizacin y su extensin.Por otro lado, la aplicacin de AYUDAS_AGRARIAS debe conocer el tipo de cultivo de laparcela y su extensin para conceder una ayuda u otra.Un SGBD, a diferencia de los sistemas tradicionales de ficheros, permite que los datospuedan ser compartidos por ambas aplicaciones; por ello es necesario mantener unaversin de los datos que integre las distintas percepciones de los diferentes usuarios (ennuestro caso las dos aplicaciones) sobre un mismo objeto (PARCELA).Esta visin integrada es lo que se llama visin conceptual del objeto PARCELA. Sinembargo, del mismo objeto PARCELA existen distintas visiones externas, una para cadaaplicacin. Los SGBD permiten la coexistencia de ambas percepciones del mismo objetodebido a que pueden deducirse a partir de la visin conceptual, sin ms que realizar unaadecuada transformacin, que en nuestro caso no es ms que ocultar los atributosinnecesarios para cada aplicacin. Podemos decir entonces que la visin conceptual deun objeto es la descripcin global de dicho objeto tal y como se registra en la BD. Yaque esta descripcin global no incluye detalles tales como mtodos de acceso, estructurade almacenamiento de los datos, etc, los usuarios no podrn incluir estos detalles en susaplicaciones, que es lo que se pretende. Los detalles de almacenamiento a nivel fsico sedescriben en un nuevo nivel de abstraccin que es la visin interna del objeto tal y comose almacena en el sistema de ordenador que soporta la base de datos.En cada uno de los niveles la visin de los datos se describe mediante lo que se llamaesquema. El objetivo fundamental de esta arquitectura en tres niveles es conseguir que elesquema conceptual sea una descripcin estable de los datos de la organizacin eindependiente de las vistas y de la forma de almacenamiento de los datos.

  • Tema 1. Introduccin a las Bases de Datos

    12

    4 Modelos de Datos

    Un modelo de datos se puede definir como un conjunto de herramientas conceptuales tilespara describir los datos, las relaciones entre ellos y la semntica asociada a los datos.Dependiendo de la fase de construccin del SBD podemos distinguir dos tipos de modelos:modelos de diseo y modelos de representacin. Ambos servirn para describir los datosen los niveles conceptual y externo.

    4.1 Modelos de diseoLos modelos de diseo son herramientas para captar y describir la informacin del mundoreal, pero no nos aportan informacin sobre qu tipo de estructuras se utilizarn paraalmacenar los datos, qu tipo de operaciones pueden realizarse sobre los mismos, etc.Estos modelos no pueden implementarse directamente en los sistemas comercialesconocidos; deben transformarse previamente en un modelo de representacin. Uno de losms conocidos es el modelo entidad/relacin, que veremos en el tema 2.

    4.2 Modelos de representacinLos modelos de representacin adems de permitirnos describir los datos del mundo realcumplen otra serie de requisitos que hacen que puedan implementarse posteriormente enalguno de los sistemas comerciales conocidos (describen la implementacin en alto nivel):- Aportan las estructuras necesarias para almacenar los datos.- Imponen tipos de operaciones y la forma de llevarlas a cabo.Diferentes modelos llevan asociados diferentes lenguajes para la definicin de lasestructuras de datos y la manipulacin de los datos. El modelo que ms se utilizaactualmente es el modelo relacional, que veremos en el tema 3. Los datos y las relacionesentre ellos se representan por medio de una serie de tablas, cada una de las cuales tieneun nmero de columnas con nombres nicos. Entre los SGBD relacionales comercialespodemos destacar: DB2, INGRES, ORACLE, INFORMIX y para ordenadores personalesNOMAD, DBASE IV, FOXBASE, ACCESS. Otros modelos son el modelo en red y elmodelo jerrquico.

    5 Facilidades del SGBD

    ! Proporciona el interfaz entre los datos almacenados y los programas de aplicacin olas consultas hechas al sistema. Para ello, facilita dos herramientas bsicas: LDD(DDL) y LMD (DML).! LDD es el lenguaje de definicin de datos; permite definir el esquema

    conceptual y aportar detalles de cmo se implementar el esquema fsicamente.Esta definicin incluye los objetos, los datos sobre cada objeto, las relacionesentre ellos, as como tambin restricciones en determinados campos etc. Elresultado de la compilacin de este lenguaje son las estructuras de datos yadems una informacin sobre el esquema que se almacenar en el diccionario de

  • Tema 1. Introduccin a las Bases de Datos

    13

    datos (o catlogo); es decir, el diccionario de datos contiene metadatos, datosacerca de los datos.

    ! LMD es el lenguaje de manipulacin de datos; permite realizar la recuperacin yactualizacin (insercin, actualizacin y borrado) de los datos almacenados en labase de datos. La primera de estas operaciones es lo que se llama normalmentequery y a la parte del LMD que permite esta operacin lenguaje de query; sinembargo suelen usarse indistintamente los trmino lenguaje de query y LMD.Puede ser procedimental, si los usuarios tienen que especificar las operacionesque desean hacer y la manera de hacerlas (BD jerrquicas y en red) o noprocedimental, si el usuario slo el indica el tipo de operacin que desea hacerpero no cmo hacerla. Los comandos para hacer estas operaciones puedenusarse interactivamente o embebidos en un lenguaje de programacinconvencional (lenguaje husped).

    Veremos el LDD y LMD que proporciona el lenguaje SQL en la unidad temtica 2.! Interacta con el gestor de ficheros del S.O para almacenar los datos de forma

    segura y eficiente. Las diferentes sentencias LMD son traducidas a comandos de bajonivel para gestionar ficheros; as el SGBD se encarga realmente del almacenamiento,la recuperacin y actualizacin de la BD.

    ! Implanta el control de seguridad e integridad. El ABD puede haber establecidodeterminadas restricciones para algunos datos (rangos, controles de seguridad, etc) yel SGBD verifica si, en algn caso, los accesos a la BD violan estas restricciones yrealiza las acciones apropiadas.

    ! Lleva a cabo copias de seguridad y recuperacin de datos. Cualquier sistema estsujeto a fallos o errores; si se pierde la informacin de la BD por algn motivo, esresponsabilidad del SGBD detectar estos fallos y arrancar los procedimientos derecuperacin.

    ! Realiza el control de concurrencia. En un entorno de multiprogramacin, variosusuarios pueden estar accediendo a los datos concurrentemente; el SGBD controla lasacciones de los distintos usuarios para preservar la consistencia de los datos.

    Algunos SGBD, diseados para ejecutarse en ordenadores personales pequeos, nocuentan con parte de las funciones mencionadas: por ejemplo, son monousuario, con lo queno tienen que realizar el control de concurrencia, o dejan al usuario las tareas de respaldo,recuperacin y seguridad. Aunque esto puede ser aceptable para las bases de datospersonales, no es de ninguna manera adecuado para cumplir con los requerimientos deuna empresa de tamao mediano o grande.

    6 Ventajas y desventajas de un SGBD

    Sobre las ventajas ya hemos hablado suficientemente a lo largo de este tema. Resumiendopodemos decir que un SGBD proporciona:! Gestin y control centralizado de los datos.! Reduccin de redundancias.! Comparticin de datos.

  • Tema 1. Introduccin a las Bases de Datos

    14

    ! Integridad.! Seguridad.! Control de concurrencia.! Independencia de datos, permitiendo cambios y crecimiento.

    Con respecto a las desventajas (relacionadas sobre todo con SGBD grandes), debemoscitar las siguientes:! Coste de software y hardware: Adems del coste de comprar el software,

    probablemente haya que ampliar o subir de versin el hardware (upgrade) para que elprograma pueda almacenarse y funcione correctamente; adems, si no, el sistemapodra degradarse y los tiempos de respuesta subir drsticamente por la sobrecargaque aade el SGBD al tener que implementar la seguridad, integridad y datoscompartidos. Recordemos que estamos hablando de SGBD grandes, no por supuestode los de ordenadores personales.

    ! Coste de migracin de aplicaciones: Un coste adicional, tambin, es la migracin delas aplicaciones para pasar a un entorno integrado.

    ! Las operaciones de respaldo y recuperacin de los datos en caso de fallo soncomplejas, debido al acceso concurrente de mltiples usuarios.

    ! Criticidad del SGBD: La centralizacin tambin significa que los datos de laorganizacin, estn almacenados en un nico lugar, en la base de datos, con lo quecualquier fallo de seguridad u operacin del SGBD puede afectar a toda la organizacin(sistemas distribuidos y compartidos) .

    7 Introduccin a las bases de datos espaciales

    Un objeto geogrfico tiene dos componentes:! La componente espacial o geomtrica, que describe la localizacin, forma, orientacin

    y tamao del objeto en el espacio 2D o 3D.! La componente no espacial, es decir, los atributos temticos o descriptivos.Tradicionalmente, los datos espaciales o geodatos, han sido almacenados en bases dedatos especializadas, es decir, los datos se almacenan y gestionan en una base de datostotalmente especfica y dedicada a ello, donde slo se almacenan datos espaciales para suposterior gestin y manipulacin. Los datos temticos son tratados de una maneratotalmente independiente a los datos espaciales, sin existir ningn tipo de relacin entreambos tipos de datos en cuanto a su almacenamiento y gestin, por lo que se pierden lascapacidades de anlisis de consultas espaciales, se infrautiliza la BD, se derrocha espaciode almacenamiento, y lo que es peor, tiempo y dinero en la mala gestin de la informacin.Actualmente, la tecnologa ha evolucionado, y con ella, ha aparecido la posibilidad delalmacenamiento y la gestin conjunta de cualquier tipo de datos dentro de una misma BD,gracias a la incorporacin de extensiones espaciales a los propios motores de la BD. Conello, datos temticos y datos espaciales pueden ser combinados en una misma consulta,aumentando as de una forma hasta ahora inimaginable, las posibilidades de nuevas

  • Tema 1. Introduccin a las Bases de Datos

    15

    consultas y aplicaciones, lo que supone una autntica revolucin en el mundo de lastecnologas SIG. Estos sistemas cambian la orientacin de los SIG desde SIG cntricos aSistemas Gestores de la Base de Datos cntricos, en los cuales, los datos espaciales sonsimplemente otro tipo de datos dentro del entorno del Sistema Gestor de la Base de Datos.Ejemplos de SGBD que actualmente permiten el anlisis espacial integrado en la misma BDson DB2 (IBM), Informix, Oracle 8i, Sybase, etc.El objetivo es una completa integracin de los datos espaciales dentro de la BD. Para llegara este tipo de estructuras es necesario un sistema gestor de la base de datos as comoextensiones S.Q.L estandar que soporten la definicin, almacenamiento, gestin yactualizacin de datos que poseen tanto atributos espaciales como atributos no espaciales.Un SGBD debe tener la capacidad de entender los datos y operadores espaciales y deacceder eficientemente a la base de datos espacial. Para ello necesitamos, un soporte paraun tipo de datos abstractos, as como funciones e ndices definidos por el usuario. De estaforma se consigue que los usuarios puedan ejecutar consultas integradas sobre cualquiertipo de datos (tanto espaciales como datos de negocio) usando el lenguaje S.Q.L.El tratamiento de datos espaciales requiere una extensin de las funcionalidades del SGBD.Entre ellas podemos destacar la extensin de los mtodos de almacenamiento de datos yde bsqueda de los datos implicados en una determinada consulta, del tipo de operadoresutilizables en una consulta (operadores espaciales y operadores de anlisis avanzado quepermiten la creacin de nuevas geometras).Ante esta revolucin, como es lgico, ha surgido la necesidad del establecimiento de unanormativa, para que los usuarios puedan acceder y procesar los datos desde una granvariedad de fuentes. Para ello, se crea el OGC (Open Gis Consortium) que especifica elcamino que deben seguir las BD espaciales para la consecucin de unos objetivoscomunes con el fin de obtener la mxima eficacia en la gestin de la informacin.

  • Tema 2. El modelo Entidad-Relacin

    1 Introduccin

    El modelo Entidad-Relacin fue propuesto por Chen a mediados de los aos setenta comomedio de representacin conceptual de los problemas y para representar la visin de unsistema de forma global. Fsicamente adopta la forma de un grfico escrito en papel al quese denomina diagrama Entidad-Relacin. Sus elementos fundamentales son lasentidades y las relaciones.

    2 Entidades

    Entidad: Una entidad es una cosa u objeto distinguible de todos los dems, y tiene unconjunto de propiedades que identifican la identidad. Ejemplo: PARCELAAtributo: Los atributos describen propiedades que posee cada entidad, y cada atributotiene un conjunto de valores permitidos, llamados dominio o conjunto de valores.Ejemplo: tipo_cultivo, cuyo dominio puede ser (ctricos, via, olivo, ...).Los atributos se distinguen en:- Simples y compuestos: los simples no estn subdivididos en subpartes mientras que

    los compuestos se pueden dividir en otros atributos. Ejemplo: el atributo direccin sepuede subdividir en (calle, nmero, piso, puerta,...)

    - Univalorados y multivalorados: los univalorados tienen un solo valor para una entidadconcreta y los multivalorados tienen un conjunto de valores para una entidadespecfica. Ejemplo: al atributo telfono se le pueden asignar varios valorescorrespondiendo al telfono particular, al del trabajo, al mvil, ...

    - Nulos: se usa cuando una entidad no tiene un valor para un atributo, o el valor esdesconocido.

    - Derivado: el valor del atributo se puede derivar de los valores de otros atributos.Ejemplo: el atributo edad se puede derivar del atributo fecha_nacimiento.

    3 Relaciones

    Relacin: Una relacin es una asociacin entre diferentes entidades. Ejemplo: lasentidades parcela y propietario se asocian a travs de la relacin pertenece.Una relacin puede tener tambin atributos descriptivos. Ejemplo: en la relacinpertenece puede aparecer como atributo la fecha de adquisicin.

  • Tema 2. El modelo Entidad-Relacin

    18

    El grado de la relacin es el nmero de entidades que participan en una relacin;normalmente son relaciones binarias aunque tambin podemos encontrar relacionesternarias.

    Depende de la estructura del desarrollo del mundo real que se est modelando la decisinde qu cosas consideramos como entidades y qu cosas como atributos, y tampoco hayuna norma exacta para decidir si es mejor expresar un objeto mediante una entidad omediante una relacin. Una posible gua es designar una relacin para describir una accinque ocurre entre entidades.

    3.1 Cardinalidad de una relacin

    Cada entidad interviene en una relacin con una determinada cardinalidad. Es decir, lacardinalidad es el nmero de instancias o elementos de una entidad que pueden asociarsea un elemento de la otra entidad relacionada. La cardinalidad se representa mediante unapareja de datos de la forma (cardinalidad mnima, cardinalidad mxima). Son posibles lassiguientes cardinalidades: (0,1), (1,1), (0,n), (1,n) y (n,m).Ejemplos:! Las entidades nacion y ciudad participan en la relacin es_capital. La entidad nacion

    tiene una cardinalidad (1,1) al igual que la entidad ciudad.! Las entidades cliente y pedidos participan en la relacin realiza_pedido. La entidad

    cliente tiene una cardinalidad (1,n) mientras que la entidad pedidos tiene unacardinalidad (1,1).

    ! Las entidades persona y vivienda participan en la relacin vive. Ambas entidadestienen una cardinalidad (0,n).

    El tipo de relacin se define tomando los mximos de las cardinalidades que intervienenen la relacin. Hay tres tipos posibles:- Una a una (1:1). En este tipo de relacin, una vez fijado un elemento de una entidad se

    conoce el elemento de la otra entidad con el que est relacionado. Por ejemplo, naciny ciudad a travs de la relacin es_capital.

    - Una a muchas (1:N). Por ejemplo, cliente y pedidos en la relacin realiza_pedido.- Muchas a muchas (N:N). Por ejemplo, personas y viviendas en la relacin vive.

    4 Claves

    El concepto de clave permite diferenciar las entidades y relaciones individuales en trminosde sus atributos. Una clave es un conjunto de uno o ms atributos que, tomadoscolectivamente, permiten identificar de forma nica una entidad en el conjunto de entidades.Existe un conjunto de claves candidatas, es decir, se pueden formar distintos conjuntos deatributos que identifiquen una entidad. Es decir, se puede incluir atributos innecesarios enuna clave candidata, de forma que subconjuntos propios de ella no son clave. Se usa el

  • Tema 2. El modelo Entidad-Relacin

    19

    trmino de clave primaria para denotar una clave candidata que es elegida por el diseadorcomo elemento principal para identificar las entidades (preferiblemente, no debe conteneratributos innecesarios).Ejemplo: entidad Persona = {dni, num_seg_social, nombre, direccion}Claves candidatas = { {dni, nombre}, {dni, num_seg_social}, {dni}, {num_seg_social} }Clave primaria = {dni} Tambin podra haberse elegido {num_seg_social}.

    5 Diagrama entidad relacinEs un grfico en el que se representan entidades, atributos y relaciones utilizando unconjunto de smbolos:- rectngulos: representan entidades. En el interior se escribe el nombre de la entidad

    representada.- elipses: representan atributos. En el interior se escribe el nombre del atributo

    representado y se unen a la entidad a la que describen mediante una lnea. Si esteatributo pertenece a la clave primaria, se subraya. Si un atributo es multivalorado seindica mediante una n sobre la lnea que lo une a la entidad.

    - rombos: representan relaciones binarias. La cardinalidad de una relacin se representasobre el rombo de la relacin. Este rombo se divide en dos y se sombrea aquella parteque corresponde a una relacin N.

    - lneas: unen atributos a entidades y entidades a relaciones.

    Ejemplos:1. Relacin es_capital

    2. Relacin realiza_pedido

    Nacion Ciudad

    Es_capital

    Num_hab NombreNombre

    Cliente Pedido

    Realiza_pedido

    NIF Nombre NumeroFecha

  • Tema 2. El modelo Entidad-Relacin

    20

    3. Relacin vive

    6 Caractersticas avanzadas

    6.1 Entidades fuertes y dbiles

    Una entidad fuerte existe por s misma sin depender de la existencia de ninguna otraentidad. Por el contrario, la existencia de una instancia de una entidad dbil depende de laexistencia previa de otra entidad. Si la entidad dbil puede ser identificada sin necesidad deidentificar previamente la entidad de cuya existencia depende, diremos que la entidad dbillo es por existencia nicamente. Si la entidad dbil no puede ser identificadaindependientemente, sino que previamente es necesario identificar a la entidad de cuyaexistencia depende, diremos que la entidad dbil lo es por identificacin. Es decir, estaentidad dbil no tiene suficientes atributos para formar una clave primaria. Para que tengasentido, debe formar parte de una relacin uno a muchos. El discriminante (clave parcial),de una entidad dbil es un conjunto de atributos que permite distinguir las entidades quedependen de una entidad particular fuerte. La clave primaria de una entidad dbil se formacon la clave primaria de la entidad fuerte de cuya existencia depende, ms el discriminante.La relacin que asocia el conjunto de entidades dbil con un propietario se llama relacinde identificacin. Una entidad dbil se indica con un doble rectngulo, y lacorrespondiente relacin de existencia mediante una E sobre la lnea que une la entidaddbil a la relacin con la entidad fuerte. Si la relacin es de identificacin, se indicarmediante ID. El discriminante se subraya con una lnea discontinua.Por ejemplo, dado un libro del que se han editado muchos ejemplares, la entidad Ejemplar(que se identifica mediante un nmero dentro de la edicin) es dbil con respecto a laentidad Libro.

    Persona Vivienda

    ViveDNI Nombre Direccion

    Libro EjemplarPertenece

    ID

    Numero UbicacinCodigo Titulo

  • Tema 2. El modelo Entidad-Relacin

    21

    6.2 Tipos especiales de relacin

    - Relacin reflexiva: relaciona una entidad consigo misma. Ejemplo: empleados quepueden ser jefes de otros empleados.

    - Dos relaciones entre las mismas entidades. Muy til en el caso de necesitaralmacenar informacin histrica completa. Ejemplo: proyectos en los que trabajaactualmente un empleado y proyectos en los que ha trabajado anteriormente.

    - Relacin ternaria. Asociacin de tres entidades. La forma de hallar cardinalidades enlas relaciones ternarias es fijar una combinacin de elementos en dos de los extremosde la relacin y obtener lgicamente las cardinalidades mnima y mxima en el otroextremo libre. Ejemplo: el ttulo de un libro, un autor y una editorial se relacionan lastres mediante la accin de publicar el libro (en un ao concreto, con un ISBN y con undeterminado nmero de pginas en la edicin). Para determinar las cardinalidades hayque preguntarse por:- Cuntos autores puede tener un determinado libro publicado en una determinada

    editorial (cardinalidad en el extremo de la entidad autor).- Cuntos libros puede tener un determinado autor publicados en una determinada

    editorial (cardinalidad en el extremo de la entidad libro).- En cuntas editoriales puede un determinado autor publicar un mismo libro

    (cardinalidad en el extremo de la entidad editorial).

    Empleado

    Es_jefe

    Empleado

    Historico

    Proyectos

    Actual

  • Tema 2. El modelo Entidad-Relacin

    22

    - Relacin de especializacin (ES-UN). Se trata de una tipificacin de una entidad ensubtipos en nmero finito y conocido. Cada subtipo puede poseer atributos propios.Adems heredan los atributos que pudiera tener la entidad general. Este tipo derelacin puede clasificarse de dos maneras distintas. La primera segn si una instanciao elemento concreto de la entidad puede ser de ms de un subtipo a la vez. En casoafirmativo se dice que la relacin es inclusiva o con solapamiento mientras que encaso contrario ser exclusiva o sin solapamiento. La segunda clasificacin se basaen si obligatoriamente cada instancia o elemento concreto debe ser obligatoriamentede alguno de los subtipos especificados, es decir, si no pueden existir elementos de laentidad que no pertenezcan a ninguno de los subtipos. Si es as la relacin se dicetotal y en caso contrario parcial. La situacin ms corriente en una relacin deespecializacin es que sea exclusiva y total. Ejemplos:- Una entidad persona tiene los subtipos hombre y mujer. Una misma persona no

    puede ser hombre y mujer a la vez por lo que la relacin es exclusiva. No puedeexistir una persona que no sea hombre ni mujer, por lo que tambin es total.

    - La entidad universitario (representando a las personas que pertenecen a lacomunidad universitaria) tiene los subtipos estudiante y profesor. Un mismouniversitario puede ser ambas cosas a la vez por lo que la relacin es inclusiva.

    Editorial

    Publica

    Libro Autor

    ao

    ISBN

    paginas

    (1,1)

    Persona

    Hombre Mujer

    (0,1) (0,1)

    (1,1)

  • Tema 2. El modelo Entidad-Relacin

    23

    Pero en la universidad tambin hay por ejemplo, tcnicos o PAS, por lo que larelacin es parcial.

    La cardinalidad en las relaciones de especializacin es siempre (1,1) en el extremo dela entidad que se especializa en subtipos y (0,1) en el extremo de los subtipos si larelacin es exclusiva o ({0,1},1) si es inclusiva.

    7 Ejercicios

    Dado el siguiente diagrama entidad-relacin, contestar a las siguientes preguntas:

    a) Cuntas poblaciones pertenecen a una misma provincia?b) Hay algn problema porque exista una poblacin llamada Orihuela en Alicante y en

    Teruel?

    Universitario

    Estudiante Profesor

    (0,1) (0,1)

    (1,1) (1,1)

    Provincia Poblacin

    Pertenece

    ID

    Nombre Num_habNombre

    Pples_ingresos

    Dom={agr_regadio, agr_secano,industria, turismo, }

    Meses

    L/m2

    Nombre

    N

  • Tema 2. El modelo Entidad-Relacin

    24

    c) Se puede almacenar que los principales ingresos de una poblacin provienen de laagricultura de regado y del turismo?

    d) Para una misma poblacin, cuntos datos acerca de los l/m2 recogidos podemosalmacenar?

    e) En un mes, se puede almacenar informacin sobre las precipitaciones cadas envarias poblaciones?

    Dadas las entidades:

    - TRAMO (cdigo_tramo)- CALLE (cdigo, nombre, longitud)- MANZANA (nmero)- BARRIO (nombre)

    1. Dibujar el diagrama E-R que expresa que:a) un barrio est formado por muchas manzanasb) una manzana slo pertenece a un barrioc) un tramo de una calle pertenece slo a una called) una calle est compuesta de varios tramose) un tramo contiene varias manzanas y una manzana contiene varios tramosf) dos tramos se pueden cruzar

    2. Cmo se podra contestar a las siguientes preguntas?a) Calles a las que pertenece una manzanab) Barrio al que pertenece una callec) Con cuntos tramos cruza un tramo en particular

    3. Se podra conocer la longitud de cada tramo? Y la longitud total de una calle sialmacenamos la longitud de cada tramo?

    Se desea generar una base de datos para almacenar informacin respecto lageografa espaola. En concreto, queremos almacenar informacin sobre ros, mares,ciudades, provincias y comunidades autnomas.- De cada ciudad queremos saber su nombre, cuntos habitantes tiene y en qu

    provincia se encuentra. Hay que tener en cuenta que dos ciudades de distintasprovincias pueden tener el mismo nombre.

    - De cada provincia, nos interesa conocer su nombre y qu ciudad es su capital.- De cada comunidad autnoma, es interesante conocer su nombre, el nmero de

    provincias que pertenecen a ella y cules son estas provincias.

  • Tema 2. El modelo Entidad-Relacin

    25

    - En cuanto a cada mar, queremos almacenar su nombre y a qu provincias baa,indicando adems cuntos kilomtros de la costa de esa provincia es baada por estemar.

    - La informacin de los ros ser la ms completa: adems del nombre, nos interesaconocer en qu provincia nace, por qu ciudades pasa y en qu mar desemboca. Porotro lado, tambin queremos saber qu ros son afluentes de otros ros.

  • Tema 3. Modelo Relacional

    1 Introduccin

    La teora del modelo de datos relacional fue presentada por el investigador Edgar Codd en1970 y es el ltimo modelo en el que se ha basado una gran familia de SGBD,imponindose en la dcada de los ochenta sobre los modelos previos. Actualmente es elmodelo elegido para la construccin de casi todos los SGBD comerciales existiendo yamuchos disponibles como son ORACLE, INFORMIX, etc.A grandes rasgos, el modelo relacional se caracteriza por disponer que:

    - toda la informacin debe estar contenida en tablas- las relaciones entre datos deben ser representadas explcitamente en esos

    mismos datos

    2 Estructura de las bases de datos relacionales

    La relacin es el elemento bsico del modelo relacional y se representa por una tabla.Informalmente, los trminos y sus equivalentes son:

    Relacin TablaTupla Fila

    Atributo ColumnaNmero de tuplas CardinalidadNmero de atributos GradoDominio Coleccin de valores, de los cuales uno o ms atributos

    obtienen sus valores reales

    Clave primaria Identificador nico para la tabla, es decir, una columna ocombinacin de columnas con la propiedad de que nuncaexisten dos filas de la tabla con el mismo valor en esacolumna o combinacin de columnas

    Es importante sealar que la tabla es plana en el sentido de que el cruce entre una fila yuna columna slo puede dar un valor, es decir, no se admiten atributos multivaluados. Acada una de las tablas se le asigna un nombre exclusivo.

  • Tema 3. El modelo Relacional

    28

    Desde el punto de vista de los niveles de una base de datos, la estructura de una base dedatos relacional es la siguiente:

    - Nivel lgico.- Est compuesto por las distintas vistas que tienen los usuarios de la BD total- Lenguajes: DML

    - Nivel fsico.- Est compuesto por las tablas que componen la BD- Lenguajes: DDL

    - Nivel de almacenamiento.- Est compuesto por los ficheros donde se almacenan las tablas del nivel anterior- Lenguajes: comandos del sistema operativo, DSDL (lenguaje de definicin del

    almacenamiento de datos).

    3 Tablas

    ! Representan tanto las entidades como las relaciones del modelo E-R.! Tienen la forma de una matriz rectangular bidimensional (filas y columnas).! Cada elemento o casilla de la matriz es un tem de datos elemental. Es el mnimo

    elemento lgico de acceso y modificacin.! Una columna representa un atributo de la entidad:

    ! Debe tener un nombre nico en cada tabla! Cada atributo tiene asociado un espacio de valores o dominio

    Nivellgico

    VISTA

    Nivelfsico

    Nivel dealmace-namiento

    TABLAS

    FICHERO

  • Tema 3. El modelo Relacional

    29

    ! Un valor nulo indica valor desconocido o no aplicable! Su captura puede ser opcional (puede tomar valores nulos) u obligatoria! Su nmero es fijo a priori

    ! Una fila o tupla representa un objeto del mundo real:! Nunca pueden estar duplicadas! Es la mnima unidad de borrado! Representa un registro lgico! Su nmero vara segn se realicen operaciones de insercin y borrado en la tabla! Pueden estar dispuestas en cualquier orden

    3.1 Claves

    Aparecen debido a la necesidad de identificar de forma unvoca y no ambigua los datos dela base de datos.! Clave candidata: agrupacin de atributos (quizs uno solo) que identifican sin

    ambigedad y de forma unvoca todas las posibles tuplas de una tabla.! Como mnimo, una clave debe tener un atributo. Como mximo, los que tenga la

    tabla.! No debe haber atributos intiles o superfluos. La idea es que si se elimina algn

    atributo de la clave candidata, ya no lo es.! Siempre hay seguro al menos una clave candidata (la agregacin de todos los

    atributos).! Puede haber varias claves candidatas.

    ! Clave primaria: se escoge de entre las claves candidatas. Usualmente se prefiere lade menor tamao.

    ! Claves alternativas: el resto de claves candidatas no escogidas como clave primaria.! Atributo primo: aquel que forma parte de la clave primaria.! Clave ajena: un atributo de una tabla (o agregacin de ellos) puede ser clave primaria

    de otra tabla.! Mecanismo de relacin y enlace de informacin.! Los atributos de una clave ajena pueden o no formar parte de la clave primaria de

    la tabla a la que pertenecen.! En una tabla no es obligatoria la existencia de claves ajenas.

  • Tema 3. El modelo Relacional

    30

    4 Reduccin de un esquema E-R a tablas

    ! Representacin tabular de las entidades fuertes: una entidad fuerte se representamediante una tabla con varias columnas distintas cada una de las cuales correspondea uno de los atributos de la entidad.

    ! Representacin tabular de las entidades dbiles: una entidad dbil, dependiente deuna entidad fuerte, se representa mediante una tabla con una columna por cada uno delos atributos de la clave primaria de la entidad fuerte de la que depende ms losatributos propios de la entidad dbil.Ejemplo:

    La entidad fuerte Libro se representa mediante la siguiente tabla:Tabla: LIBRO

    CP={codigo}Atr={titulo}CAj={}

    La entidad dbil Ejemplar se representa mediante la siguiente tabla:Tabla: EJEMPLAR

    CP={numero, codigo}Atr={ubicacin}CAj={codigo}

    ! Representacin tabular de las relaciones: se representa mediante una tabla con unacolumna por cada atributo formado por la unin de las claves primarias de lasentidades que relaciona ms los atributos descriptivos de la relacin (si los tiene).! Redundancia de tablas: en general, la tabla para la relacin que une una entidad

    dbil con su correspondiente entidad fuerte es redundante y no necesita serrepresentada en una representacin tabular de un diagrama E-R.

    Libro EjemplarPertenece

    ID

    Numero UbicacinCodigo Titulo

  • Tema 3. El modelo Relacional

    31

    ! Combinacin de tablas: si una entidad es dependiente de otra, se puedencombinar para formar una nica tabla consistente en la unin de las columnas deambas tablas.

    ! Atributos multivalorados: para un atributo multivalorado se crea una tabla con unacolumna que corresponde a la clave primaria de la entidad o de relaciones al quepertenece el atributo multivalorado.

    ! Representacin tabular de la especializacin: hay dos formas; la primera es crearuna tabla para la entidad de nivel ms alto y para cada entidad de nivel ms bajo, crearuna tabla que incluya una columna para cada uno de los atributos de esa entidad msuna columna por cada atributo de la clave primaria de la entidad de nivel ms alto; lasegunda, para especializaciones exclusivas y totales, se crea para cada entidad denivel ms bajo, una tabla que incluya una columna para cada atributo de la entidad msuna columna por cada atributo de la entidad de nivel ms alto.

    4.1 Ejemplos

    4.1.1 Relacin realiza_pedidoEn esta relacin binaria participan las entidades Cliente y Pedido. Se indica que un clientepuede realizar muchos pedidos, mientras que un pedido concreto corresponde a un cliente.Ambas entidades son fuertes.

    Tabla: CLIENTECP={NIF}Atr={Nombre}CAj={}

    Tabla: PEDIDOCP={Numero}Atr={fecha, NIF_cliente}CAj={NIF_cliente}

    Cliente Pedido

    Realiza_pedido

    NIF Nombre NumeroFecha

  • Tema 3. El modelo Relacional

    32

    En este caso, se debera haber generado una tabla para la entidad PEDIDO y otra para larelacin. Sin embargo, seran redundantes y por ello se unen en una sola.La diferencia entre la representacin tabular de una entidad dbil y de una relacin 1:N esque, mientras en la entidad dbil la clave de la entidad fuerte pasa a formar parte de laclave de la entidad dbil, en el caso de relaciones 1:N, la clave de la entidad que formaparte de la relacin pasa a ser un atributo de la tabla.

    4.1.2 Relacin es_capitalEn esta relacin, encontramos dos entidades (Nacin y Ciudad) que se relacionan 1 a 1.Ambas son fuertes.

    Tabla: NACIONCP={nombre_nacion }Atr={}CAj={}

    Tabla: CIUDADCP={nombre_ciudad }Atr={num_hab}CAj={}

    Tabla: ES_CAPITALCP={nombre_nacion, nombre_ciudad}Atr={}CAj={nombre_nacion, nombre_ciudad}

    En este caso, tenemos esta posibilidad de generar dos tablas, sobretodo si hay otrasentidades con las que tambin se relacionan. Tambin se podra haber generado una nicatabla conteniendo todos los datos de ambas entidades.

    Nacion Ciudad

    Es_capital

    Num_hab NombreNombre

  • Tema 3. El modelo Relacional

    33

    4.1.3 Relacin viveEn este caso, tenemos una relacin muchos a muchos entre dos entidades fuertes(Persona y Vivienda).

    Tabla: PERSONACP={DNI}Atr={nombre}CAj={}

    Tabla: VIVIENDACP={direccion}Atr={}CAj={}

    Tabla: VIVECP={DNI, direccion}Atr={}CAj={DNI, direccion}

    4.2 Restricciones

    El modelo relacional de datos contempla tres tipos de restricciones:1. Integridad de la clave. Ningn atributo de una clave candidata puede tomar valores

    nulos. Lgicamente, los atributos que forman la clave candidata han de tomar siemprevalores distintos para cada posible tupla.

    2. Integridad de referencia o referencial. Sea T1.a un atributo de la tabla T1 que formaparte de una clave ajena para la tabla T2. Es decir, que en T2 existe un atributo

    Persona Vivienda

    ViveDNI Nombre Direccion

  • Tema 3. El modelo Relacional

    34

    definido con el mismo dominio, aunque no obligatoriamente con igual nombre, y que esparte de su clave primaria. Entonces, T1.a debe ser siempre igual a algn valor yacontenido en el atributo referenciado en la tabla T2, o bien tomar un valor nulo.Ejemplo: en la relacin entre clientes y pedidos que realiza cada cliente, podemosencontrar las siguientes tablas:

    PEDIDO CLIENTESNumero Fecha NIF_cliente NIF Nombre

    1 1/3/00 24680246 23456789 Sara Red Corell2 4/3/00 23456789 13579135 Marta Planells Garcia3 5/3/00 98765432 24680246 Eduardo Garcia Algarra4 5/3/00 01234567 98765432 Luis Tarin Paula

    En este caso se produce una violacin de la integridad referencial, ya que elNIF_cliente en negrita NO corresponde a ninguna tupla de la tabla de CLIENTES.

    3. Otras restricciones de acuerdo con la semntica concreta del problema. Pueden sersencillas, como la especificacin de valores mnimos o mximos que puede tomar unatributo numrico, lista de valores permitidos de un atributo, o ms complejas comocondiciones sobre valores de los atributos en funcin de valores de otros atributos deesa u otras tablas. Ejemplos:! La restriccin el nmero de la Seguridad Social debe ser un entero positivo menor

    de 100.000.000 establece una restriccin sobre el dominio del atributo.! La restriccin el nombre de empleado siempre se ha de conocer restringe al

    atributo a no tomar un valor nulo.

    4.3 Problemas con las restricciones durante las operaciones

    4.3.1 Insercin de una nueva tupla en una tabla! Slo se puede insertar una tupla si todos los atributos de la clave primaria tienen valor

    no nulo.

    ! Slo se puede insertar una tupla si el conjunto de todos los atributos que forman laclave primaria toma un valor nico e indito hasta el momento en la tabla.

    ! Slo se puede insertar una tupla si todos los atributos que son claves ajenas de otrastablas toman valores ya presentes en dichas tablas o bien nulos.

    ! Slo se puede insertar una tupla si todos los valores de los atributos satisfacen todaslas restricciones adicionales que pudieran concernirles.

  • Tema 3. El modelo Relacional

    35

    4.3.2 Modificacin del valor de algn atributo de una o varias tuplas de unatabla

    ! Si el atributo a modificar forma parte de la clave primaria, su valor no puedemodificarse a nulo

    ! Si el atributo a modificar forma parte de la clave primaria, su valor no puedemodificarse a otro tal que la nueva clave primaria ya no sea nica en la tabla.

    ! Slo puede modificarse el valor de un atributo si el nuevo valor satisface todas lasrestricciones adicionales que puedan afectarle.

    ! Si el atributo a modificar es parte de una clave ajena en otra tabla, entonces hay quemodificar automticamente el viejo valor que tomaba en dicha tabla por el nuevo valor.Por ejemplo: si el NIF de Sara Red Corell cambia, deber cambiar en la tabla Pedido.

    4.3.3 Borrado de una o varias tuplas de una tabla.Al borrar una tupla hay que tener en cuenta que se deben verificar las restricciones deintegridad referencial. Es decir, dadas dos relaciones R y S, tal que R tiene una clave ajenaCA que hace referencia a S, el borrado de una tupla de S causar una violacin de laintegridad referencial si existe alguna tupla de R que hace referencia a ella. En este caso,es necesario restaurar la integridad referencial y puede realizarse de dos formas,dependiendo de si existe una relacin de entidad dbil por existencia:! Propagar la operacin en cascada sobre las tuplas de R que hacen referencia a la tupla

    de S afectada. Es decir, borrar estas tuplas de R.! Modificar a nulo el valor de la clave ajena CA de las tuplas de R que hacen referencia a

    la tupla de S afectada.

    5 EjerciciosDado el siguiente diagrama entidad-relacin, obtener el modelo relacionalcorrespondiente.

    Provincia Poblacin

    Pertenece

    ID

    Nombre Num_habNombre

    Pples_ingresos

    Dom={agr_regadio, agr_secano,industria, turismo, }

    Meses

    L/m2

    Nombre

    N

  • Tema 3. El modelo Relacional

    36

    Dado el siguiente diagrama entidad-relacin, obtener el modelo relacionalcorrespondiente.

    Obtener el modelo relacional correspondiente al diagrama entidad-relacin delsegundo ejercicio del tema anterior.

    Obtener el modelo relacional correspondiente al diagrama entidad-relacin del ltimoejercicio del tema anterior.

    Personal TrabajoRealiza

    Aparato

    NumserieModelo

    Utiliza

    Mantenimiento

    Alquiler

    Se alquila

    Cliente

    NIF

    Alquila

    Solicita

    DNINombreNum.S.S.Calibr_campo

    Fecha_ult_rev

    N.facturaFecha_iniFecha_finDescripcin

    N.facturaFecha_iniFecha_finDescripcin

  • Tema 4. Teora de la normalizacin

    1 Introduccin

    Cuando se disea una base de datos mediante el modelo relacional, al igual que ocurre enotros modelos de datos, tenemos distintas alternativas, es decir, podemos obtenerdiferentes esquemas relacionales y no todos son equivalentes, ya que algunos van arepresentar la realidad mejor que otros. Es necesario conocer qu propiedades debe tenerun esquema relacional para representar adecuadamente una realidad y cules son losproblemas que se pueden derivar de un diseo inadecuado.El esquema relacional puede obtenerse de dos formas distintas:! Directamente a partir de la observacin de nuestro universo del discurso, donde

    especificamos conjuntos de atributos, relaciones y restricciones que corresponden a losobservados en el mundo real.

    ! Realizando el proceso de diseo en dos fases, primero el diseo conceptual (E/R)obteniendo el esquema conceptual y posteriormente transformar ste a un esquemarelacional, siguiendo algunas reglas generales, que fueron dadas anteriormente.

    La teora de la Normalizacin es un mtodo objetivo y riguroso que se aplica en el diseode bases de datos relacionales y que nos permite detectar y corregir posibles errores dediseo. Algunos problemas que se pueden presentar son:! Incapacidad para almacenar ciertos hechos! Redundancias y por tanto, posibilidad de incoherencias! Ambigedades! Prdida de informacin! Prdida de dependencias funcionales, es decir, ciertas restricciones de integridad que

    dan lugar a interdependencias entre los datos.! Aparicin en la BD de estados no vlidos, es decir, anomalas de insercin, borrado y

    modificacin.

    En conclusin, el esquema relacional obtenido debe ser analizado para comprobar que nopresenta los problemas anteriores. Para ello, veremos en primer lugar, algunos ejemplos deanomalas que se pueden presentar. Despus, introduciremos las formas normales y lasaplicaremos en un ejemplo.

  • Tema 4. Teora de la Normalizacin

    38

    2 Ejemplos de anomalas que se pueden presentar

    Analicemos la siguiente relacin: ESCRIBE

    AUTOR NACIONALIDAD COD_LIBRO TITULO EDITORIAL AODate, C. Norteamericana 98987 Database Addison 1990

    Date, C. Norteamericana 97777 SQL Stan Addison, W. 1986Date, C. Norteamericana 98987 Guide for Addison, W. 1988

    Codd,E. Norteamericana 7890 Relational Addison,W. 1990

    Gardarin Francesa 12345 Basi Dati Paraninfo 1986

    Gardarin Francesa 67890 Comp BD Eyrolles 1984

    Valduriez Francesa 67890 Comp BD Eyrolles 1984

    Kim,W. Norteamericana 11223 BD OO ACM 1989

    Lochovsky Canadiense 11223 BD OO ACM 1989

    Esta relacin almacena datos de autores y de libros. Algunos problemas son:! Redundancia, ya que la nacionalidad del autor se repite por cada ocurrencia del mismo.

    Lo mismo sucede cuando un libro tiene ms de un autor, se repite la editorial y el aode publicacin.

    ! Anomalas de modificacin, es fcil cambiar el nombre de una editorial en una tupla sinmodificar el resto de las que corresponden al mismo libro, lo que da lugar aincoherencias.

    ! Anomalas de insercin, ya que si queremos aadir informacin de algn autor, del queno hubiera ningn libro en la base datos, no sera posible, ya que cod_libro es parte dela clave primaria de la relacin (regla de integridad de la entidad). La insercin de unlibro, que tiene dos autores obliga a insertar dos tuplas en la relacin.

    ! Anomalas de borrado, ya que si queremos eliminar un cierto libro, deberamos perderlos datos de su autor y viceversa.

    En los casos anteriores, se deja en manos del usuario manejar la integridad de la base dedatos.

    En el ejemplo anterior, el conjunto de las siguientes relaciones no presenta estosproblemas:LIBRO( cod_libro, titulo, editorial, ao )AUTOR( nombre, nacionalidad )

  • Tema 4. Teora de la Normalizacin

    39

    ESCRIBE( cod_libro, nombre )

    La normalizacin introduce una tcnica formal para disear bases de datos relacionales, ypermite mecanizar parte del proceso al disponer de algoritmos de normalizacin. Unaobservacin importante es que las anomalas antes descritas se producen en procesos deactualizacin y no en procesos de consulta. La normalizacin penaliza las consultas, aldisminuir la eficiencia, ya que la normalizacin aumenta el nmero de relaciones presentesen la base de datos, por lo que una determinada consulta puede llevar consigo el acceso avarias tablas, lo que aumenta el costo de sta.

    3 Nocin intuitiva de las formas normales

    La normalizacin tiene como objetivo obtener esquemas relacionales que cumplandeterminadas condiciones, a travs de las formas normales.

    ! Primera Forma Normal (1FN) fue introducida por Codd, en su primer trabajo. Es unarestriccin inherente al modelo relacional por lo que su cumplimiento es obligatorio.Consiste en la prohibicin de que en una relacin existan grupos repetitivos, es decir,un atributo no puede tomar ms de un valor del dominio subyacente.

    Si tenemos la relacin AMIGO(nombre, direccion, fecha_cumpleaos, num_telefono),siendo el atributo num_telefono multivaluado, esta relacin no est en 1FN. Sinembargo, este conjunto de relaciones s est en 1FN:AMIGO(nombre, direccion, fecha_cumpleaos)TELEFONOS(nombre, num_telefono)

    ! Segunda Forma Normal (2FN), fue introducida por Codd. Una relacin est en 2FN, siadems de estar en 1FN, todos los atributos que no forman parte de ninguna clavecandidata suministran informacin acerca de la clave completa.

    Para la relacin PRESTAMO (num_socio, nombre_socio, cod_libro, fec_prest, editorial,pas) las claves candidatas son:(num_socio, cod_libro) y (nombre_socio, cod_libro)

    Se puede observar que ciertos atributos que no forman parte de las claves candidatas,tal como la editorial, constituye informacin acerca del libro, pero no acerca de la clavecompleta. Luego, la relacin PRESTAMO no se encuentra en 2FN.

    La solucin es descomponer esta relacin en las siguientes:

  • Tema 4. Teora de la Normalizacin

    40

    PRESTAMO1( num_socio, nombre_socio, cod_libro, fec_prest )LIBRO( cod_libro, editorial, pas )

    En la relacin PRESTAMO1, el nico atributo que no forma parte de las clavescandidatas es fec_prest, pero suministra informacin acerca de la clave completa. Porlo que est en 2FN.En la relacin LIBRO, la clave es cod_libro y los dos atributos editorial y passuministran informacin de la clave completa. Por lo tanto, est en 2FN.Una relacin que est formada por un nico atributo est en 2FN.

    ! Tercera Forma Normal (3FN), propuesta por Codd. Una relacin est en 3FN, siadems de estar en 2FN, los atributos que no forman parte de ninguna clave candidatafacilitan informacin slo acerca de la(s) clave(s) y no acerca de otros atributos.

    En la relacin PRESTAMO1, el atributo fec_prest facilita informacin acerca de lasclaves, ya que no existen ms atributos. Por tanto, est en 3FN.En la relacin LIBRO, el atributo pas entrega informacin acerca de la editorial quepublica el libro, por lo que no est en 3FN.

    La solucin es descomponerla en:LIBRO1( cod_libro, editorial )EDITORIAL( editorial, pas ),que estn en 3FN, ya que todo atributo no clave facilita informacin acerca de la clave.

    ! Forma Normal de Boyce y Codd (FNBC). La relacin PRESTAMO1, que est en 3FN,todava presenta anomalas, ya que num_socio y nombre_socio, se repiteninnecesariamente por cada cod_libro. Una relacin est en FNBC si y solo si, todos losatributos de las claves candidatas informan acerca del resto de claves candidatascompletas.En la relacin PRESTAMO1, num_socio es informacin acerca de nombre_socio yviceversa. Ninguno de estos atributos son clave (aunque formen parte de la clave).Para solucionarlo la descomponemos:SOCIO( num_socio, nombre_socio )PRESTAMO2( num_socio, cod_libro, fec_prest ),que estn en FNBC.

    Hasta ahora nuestro esquema relacional est compuesto por las siguientes relacionesen FNBC:

  • Tema 4. Teora de la Normalizacin

    41

    LIBRO1( cod_libro, editorial )EDITORIAL( editorial, pas )SOCIO( num_socio, nombre_socio )PRESTAMO2( num_socio, cod_libro, fec_prest )

    La teora de la normalizacin se basa en restricciones definidas sobre los atributos de unarelacin. que son conocidas como dependencias funcionales, relacionadas con la 2FN y3FN y FNBC. Sean a y b atributos de una misma tabla o relacin T. Se dice que b esfuncionalmente dependiente de a y se denota como T.a->T.b si todo posible valor de a tieneasociado un nico valor de b, es decir, en todas las tuplas de T en las que el atributo a tomael mismo valor v1, el atributo b toma tambin un mismo valor v2.

    4 Ejercicios

    Dada la relacin R(estudiante, nro_matricula, curso, centro, profesor, texto) con lassiguientes restricciones:a) Un estudiante puede estar matriculado de varios cursosb) Un estudiante tiene un nmero de matricula distinto para cada curso en el que est

    matriculadoc) Un curso se imparte en un solo centrod) El nmero de matricula identifica al centro en el que se imparte el curso y al curso

    mismo

    e) Un curso es impartido por un solo profesor, pero un profesor puede impartir varioscursos

    f) Un curso de apoya en distintos textos y un mismo texto puede servir de soporte avarios cursos

    Reducir el esquema anterior a un conjunto equivalente de relaciones en FNBC

    Comprobar si los modelos relacionales generados en el tema 3 estn en FNBC.

  • Unidad temtica 2:

    Gestin de Bases de DatosRelacionales

    Objetivos- Conocer las principales caractersticas del lenguaje SQL- Ser capaces de realizar consultas sobre datos alfanumricos utilizando SQL- Ser capaces de crear tablas sencillas con SQL

    ContenidosTema 5. Introduccin al lenguaje SQLTema 6. Lenguaje de manipulacin de datosTema 7. Lenguaje de definicin de datos

  • Tema 5: Introduccin al lenguaje SQL

    1 Introduccin

    El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos normalizado,utilizado por muchos sistemas de bases de datos relacionales. Sus principalescaractersticas son las siguientes:- SQL es un lenguaje declarativo, es decir, el usuario expresa el resultado que desea

    obtener sin especificar cmo el sistema debe operar para calcular este resultado. Ellenguaje es sencillo y es accesible a usuarios no expertos.

    - SQL se basa en fundamentos matemticos. El conjunto de operaciones que se puedenrealizar con los datos estn definidas por dos lenguajes formales equivalentes: elclculo relacional y el lgebra relacional.

    - La simplicidad de SQL presenta un inconveniente que consiste en que, en ocasiones,su expresividad no es suficiente para obtener el resultado que el usuario desea.

    El lenguaje SQL est compuesto por comandos, clusulas, operadores y funciones deagregado. Estos elementos se combinan en las instrucciones para crear, actualizar ymanipular las bases de datos. En este tema veremos estos elementos de forma generalpara profundizar en ellos en los prximos temas.

    2 Comandos

    Existen dos tipos de comandos SQL: los DDL (Data Definition Language) o LDD que permiten crear y definir nuevas

    bases de datos, campos e ndices.

    los DML (Data Manipulation Language) o LMD que permiten generar consultaspara ordenar, filtrar y extraer datos de la base de datos.

    Los comandos DDL son:

    Comando DescripcinCREATE Utilizado para crear nuevas tablas, campos e ndicesDROP Empleado para eliminar tablas e ndicesALTER Utilizado para modificar las tablas agregando campos o cambiando su

    definicin

  • Tema 5. Introduccin al lenguaje SQL

    46

    Los comandos DML se resumen en:

    Comando Descripcin

    SELECT Utilizado para consultar registros de la base de datos que satisfagan uncriterio determinado

    INSERT Utilizado para insertar nuevos datos en la base de datosUPDATE Utilizado para modificar los valores de los campos y registros especificadosDELETE Utilizado para eliminar registros de una tabla de una base de datos

    3 Clusulas

    Las clusulas son condiciones de modificacin utilizadas en los comandos para definir losdatos que se desea seleccionar o manipular. Un resumen de las clausulas disponibles enSQL son:Clusula Descripcin

    FROM Utilizada para especificar la tabla de la cual se van a seleccionar losregistros

    WHERE Utilizada para especificar las condiciones que deben reunir los registros quese van a seleccionar

    GROUP BY Utilizada para separar los registros seleccionados en grupos especficosHAVING Utilizada para expresar la condicin que debe satisfacer cada grupo

    ORDER BY Utilizada para ordenar los registros seleccionados de acuerdo con un ordenespecfico

    4 Operadores Lgicos

    Los operadores lgicos que se pueden utilizar en las clusulas son:Operador Uso

    AND Es el "y" lgico. Evalua dos condiciones y devuelve verdadero slo siambas son ciertas.

    OR Es el "o" lgico. Evala dos condiciones y devuelve verdadero si alguna delas dos es cierta.NOT Negacin lgica. Devuelve el valor contrario de la expresin.

  • Tema 5. Introduccin al lenguaje SQL

    47

    5 Operadores de Comparacin

    Los operadores de comparacin son:Operador Uso

    < Menor que

    > Mayor que

    Distinto de

    = Mayor o Igual que= Igual queBETWEEN Utilizado para especificar un intervalo de valores.

    LIKE Utilizado en la comparacin de un modeloIN Utilizado para especificar registros de una base de datos

    6 Funciones de Agregado

    Las funciones de agregado se usan dentro de una clusula SELECT donde se hanagrupado los registros para devolver un nico valor por cada grupo de registros. Las msusuales son:

    Funcin DescripcinAVG Utilizada para calcular el promedio de los valores de un campo determinadoCOUNT Utilizada para devolver el nmero de registros de la seleccin

    SUM Utilizada para devolver la suma de todos los valores de un campodeterminadoMAX Utilizada para devolver el valor ms alto de un campo especificadoMIN Utilizada para devolver el valor ms bajo de un campo especificado

    7 Esquema a utilizar

    En este apartado daremos la definicin de las tablas a utilizar, tanto en los ejemplos de losprximos temas como en las prcticas de laboratorio. Este esquema est compuesto por 7tablas que representan una zona rural con dos lagos y tres municipios, en los que seencuentran diversas casas rurales y servicios como hospital, supermercados, etc., todo ello

  • Tema 5. Introduccin al lenguaje SQL

    48

    comunicado a travs de distintas carreteras. A continuacin se presenta un croquis de laregin a la que se refieren los datos de la base de datos:

    Seguidamente, se muestra la descripcin de las tablas, que tambin podemos obtenermediante el comando DESCRIBE .

    Tabla CASA_RURAL

    Nombre de Columna Nulo? Tipo

    ------------------------- -------- ----

    CODIGO NOT NULL CHAR(10) Clave primariaDUENYO NOT NULL VARCHAR2(40)DIRECCION NOT NULL VARCHAR2(30)TELEFONO NOT NULL VARCHAR2(9)EMAIL VARCHAR2(30)PRECIO NOT NULL NUMBER(4,2)FECHA_CONSTRUCCION NOT NULL DATE

    FECHA_REHABILITACION DATE

    MUNICIPIO NOT NULL CHAR(10) Clave ajena->MUNICIPIODESCRIPCION VARCHAR2(100)

    C1

    C2

    C3

    C4C5

    Lago Abis

    Lago Bernacle

    Abis

    Abiside

    Bernacle

  • Tema 5. Introduccin al lenguaje SQL

    49

    LOCALIZACION MDSYS.GEOMETRY

    CODIGO es un identificador de cada casa. DUENYO almacena el nombre del dueo de lacasa. DIRECCION indica la direccin de la casa. TELEFONO y EMAIL son los puntos decontacto para poder realizar una reserva. PRECIO indica lo que cuesta el alquiler de la casacompleta. FECHA_CONSTRUCCION y FECHA_REHABILITACION son las fechas deconstruccin y de la ltima rehabilitacin (si ha lugar) de la casa. MUNICIPIO es el cdigodel municipio donde est la casa. DESCRIPCION almacena las caractersticas de la casa,como por ejemplo, la disponibilidad de garaje, cocina totalmente equipada, etc. Por ltimo,LOCALIZACION indica las coordenadas de la casa.Es importante comentar el hecho de que en esta tabla se ha representado su relacin conel municipio donde se encuentra cada casa de forma explcita, a travs de una clave ajena.Tambin podra extraerse esta relacin a travs de una consulta de tipo espacial, como sehar, por ejemplo, para saber si una carretera pasa por un municipio.

    Tabla HABITACION

    Nombre de Columna Nulo? Tipo

    ------------------------- -------- ----

    CODIGO NOT NULL CHAR(2) Clave primariaNUM_PLAZAS NOT NULL NUMBER(2)BANYO NOT NULL CHAR(1) IN ('S','N')PRECIO_NOCHE NOT NULL NUMBER(4,2)PRECIO_DTO_3 NUMBER(4,2)DESCRIPCION VARCHAR2(100)COD_CASA NOT NULL CHAR(10) Clave primaria

    Clave ajena->CASA_RURAL

    CODIGO es el identificador de cada habitacin dentro de la casa COD_CASA.NUM_PLAZAS indica el nmero de plazas de esta habitacin. BANYO indica si lahabitacin tiene bao ('S') o no ('N'). PRECIO_NOCHE da el precio de esta habitacin pornoche y PRECIO_DTO_3 indica el precio en el caso de que la estancia supere los tres das.DESCRIPCION, como en el caso anterior, almacena las caractersticas de una habitacin.

    Tabla MUNICIPIO

    Nombre de Columna Nulo? Tipo

    ------------------------- -------- ----

    CODIGO NOT NULL CHAR(10) Clave primariaCODIGO_POSTAL NOT NULL NUMBER(5)NOMBRE NOT NULL VARCHAR2(30)

  • Tema 5. Introduccin al lenguaje SQL

    50

    GEOMETRIA MDSYS.GEOMETRY

    CODIGO es el identificador de cada municipio. CODIGO_POSTAL indica su cdigo postal yNOMBRE, su nombre. GEOMETRIA describe un polgono que representa al municipio.

    Tabla TIPO_SERVICIO

    Nombre de Columna Nulo? Tipo

    ------------------------- -------- ----

    TIPO NOT NULL CHAR(15) Clave primariaDESCRIPCION VARCHAR2(30)

    Esta tabla recoge los servicios que puedan resultar necesarios. Por ejemplo, supermercado,centro de salud, hospital, farmacia, etc. A cada uno de ellos, se le asigna un cdigo.

    Tabla SERVICIO

    Nombre de Columna Nulo? Tipo

    -------------------- -------- ----

    CODIGO NOT NULL NUMBER(3)TIPO CHAR(15) Clave ajena->TIPO_SERVICIODESCRIPCION VARCHAR2(50)LOCALIZACION MDSYS.GEOMETRY

    Indica el tipo (TIPO) y descripcin (DESCRIPCION) de un servicio, as como suscoordenadas (LOCALIZACION).

    Tabla CARRETERA

    Nombre de Columna Nulo? Tipo

    ------------------------------ -------- ----

    CODIGO NOT NULL CHAR(10)DESCRIPCION VARCHAR2(50)GEOMETRIA MDSYS.GEOMETRY

    Indica el cdigo de carretera y su descripcin (CODIGO y DESCRIPCION) as como unconjunto de lneas que representan su geometra (GEOMETRIA).

  • Tema 5. Introduccin al lenguaje SQL

    51

    Tabla LAGO

    Nombre de Columna Nulo? Tipo

    ------------------------------ -------- ----

    CODIGO NOT NULL CHAR(10)DESCRIPCION VARCHAR2(50)GEOMETRIA MDSYS.GEOMETRY

    Indica el cdigo de lago y su descripcin (CODIGO y DESCRIPCION) as como un polgonoque representa su geometra (GEOMETRIA).

    En el anexo I se listan todos los datos que contienen las tablas.

  • Tema 6: Lenguaje de Manipulacin de Datos

    1 Introduccin

    El lenguaje de manipulacin de datos comprende las consultas de seleccin y lasoperaciones de insercin, borrado y modificacin de datos de las tablas.Las consultas de seleccin se utilizan para indicar al motor de datos que devuelvainformacin de las bases de datos. Esta informacin es devuelta en forma de conjunto deregistros.Las consultas de accin son aquellas que no devuelven ningn registro, son las encargadasde acciones como aadir y borrar y modificar registros.

    2 Consultas de seleccin

    2.1 Consultas bsicasLa sintaxis bsica de una consulta de seleccin es la siguiente:SELECT Campos

    FROM Tabla;

    donde campos es la lista de campos que se deseen recuperar y tabla es el origen de losmismos. Por ejemplo:SELECT duenyo, telefono

    FROM casa_rural;

    Esta consulta devuelve un conjunto de registros con el campo duenyo y telfono de latabla casa_rural.

    2.2 Ordenar los registrosAdicionalmente se puede especificar el orden en que se desean recuperar los registros delas tablas mediante la clasula ORDER BY Lista de Campos, donde Lista de camposrepresenta los campos a ordenar. Ejemplo:SELECT duenyo, direccion, telefono

    FROM casa_rural

    ORDER BY duenyo;

    Esta consulta devuelve los campos duenyo, direccion, telefono de la tablacasa_rural ordenados por el campo duenyo.

  • Tema 6. Lenguaje de Manipulacin de Datos

    54

    Se pueden ordenar los registros por ms de un campo, como por ejemplo:SELECT duenyo, direccion, telefono

    FROM casa_rural

    ORDER BY duenyo, precio;

    Incluso se puede especificar el orden de los registros: ascendente mediante la clasula(ASC -se toma este valor por defecto) descendente (DESC)SELECT duenyo, direccion, telefono

    FROM casa_rural

    ORDER BY duenyo ASC, precio DESC;

    2.3 Consultas con PredicadoEl predicado se incluye entre la clasula y el primer nombre del campo a recuperar, losposibles predicados son:

    Predicado DescripcinALL Devuelve todos los campos de la tabla

    TOP Devuelve un determinado nmero de registros de la tablaDISTINCT Omite los registros cuyos campos seleccionados coincidan totalmente

    2.3.1 ALLSi no se incluye ninguno de los predicados se asume ALL. Se seleccionan todos losregistros que cumplen las condiciones de la instruccin SQL. No es conveniente abusar deeste predicado ya que obligamos al motor de la base de datos a analizar la estructura de latabla para averiguar los campos que contiene, es mucho ms rpido indicar el listado decampos deseados.SELECT ALL FROM habitacion;

    SELECT * FROM habitacion;

    2.3.2 TOPDevuelve un cierto nmero de registros a partir del principio o del final de un rangoespecificado por una clusula ORDER BY. Supongamos que queremos recuperar losdueos de las 5 casas ms caras:SELECT TOP 5 duenyo

    FROM casa_rural

    ORDER BY precio DESC;

  • Tema 6. Lenguaje de Manipulacin de Datos

    55

    Si no se incluye la clusula ORDER BY, la consulta devolver un conjunto arbitrario de 25registros de la tabla casa_rural. El predicado TOP no elige entre valores iguales. En elejemplo anterior, si la casa nmero 5 y la 6 tienen el mismo precio, la consulta devolver 6registros. Se puede utilizar la palabra reservada PERCENT para devolver un ciertoporcentaje de registros que caen al principio o al final de un rango especificado por laclusula ORDER BY. Supongamos que en lugar de las 5 casas ms caras deseamos el 10por ciento de las casas:SELECT TOP 10 PERCENT duenyo

    FROM casa_rural

    ORDER BY precio DESC;

    El valor que va a continuacin de TOP debe ser un entero sin signo.

    2.3.3 DISTINCTOmite los registros que contienen datos duplicados en los campos seleccionados. Para quelos valores de cada campo listado en la instruccin SELECT se incluyan en la consultadeben ser nicos.Por ejemplo, varias casas de la tabla casa_rural pueden tener el mismo dueo. Siejecutamos la siguiente instruccin SQL, devolver un nico registro por cada dueodiferente:SELECT DISTINCT duenyo

    FROM casa_rural;

    En otras palabras, el predicado DISTINCT devuelve aquellos registros cuyos camposindicados en la clusula SELECT posean un contenido diferente.

    2.4 AliasEn determinadas circunstancias es necesario asignar un nombre a alguna columnadeterminada del resultado de una consulta. Para ello, podemos utilizar la palabra reservadaAS que se encarga de asignar el nombre que deseamos a la columna indicada. Tomandocomo referencia el ejemplo anterior podemos hacer que la columna devuelta por laconsulta, en lugar de llamarse duenyo (igual que el campo devuelto) se llame Persona decontacto. En este caso procederamos de la siguiente forma:SELECT DISTINCT duenyo AS Persona de contacto

    FROM casa_rural;

    Se consigue el mismo efecto utilizando la siguiente consulta:SELECT DISTINCT duenyo Persona de contacto

    FROM casa_rural;

  • Tema 6. Lenguaje de Manipulacin de Datos

    56

    2.5 Criterios de SeleccinEn el apartado anterior se vio la forma de recuperar registros de las tablas. Sin embargo, sedevolvan todos los registros de la mencionada tabla. A lo largo de este apartado seestudiarn las posibilidades de filtrar los registros con el fin de recuperar solamenteaquellos que cumplan unas condiciones preestablecidas.Antes de comenzar el desarrollo de este apartado hay que recalcar que:! cada vez que se desee establecer una condicin referida a un campo de texto la

    condicin de bsqueda debe ir encerrada entre comillas simples; se tiene en cuenta ladiferencia entre maysculas y minsculas

    ! las fechas se deben escribir siempre en formato dd/mm/aa donde dd representa el da,mm el mes y aa el ao, se puede utilizar la barra (/) o el guin (-) y adems la fechadebe ir encerrada entre comillas simples (). Por ejemplo si deseamos referirnos al da3 de Septiembre de 1995 deberemos hacerlo de la siguiente forma; 09-03-95 9-3-95 9/3/95.

    2.5.1 La clusula WHERELa clusula WHERE puede usarse para determinar qu registros de las tablas enumeradasen la clusula FROM aparecern en los resultados de la instruccin SELECT. Despus deescribir esta clusula se deben especificar las condiciones que se expondrn en losapartados siguientes. Si no se emplea esta clusula, la consulta devolver todas las filas dela tabla. WHERE es opcional, pero cuando aparece debe ir a continuacin de FROM.

    2.5.2 Operadores de comparacinComo ya comentamos, los operadores de comparacin disponibles en SQL son: =, , =, (distinto). Veamos algunos ejemplos:Obtener el dueo y el precio de las casas que valgan menos de 300euros

    SELECT duenyo, precio

    FROM casa_rural

    WHERE precio < 300;

    Obtener el cdigo de las casas y el cdigo de las habitaciones quetengan ms de dos plazas

    SELECT cod_casa, codigo

    FROM habitacion

    WHERE num_plazas > 2;

    Obtener el dueo y la direccin de las casas cuya fecha deconstruccin sea posterior a 01/10/1994

    SELECT duenyo, direccion

  • Tema 6. Lenguaje de Manipulacin de Datos

    57

    FROM casa_rural

    WHERE fecha_construccion > 01/10/94;

    Obtener el cdigo de la casa y de las habitaciones que tengan bao

    SELECT cod_casa, codigo

    FROM habitacion

    WHERE banyo = 'S';

    2.5.3 Operadores LgicosLos operadores lgicos soportados por SQL son, entre otros: AND, OR, NOT. A excepcinde NOT todos poseen la siguiente sintaxis: operador donde expresin1 y expresin2 son las condiciones a evaluar. El resultado de la operacinvara en funcin del operador lgico. La tabla adjunta muestra los diferentes posiblesresultados para AND y OR:

    Operador Resultado

    Verdad AND Falso Falso

    Verdad AND Verdad Verdad

    Falso AND Verdad Falso

    Falso AND Falso Falso

    Verdad OR Falso Verdad

    Verdad OR Verdad Verdad

    Falso OR Verdad Verdad

    Falso OR Falso Falso

    Si a cualquiera de las anteriores condiciones le anteponemos el operador NOT el resultadode la operacin ser el contrario al devuelto sin el operador NOT. Veamos algunosejemplos.

    Obtener el cdigo de las casas cuyo precio oscila entre 200 y 300euros

    SELECT codigo

    FROM casa_rural

    WHERE precio > 200 AND precio < 300;

  • Tema 6. Lenguaje de Manipulacin de Datos

    58

    Obtener el cdigo de las casas cuyo precio oscila entre 200 y 300euros o su fecha de construccin es posterior al ao 1994.

    SELECT codigo

    FROM casa_rural

    WHERE (precio > 200 AND precio < 300) ORfecha_construccion >= 01/01/95;

    Obtener todos los datos de los tipo de servicio diferentes aSupermercado.

    SELECT *

    FROM tipo_servicio

    WHERE NOT descripcion=Supermercado;

    Obtener todos los datos de las habitaciones cuyo precio por nocheest entre 50 y 60 euros o cuyo precio con descuento est entre 40 y50 euros.

    SELECT *

    FROM habitacion

    WHERE (precio_noche > 50 AND precio_noche < 60) OR(precio_dto_3 > 40 AND precio_dto_3 < 50);

    2.5.4 Intervalos de ValoresPara indicar que deseamos recuperar los registros segn el intervalo de valores de uncampo emplearemos el operador Between cuya sintaxis es:campo [Not] Between valor1 And valor2 (la condicin Not es opcional)En este caso la consulta devolvera los registros que contengan en "campo" un valorincluido en el intervalo valor1, valor2 (ambos inclusive). Si anteponemos la condicin Notdevolver aquellos valores no incluidos en el intervalo. Veamos algunos ejemplos:

    Obtener las casas cuyo precio oscila entre 200 y 300 euros

    SELECT codigo

    FROM casa_rural

    WHERE precio BETWEEN 200 AND 300;

    Obtener el nombre y el cdigo postal de los municipios cuyo nombreest entre Ab y As

  • Tema 6. Lenguaje de Manipulacin de Datos

    59

    SELECT nombre, codigo_postal

    FROM municipio

    WHERE nombre BETWEEN Ab AND As;

    Obtener las casas cuya fecha de construccin oscila entre los aos1989 y 1992

    SELECT codigo

    FROM casa_rural

    WHERE fecha_construccion BETWEEN 01/01/89 AND 31/12/92;

    2.5.5 El Operador LikeSe utiliza para comparar una expresin de cadena con un modelo en una expresin SQL.Su sintaxis es:expresin Like modelo

    donde expresin es un campo y modelo es una cadena contra la que se comparaexpresin. Se puede utilizar el operador Like para encontrar valores en los campos quecoincidan con el modelo especificado. Por modelo puede especificar un valor completo (AnaMara), o se pueden utilizar caracteres comodn como los reconocidos por el sistemaoperativo para encontrar un rango de valores (Like An%).El operador Like se puede utilizar en una expresin para comparar un valor de un campocon una expresin de cadena. Por ejemplo, si introduce Like C% en una consulta SQL, laconsulta devuelve todos los valores de campo que comiencen por la letra C.El ejemplo siguiente devuelve los datos que comienzan con la letra P seguido de cualquierletra entre A y F y de tres dgitos:Like 'P[A-F]###'

    Este ejemplo devuelve los campos cuyo contenido empiece con una letra de la A a la Dseguidas de cualquier cadena.Like '[A-D]%'

    En la tabla siguiente se muestra cmo utilizar el operador Like para comparar expresionescon diferentes modelos.

    Tipo de coincidencia Modelo Planteado Coincide No coincide

    Varios caracteres 'a%a' 'aa', 'aBa', 'aBBBa' 'aBC'Carcter especial 'a[%]a' 'a%a' 'aaa'Varios caracteres 'ab%' 'abcdefg', 'abc' 'cab', 'aab'Un solo carcter 'a?a' 'aaa', 'a3a', 'aBa' 'aBBBa'Un solo dgito 'a#a' 'a0a', 'a1a', 'a2a' 'aaa', 'a10a'

  • Tema 6. Lenguaje de Manipulacin de Datos

    60

    Rango de caracteres '[a-z]' 'f', 'p', 'j' '2', '&'Fuera de un rango '[!a-z]' '9', '&', '%' 'b', 'a'Distinto de un dgito '[!0-9]' 'A', 'a', '&', '~' '0', '1', '9'Combinada 'a[!b-m]#' 'An9', 'az0', 'a99' 'abc', 'aj0'

    Obtener el dueo de las casas que disponen de frigorifico

    SELECT duenyo

    FROM casa_rural

    WHERE descripcion LIKE '%frigorifico%';

    2.5.6 El Operador InEste operador devuelve aquellos registros cuyo campo indicado coincide con alguno de losincluidos en una lista. Su sintaxis es:expresin [Not] In(valor1, valor2, . . .)

    Por ejemplo, la siguiente consulta devuelve el nombre de los municipios cuyo cdigo postalpertenezca al conjunto {99991, 99993}:SELECT nombre

    FROM municipio

    WHERE codigo_postal IN (99991, 99993);

    2.6 Agrupamiento de Registros

    2.6.1 GROUP BYCombina los registros con valores idnticos en la lista de campos especificados, en unnico registro. Para cada registro se crea un valor sumario si se incluye una funcin SQLagregada, como por ejemplo Sum o Count, en la instruccin SELECT. Su sintaxis es:SELECT campos FROM tabla WHERE criterio GROUP BY campos del grupo

    GROUP BY es opcional. Los valores de resumen se omiten si no existe una funcin SQLagregada en la instruccin SELECT. Los valores Null en los campos GROUP BY seagrupan y no se omiten. No obstante, los valores Null no se evalan en ninguna de lasfunciones SQL agregadas.Se utiliza la clusula WHERE para excluir aquellas filas que no desea agrupar, y la clusulaHAVING para filtrar los registros una vez agrupados.Un campo de la lista de campos GROUP BY puede referirse a cualquier campo de lastablas que aparecen en la clusula FROM, incluso si el campo no esta incluido en lainstruccin SELECT, siempre y cuando la instruccin SELECT incluya al menos una funcinSQL agregada.

  • Tema 6. Lenguaje de Manipulacin de Datos

    61

    Todos los campos de la lista de campos de SELECT deben incluirse en la clusula GROUPBY o como argumentos de una funcin SQL agregada. Por ejemplo, la siguiente consultaobtiene para cada casa, el nmero total de plazas de todas sus habitaciones:SELECT cod_casa, SUM(num_plazas)FROM habitacion

    GROUP BY cod_casa;

    Una vez que GROUP BY ha combinado los registros, HAVING muestra cualquier registroagrupado por la clusula GROUP BY que satisfaga las condiciones de la clusula HAVING.HAVING es similar a WHERE, determina qu registros se seleccionan. Una vez que losregistros se han agrupado utilizando GROUP BY, HAVING determina cules de ellos se vana mostrar. Por ejemplo, la siguiente consulta obtiene los mismos datos que la consultaanterior, pero slo de aquellas casas en las que haya al menos 6 plazas y el mximo apagar por noche de una habitacin sean 90 euros:SELECT cod_casa, SUM(num_plazas)FROM habitacion

    GROUP BY cod_casa

    HAVING SUM(num_plazas) > 6 AND MAX(precio_noche)

  • Tema 6. Lenguaje de Manipulacin de Datos

    62

    Por ejemplo, la siguiente consulta obtiene el nmero total de casas rurales existentes en labase de datos:SELECT Count(*) AS TotalFROM casa_rural;

    2.6.4 MAX, MINDevuelven el mnimo o el mximo de un conjunto de valores contenidos en un campoespecifico de una consulta. Su sintaxis es:Min(expr)Max(expr)

    donde expr es el campo sobre el que se desea realizar el clculo. Veamos un par deejemplos.

    Obtener el precio mnimo de las casas cuya fecha de construccin esanterior al ao 1994.

    SELECT MIN(precio) AS El MinimoFROM casa_rural

    WHERE fecha_construccion < 01/01/94;

    Obtener el precio mximo de las casas cuya fecha de construccin esanterior al ao 1994.

    SELECT MAX(precio) AS El MaximoFROM casa_rural

    WHERE fecha_construccion < 01/01/94;

    2.6.5 SUMDevuelve la suma del conjunto de valores contenido en un campo especifico de unaconsulta. Su sintaxis es:Sum(expr)

    donde expr representa el nombre del campo que contiene los datos que desean sumarse ouna expresin que realiza un clculo utilizando los datos de dichos campos. Por ejemplo, lasiguiente consulta obtiene para cada casa, el nmero total de plazas de todas sushabitaciones:SELECT cod_casa, SUM(num_plazas)FROM habitacion

    GROUP BY cod_casa;

  • Tema 6. Lenguaje de Manipulacin de Datos

    63

    2.6.6 StDev, StDevPDevuelve estimaciones de la desviacin estndar para la poblacin (el total de los registrosde la tabla) o una muestra de la poblacin representada (muestra aleatoria) . Su sintaxis es:StDev(expr)StDevP(expr)

    donde expr representa el nombre del campo que contiene los datos que desean evaluarseo una expresin que realiza un clculo utilizando los datos de dichos campos.StDevP evala una poblacin, y StDev evala una muestra de la poblacin. Si la consultacontiene menos de dos registros (o ningn registro para StDevP), estas funcionesdevuelven un valor Null (el cual indica que la desviacin estndar no puede calcularse). Porejemplo:SELECT StDev(precio) AS DesviacionFROM casa_rural

    WHERE fecha_construccion < 01/01/94;

    SELECT StDevP(precio) AS DesviacionFROM casa_rural

    WHERE fecha_construccion < 01/01/94;

    2.6.7 Var, VarPDevuelve una estimacin de la varianza de una poblacin (sobre el total de los registros) ouna muestra de la poblacin (muestra aleatoria de registros) sobre los valores de un campo.Su sintaxis es:Var(expr)VarP(expr)

    VarP evala una poblacin, y Var evala una muestra de la poblacin. Expr es el nombredel campo que contiene los datos que desean evaluarse o una expresin que realiza unclculo utilizando los datos de dichos campos. Si la consulta contiene menos de dosregistros, Var y VarP devuelven Null (esto indica que la varianza no puede calcularse).Puede utilizar Var y VarP en una expresin de consulta o en una Instruccin SQL. Porejemplo:SELECT Var(precio) AS DesviacionFROM casa_rural

    WHERE fecha_construccion < 01/01/94;

    SELECT VarP(precio) AS DesviacionFROM casa_rural

  • Tema 6. Lenguaje de Manipulacin de Datos

    64

    WHERE fecha_construccion < 01/01/94;

    2.7 Consultas sobre ms de una tabla

    Normalmente los datos que se desean extraer a travs de una consulta no estn en unanica tabla. En estos casos, hemos de incluir en la clusula FROM todas las tablas de lasque deseamos extraer algn dato. Por ejemplo, si quisiramos obtener para cada casa sucdigo, su direccin y el municipio donde se encuentran, deberamos escribir:SELECT casa_rural.codigo, direccion, nombre

    FROM casa_rural, municipio;

    Se debe indicar que el cdigo es de la casa rural porque existe otro campo cdigo en latabla municipio y podra resultar ambiguo. La ejecucin de esta consulta nos devuelve lasiguiente informacin:CODIGO DIRECCION NOMBRE---------- ------------------------------ ------------------------------

    1001 Monje 27 Abis1001 Monje 27 Abiside1001 Monje 27 Bernacle2001 Fca Almadraba,Almendro Blanco Abis2001 Fca Almadraba,Almendro Blanco Abiside2001 Fca Almadraba,Almendro Blanco Bernacle2002 Mayor 18 Abis2002 Mayor 18 Abiside2002 Mayor 18 Bernacle...

    Se observa que cada casa aparece tres veces, una vez con cada municipio. Esto es debidoa que cuando se ponen dos tablas en la clusula FROM se une cada fila de la primera tablacon cada fila de la segunda tabla. Para obtener la consulta correcta, se debe indicar en laclusula WHERE la relacin existente entre ambas tablas a travs de sus claves ajenas. Eneste caso, la tabla casa_rural tiene una clave ajena sobre la tabla municipio. Por tanto, laconsulta correcta sera:SELECT casa_rural.codigo, direccion, nombre

    FROM casa_rural, municipio

    WHERE casa_rural.municipio = municipio.codigo;

    As, obtendramos los siguientes datos:CODIGO DIRECCION NOMBRE---------- ------------------------------ ------------------------------

    1001 Monje 27 Abis2001 Fca Almadraba,Almendro Blanco Abiside2002 Mayor 18 Abiside...

    Cuando se utilizan varias tablas, es frecuente que haya nombres de campos repetidos enellas. Hemos visto que la solucin pasa por escribir delante del campo en cuestin elnombre de la tabla a la que pertenece, lo que en ocasiones puede resultar tedioso,

  • Tema 6. Lenguaje de Manipulacin de Datos

    65

    sobretodo si los nombres de las tablas son largos. Por esta razn, se suelen utilizar aliaspara reducir el nombre de las tablas. Por ejemplo:SELECT c.codigo, direccion, nombre

    FROM casa_rural c, municipio m

    WHERE c.municipio = m.codigo;

    2.8 Consultas de Unin Externas

    Se utiliza la operacin UNION para crear una consulta de unin, combinando los resultadosde dos o ms consultas o tablas independientes. Su sintaxis es:[TABLE] consulta1 UNION [ALL] [TABLE] consulta2[UNION [ALL] [TABLE] consultan [ ... ]]

    donde consulta1, consulta2, consultan son instrucciones SELECT, el nombre de unaconsulta almacenada o el nombre de una tabla almacenada precedido por la palabra claveTABLE.

    Puede combinar los resultados de dos o ms cons