30
UNIVERSIDAD CENTRAL DEL ECUADOR FACULTAD DE CIENCIAS ECONÓMICAS INGENIERÍA EN FINANZAS CAPÍTULO 7 Diseño de base de datos relacionales por mapeado ER- y EER-a-relacional CAPÍTULO 8 SQL-99: definición del esquema, restricciones, consultas y vistas

Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

Embed Size (px)

Citation preview

Page 1: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

UNIVERSIDAD CENTRAL DEL ECUADORFACULTAD DE CIENCIAS ECONÓMICAS

INGENIERÍA EN FINANZAS

CAPÍTULO 7 Diseño de base de datos relacionales por mapeado ER- y

EER-a-relacionalCAPÍTULO 8

SQL-99: definición del esquema, restricciones, consultas y vistas

Page 2: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

Lucio Karina, Ludeña Bryan y Melo Elena

LibroFundamentos de Sistemas de

Bases de Datos - 5ta Ed. - Elmasr

CAPITULO 7

7.1 Diseño de una base de datos relacional utilizando el mapeado ER-a-relacional

Page 3: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

7.1.1 Algoritmo de mapeado ER-a-relacional

Lucio Karina, Ludeña Bryan y Melo Elena

Page 4: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

Lucio Karina, Ludeña Bryan y Melo Elena

Paso 1: Mapeado de los tipos de entidad regulares. Por cada entidad(fuerte) regular E del esquema ER, cree una relación R que incluya todos los archivos simples de E. Incluya únicamente los atributos simples que conforman un atributo compuesto. Seleccione uno de los atributos clave de E como clave principal para R. si la clave elegida de E es compuesta, entonces el conjunto de los atributos simples que la forman constituirán la clave principal de E. Si durante el diseño conceptual se identificaron varias claves para E, la información que describe los atributos que forman la clave adicional conserva su orden para especificar las calves (únicas) secundarias de la relación R. El conocimiento sobre las claves también es necesario para la indexación y otros tipos de análisis.En nuestro ejemplo creamos las relaciones EMPLEADO, DEPARTAMENTO Y PROYECTO en la figura 7.2 como correspondiente a los tipos de entidad regulares, EMPLEADO, DEPARTAMENTO y PROYECTO de la figura 7.1 La foreign key y los atributos de relación si los hay, no se incluye aún; se añadirán durante los pasos posteriores. Nos referimos a los atributos SuperDni y Dni de EMPLEADO, DniDirector y FechaIngreso-Director de DEPARTAMENTOS y NumDptoProyecto de PROYECTO. En nuestro ejemplo, seleccionamos Dni, NúmeroDpto y NumProyecto como las claves principales para las relaciones EMPLEADO, DEPARTAMENTO Y PROYECTO, respectivamente. Recuerde que NombreDpto de DEPARTAMENTO y NombreProyecto de PROYECTO son claves secundarias, pues es posible que la utilicemos más tarde en el daño.Las relaciones que se crean a tupla representa una instancia de entidad. En la figura 7.3 (a) se muestra el resultado tras este paso del mapeado.

7.2. Resultado de mapear el esquema ER de EMPRESA dentro de un esquema de base de datos relacional.

Page 5: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

Paso 2: Mapeado de los tipos de entidad débiles. En nuestro ejemplo, creamos la relación SUBORDINADO en este paso como correspondencia con el tipo de entidad SUBORDINADO. Incluimos la clave principal Dni de la relación EMPLEADO (que corresponde al tipo de entidad propietario) como un atributo foreign key de SUBORDINADO; lo renombramos como DniEmpleado, aunque no es necesario. La clave principal de la relación SUNBORDINADO es la combinacion (DniEmpleado, Nombre Subordinado) porque NombreSubordinado (también renombrado a partir de Nombre en la Figura 7.1) es la calve parcial de SUBORDINADO.

Lucio Karina, Ludeña Bryan y Melo Elena

7.2. Resultado de mapear el esquema ER de EMPRESA dentro de un esquema de base de datos relacional.

Figura 7.3: Ilustración de algunos pasos del mapeado. (a) Relaciones de entidad después del paso 1. (b) Relación de entidad débil adicional después del paso 2. (c) Relación de relación después del paso 5. (d) Relación que representa el atributo multivalor después del paso 6.

Page 6: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

Lucio Karina, Ludeña Bryan y Melo Elena

Paso 3: Mapeado delos tipos de relación 1:1

binaria

Metodología de la foreing key

Metodología de la relación mezaclada

Metodología de referencia cruzada

o relación de relación

Por cada tipo de relación (por ejemplo S) e incluya como foreign key en S la clave principal T. Lo mejor es elegir un tipo de entidad como participación total en R en el papel de S.Incluya todos los atributos simples del tipo relación 1:1 R como atricuto de S.

Una asignación alternativa de un tipo de relación 1:1 es posible al mezclar los dos tipos de entidad y la relación. esto puede ser apropiado cuando las participaciones son totales.

La tercera opción consiste en configurar una tercera relacion R con el propósito de crear uan referencia cruzada de las calves principales de las relaciones S y T que representa los tipos de entidad.

Paso 5: Mapeado de tipos relaciones M:N binarias. Por cada tipo de relación M:N binaria R, cree una nueva relación S para representar R. Incluya como atributos de la foreign key en S las claves principales de las relaciones que representan los tipos de entidad participantes; su combinación formara la clave principal de S. Incluya también cualesquiera atributos simples del tipo de relación M:N como atributos de S.

Paso 4: Mapeado de tipos relaciones 1:N binaria. Por cada relación 1:n binaria regular R, identifique la relación S que representa el tipo de entidad participante en el lado N del tipo de relación. Incluya como foreign key en S la clave principal de la relación T que representa el otro tipo de entidad participante en R; hacemos esto porque cada instancia de entidad en el lado de N está relacionada, a lo sumo, con una instancia de entidad del lado 1 del tipo de relación.

Page 7: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

Lucio Karina, Ludeña Bryan y Melo Elena

Paso 6: Mapeado de atributos multivalor. Por cada atributo multivalor A, cree una nueva relación R. Esta relación incluirá atributos correspondientes a A, más el atributo clave principal K de la relación que representa el tipo de entidad o tipo de relación que tiene A como un atributo. La clave principal de R es la combinación de A y K. Si el atributo multivalor es compuesto, incluimos sus componentes simples.

Paso 7: Mapeado de tipos relaciones n-ary. Por cada tipo de relación n-ary R, donde n>2, cree una nueva relación S para representar R. Incluya como atributos de la foreign key en S las claves principales de las relaciones que presentan los tipos de entidad participantes. Incluye también cualesquiera atributos de S. Normalmente la clave principal de entidad S es una combinación de todas las foreign keys que hacen referencia a las relaciones que representan los tipos de entidad participantes.

7.1.2 Explicación y resumen del mapeado para las construcciones del modelo ERFigura 7.4. Asignación de tipo de relación n-ary SUMINISTRO de la figura 3.17(a)

Para formar una relación que incluya el nombre del empleado, el nombre del proyecto y las horas que el empleado trabaja en cada proyecto, tenemos que conectar cada tupla EMPLEADO con las tuplas PROYECTO relacionadas a través de la relación TRABAJ_EN de la figura 7.s. Por tanto, debemos aplicar la operación EQUIJOIN a las relaciones EMPLEADO Y TRABAJA_EN con la condición de concatenación Dni.

Page 8: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

Lucio Karina, Ludeña Bryan y Melo Elena

7.2 Mapeado de construcciones del modelo EER a las relaciones7.2.1 Mapeado de la especialización o generalización

Paso 8: Opciones para mapear la especialización o generalización. Convierta cada especialización con m subclases {S1,S2,…,Sn} y la superclase C, donde los atributos de C son {k, a,..,an} y k es la clave principal.

Figura 7.5. Opciones para el mapeado de la especialización y la generalización. (a) Mapeado del esquema EER de la Figura 4.4 utilizando la opción 8A, (b) Mapeado del esquema EER de la figura 4.4 utilizando la opción 8b, (c) Mapeado del esquema EER de la figura 4.4 utilizando la opción 8C, (d) Mapeado del esquema EER de la figura 4.4 utilizando la opción 8D.

Figura 7.6. Mapeado del entramado de especialización EER de la figura 4.8 utilizando varias opciones.

Page 9: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

Lucio Karina, Ludeña Bryan y Melo Elena

Paso 9: Mapeado de tipos de unión (categorías). Para mejorar una categoría cuyas superclases definitorias tienen claves diferentes, es costumbre especificar un nuevo atributo de clave, denominado clave sustituta, al crear una relación correspondiente a la categoría.

7.2.2 Mapeado de subclases compartidas (herencia múltiple)Una subclase compartida, como INGENIERO_JEFE de la figura 4.7, en una sola clase de varias subclases, indicando la herencia múltiple. Estas clases deben tener todas el mismo atributo clave; en caso contrario, la subclase compartida se modelaría como una categoría. 7.2.3 Mapeado de categorías (tipos de unión)Añadimos otros pasos al procedimiento de mapeado para las categorías. Una categoría es una subclase de la unión de dos o más superclases que puede tener diferentes claves, porque pueden ser de distintos tipos de entidad.

Figura 7.7. Mapeado de las categorías EER

Page 10: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

Lucio Karina, Ludeña Bryan y Melo Elena

El lenguaje SQL se puede considerar como una de las principales razones del éxito comercial de las bases de daros relacionados. Como se convirtió en un estándar para estas ultimas, los usuarios perdieron el miedo a migrar sus aplicaciones de base de datos desde otros tipos de sistemas de bases de datos (por el producto DBMS tradicional que estaban utilizando.Una ventaja de disponer de un estándar es que los usuarios pueden escribir sentencias en una aplicación de base de datos para acceder a los datos almacenados en dos o mas DBMS relacionadas sin tener que cambiar el sublenguaje de base de datos (SQL), siempre y cuando esos DBMS soporten el SQL estándar.El nombre SQL significa Lenguaje de consulta estructurado. Originalmente, SQL se denomina SEQUEL (Structured English QUEry Languaje) y fue diseñado e implementado por IBM Research a modo de interfaz para un sistema de base de datos relacional conocido como SYSTEM R. SQL es ahora el lenguaje estandar de los DBMSs relacionales comerciales

CAPITULO 8

SQL-99: definición del esquema, restricciones, consultas y vistas

Page 11: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

Lucio Karina, Ludeña Bryan y Melo Elena

8.1 Definición de datos y tipos de datos SQLSQL utiliza los términos tabla, fila y columna para los términos relación, tupla y atributo del modelo relacional formal, respectivamente. Utilizamos todos es términos indistintamente. El principal comando de SQL para definir datos es la sentencia CREATE, que se utiliza para crear esquemas, tablas (relaciones) y dominios (así como otras estructuras, como vistas, aserciones y triggers). 8.1.1 Conceptos de esquema y catálogo en SQLUn esquema SQL se identifica con un nombre de esquemas e incluye un identificador de autorización para indicar el usuario o a la cuenta propietaria del esquema así como unos descriptores para cada elemento. Los elementos del esquema son las tablas, as restricciones, las vistas, los dominios y otras estructuras que describen en esquema. El esquema se crea con la sentencia CREATE SCHEMA, que puede incluir las definiciones de todos sus elementos.CREATE SHEMA EMPRESA AUTHORIZATION Jperez;8.1.2 El comando CREATE TABLE de SQLEl comando CREATE TABLE se utiliza para especificar una nueva relación, asignándole a esta ultima un nombre y sus atributos y restricciones iniciales. Primero se especifica los atributos, a cada uno de los cuales se les asigna un nombre, un tipo de datos para especificar su dominio de valores, y cualesquiera restricciones de atributo, como NOT NULL. Las restricciones de clave, integridad de entidad e integridad referencial, pueden especificarse con la sentencia CREATE TABLE después de haber declarado los atributos, o pueden añadirse más tarde con el comando ALTER TABLE

Page 12: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

Lucio Karina, Ludeña Bryan y Melo Elena

Figura 8.1. Sentencia de definición de datos CREATE TABLE para definir el esquema EMPRESA de la figura 5.7

Page 13: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

Especificación de restricciones en SQL Restricciones de clave y de integridad referencial, restricciones en los dominios de atributo y NULLs y en las tuplas

individuales dentro de una relación. Especificación de restricciones de atributo y valores predeterminados de atributo Como SQL permite NULL como valor de atributo, es posible especificar una restricción NOT NULL si no se permite NULL

para un atributo en particular. También es posible definir un valor predeterminado para un atributo añadiendo la cláusula OEFAULT a su definición. Restringir los valores de atributo o dominio con la cláusula CHECK a continuación de la definición de un atributo o dominio.

Especificación de las restricciones de clave y de integridad referencial

• Hay cláusulas especiales para la sentencia CREATE TABLE. • La cláusula PRIMARY KEY especifica uno o más atributos que constituyen la clave principal

de una relación. Si una clave principal sólo tiene un atributo, la cláusula puede seguir al atributo directamente.

• La cláusula UNIQUE especifica claves (secundarias) alternativas.• La integridad referencial se especifica mediante la cláusula FOREIGN KEY.• una restricción de integridad referencial se puede violar cuando se insertan o eliminan

tuplas o cuando se modifica el valor de un atributo de laforeign key o de la clave principal

Page 14: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

Asignación de nombres a las restricciones

Con la palabra clave CONSTRAINT puede asignarse un nombre de restricción a una restricción. El nombre de una restricción se utiliza para identificar una restricción particular en caso de que la restricción tenga que eliminarse más tarde y sustituirse por otra restricción

Especificación de restricciones en las tuplas utilizando CHECK

• Se pueden indicar otras restricciones de tabla mediante cláusulas CHECK adicionales al final de una sentencia CREATE TABLE. Estas restricciones se pueden denominar basadas en tuplas porque se aplican individualmente a cada tupla y se comprueban siempre que se inserta o modifica una tupla.

Page 15: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

Sentencias de SQL para cambiar el esquema

Comando DROP Se puede utilizar para eliminar los elementos con nombre

del esquema, como tablas, dominios o restricciones. Por ejemplo, si ya no se necesita un esquema entero, se puede utilizar el comando DROP SCHEMA.

Hay dos opciones de comportamiento para estas eliminaciones: CASCADE y RESTRICT. Por ejemplo, para eliminar el esquema de la base de datos EMPRESA y todas sus tablas, dominios y otros elementos, se utiliza la opción CASCADE de este modo: DROP SCHEMA EMPRESA CASCADE; Si se opta por RESTRICT en lugar de CASCAD E, el esquema sólo se elimina si no contiene elementos; en caso contrario, el comando DROP no se ejecutará.

Si ya no se necesita una relación base dentro de un esquema, la relación y su definición se pueden eliminar con el comando DROP TABLE.

Con la opción CASCADE, todas estas restricciones y vistas que hacen referencia a la tabla se eliminan automáticamente del esquema, junto con la propia tabla.

• Comando ALTER • La definición de una tabla base o de otros

elementos con nombre del esquema se puede cambiar con el comando ALTER.

• Para eliminar una columna, debemos elegir CASCAD E o RESTRICT como comportamiento de eliminación. En el caso de CASCADE, todas las restricciones y vistas que hacen referencia a la columna se eliminarán automáticamente del esquema, junto con la columna. Si optamos por RESTRICT, el comando es satisfactorio sólo si no hay vistas o restricciones (u otros elementos) que hagan referencia a la columna.

Page 16: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

Consultas básicas en SQL

SQL tiene una sentencia básica para recuperar información de una base de datos: SELECT.

Algunas relaciones SQL están restringidas a ser conjuntos porque se ha declarado una restricción de clave o porque se ha utilizado la opción DISTINCT con la sentencia SELECT (se explica más adelante en esta sección).

Estructura SElECT-FROM-WHERE de las consultas básicas de SQL

La forma básica de la sentencia SELECT, denominada en ocasiones mapeado o bloque select-from-where, está formada por las cláusulas SELECT, FROM y WHERE y tiene la siguiente forma: SELECT <lista de atributos> cuyos valores serán recuperados por la consulta FROM <lista de tablas> lista de las relaciones necesarias para procesar las consultasWHERE <condición> una expresión condicional (booleana) que identifica las tuplas que la consulta recuperará

Page 17: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

Consulta 0. Recuperar la fecha de nacimiento y la dirección del empleado (o empleados) cuyo nombre sea José Pérez Pérez,

CO: SELECT FechaNac, Dirección FROM EMPLEADO WHERE Nombre='José' AND

Apellid01 ='Pérez' AND Apellid02='Pérez'

Nombres de atributo ambiguos, alias y variables de tupla En SQL el mismo nombre se puede utilizar para dos (o más) atributos, siempre y cuando los atributos se encuentren en relaciones diferentes. La relación EMPLEADO se llamaran NumeroDpto y Nombre, y que el atributo NombreDpto de DEPARTAMENTO también se llamara Nombre. Hemos añadido un prefijo a los atributos Nombre y NumeroDpto para especificar a cuáles nos estamos refiriendo en realidadSELECT Nombre, EMPLEADO. Nombre, DirecciónFROM EMPLEADO, DEPARTAMENTO DEPARTAMENTO WHERE Nombre='lnvestígación' AND DEPARTAMENTO.NumeroDpto=EMPLEADO.NumeroDpto;

Page 18: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

Cláusula WHERE no especificada y uso del asterisco

La ausencia de una cláusula WHERE indica que no hay una condición en la selección de tuplas; por tanto, todas las tuplas de la relación especificada en la cláusula FROM se califican y seleccionan para la consulta resultante. Si en la cláusula FROM se especifica más de una relación y no hay una cláusula WHERE, entonces se selecciona el PRODUCTO CRUZADO (todas las posibles combinaciones de tuplas) de esas relaciones.

Consultas 9 y 10. Seleccione todos los Dni de EMPLEADO (C9) y todas las combinaciones de Dni de EMPLEADO y NombreDpto de DEPARTAMENTO (CIO) en la base de datos.

C9: SELECT Dni FROM EMPLEADO; C10: SELECT Dní, NombreDpto FROM EMPLEADO, DEPARTAMENTO;  

Para recuperar todos los valores de atributo de las tuplas seleccionadas, no tenemos que listar explícitamente los nombres de los atributos en SQL; podemos escribir un asterisco (*), que tiene el significado de todos los atributos.C1C: SELECT * FROM EMPLEADO WHERE Dno=5; C10: SELECT * FROM EMPLEADO, DEPARTAMENTO WHERE NombreDpto='lnvestigación' AND Dno=NumeroDpto; C10A: SELECT * FROM EMPLEADO, DEPARTAMENTO;

Page 19: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

Tablas como conjuntos en SQL

SQL trata normalmente a una tabla no como un conjunto, sino como un multiconjunto; las tuplas duplicadas pueden aparecer más de una vez en una tabla, y en el resultado de una consulta. SQL no elimina automáticamente las tuplas duplicadas en los resultados de las consultas, por las siguientes razones: • La eliminación de duplicados es una operación muy costosa. • El usuario puede querer ver las tuplas duplicadas en el resultado de una consulta. • Cuando se aplica una función de agregación a las tuplas, en la mayoría de los casos no queremos eliminar los duplicados

Si queremos eliminar las tuplas duplicadas del resultado de una consulta SQL, utilizamos la palabra clave DISTINCT en la cláusula SELECT, lo que significa que sólo las tuplas distintas deben permanecer en el resultado.

En general, una consulta con SELECT DISTINCT elimina los duplicados, mientras que una consulta con SELECT ALL no lo hace

Page 20: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

Comparación de subcadenas y operadores aritméticos

Condiciones de comparación de partes de una cadena de caracteres, mediante el operador de comparación LlKE. Esto se puede utilizar para la comparación de patrones. Las cadenas parciales se especifican mediante dos caracteres reservados: % sustituye una cantidad arbitraria de caracteres (de cero o más caracteres), y el guión de subrayado U reemplaza un solo carácter.

Permite utilizar la aritmética en las consultas. Los operadores aritméticos estándar para la suma (+), la diferencia (-), la multiplicación (*) y la división (/) se pueden aplicar a valores o atributos numéricos con dominios numéricos.

Ordenación del resultado de una consulta SQL permite ordenar las tuplas del resultado de una consulta por los valores de uno o más atributos, utilizando la cláusula ORDER BY.Consulta 15. Recuperar una lista de empleados y de los proyectos en los que trabajan, ordenada por el departamento. Dentro de cada departamento, ordenar alfabéticamente los empleados por su primer apellido y su nombre.Con la palabra clave DESC podemos ver el resultado ordenado descendentemente. La palabra clave ASC permite especificar explícitamente el orden ascendente.

Page 21: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

SQL tiene varias reglas para tratar con los valores NULL. 1. Valor desconocido Una persona en particular tiene una fecha de nacimiento, pero no la conocemos, por lo que la representamos con NULL en la base de datos. 2. Valor no disponible o no especificado Una persona tiene un teléfono en casa, pero no quiere que aparezca listado, por lo que se impide su visualización y se representa como NULL en la base de datos. 3. Atributo no aplicable Un atributo ÚltimoGrado sería NULL para una persona que no tiene una licenciatura, algo que no es aplicable para esa persona. Cuando en una comparación se ve implicado un NULL, se considera que el resultado es UNKNOWN, o desconocido (podría ser TRUE o podría ser FALSE). Es necesario definir los resultados de las expresiones lógicas de tres valores cuando se utilizan los conectores lógicos AND, OR Y NOT.SQL permite consultas que comprueban si el valor de un atributo es NULL. En lugar de utilizar = o <> para comparar el valor de un atributo con NULL, SQL utiliza 18 o 18 NOT.

Consultas SQl más complejas

Page 22: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

Consultas anidadas correlacionadas Siempre que una condición de la cláusula WHERE de una consulta anidada se refiera a algún atributo de una relación declarada en la consulta exterior, se dice que las dos consultas son correlacionadas.

Las funciones EXISTS y UNIQUE en SQL La función EXISTS de SQL se utiliza para comprobar si el resultado de una consulta anidada correlacionada está vacío (no contiene tuplas) o no. El resultado de EXISTS es un valor booleano, TRUE o FALSE.

EXISTS Y NOT EXISTS normalmente se utilizan en combinación con una consulta anidada correlacionada. En general, EXISTS(Q) devuelve TRUE si hay al menos una tupla en el resultado de la consulta anidada Q, y devuelve FALSE en caso contrario. NOT EXISTS(Q) devuelve TRUE si no hay tuplas en el resultado de la consulta anidada Q, y devuelve FALSE en caso contrario.

Page 23: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)
Page 24: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

FUNCIONES AGREGADASEN SQL

FUNCIONES MIN, MAX FUNCIÓN AVG

FUNCIÓN COUNTFUNCIÓN SUM

Se aplica a un conjunto o muticonjunto de valores numéricos

y devulve la respectiva suma.

Se aplica a un conjunto o multiconjunto de valores numéricos y

devuelve el promedio.

Devuelve el númerode tuplas o valores

especificados en una consulta.

Se aplican a un conjunto o multiconjunto de valores numéricos

y devuelven el valor mínimo y máximo.

Page 25: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

AGRUPAMIENTO: CLÁUSULAS GROUP BY Y

HAVING

GROUP BY HAVING

Esta cláusula especifica los atributos de agrupamiento, que también deben aparecer en la

cláusula Select.

Por lo tanto el valor resultante de aplicar la función de agregación a un grupo de tuplas aparece junto con el valor de los atributos de

agrupamiento.

Si existen Nulls en el atributo de agrupamiento, se crea un grupo

cerrado para todas las tuplas con un valor Null en el atributo de

agrupamiento.

La cláusula Having sirve para elegir grupos enteros.

Esta cláusula proporciona una condición en el grupo de tuplas

asociado a cada valor de los atributos de agrupamiento.

Page 26: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

EJEMPLO DE APLICACIÓN DE LAS CLÁUSULAS GROUP BY - HAVING

Page 27: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

Sentencias INSERT, DELETE Y UPDATE de

SQL

COMANDO INSERT

COMANDO DELETE

COMANDO UPDATE

Se utiliza para modificar los valores de atributo de una o más tuplas seleccionadas

Añade una tupla a una relación. Debemos especificar el nombre de la relación y una lista de valores para la tupla.

Los valores deben suministrarse en el mismo oreden en el que se especificaron los atributos correspondientes en el comando

Create Table.También es posible insertar con un solo comando INSERT varias

tuplas separadas por comas. Los valores de los atributos que constituyen cada

tupla se encierran entre paréntesis.

Elimina tuplas de una relación. Las tuplas se eliminan explicitamente solo de una tabla a la vez.

La eliminación se puede propagar a tuplas de otras relaciones si se han especificado acciones de activación referencial en las

restricciones de integridad referencial de DDL.

Cada comando UPDATE se refiere explícitamente a una sola relación. Para modificar varias relaciones debemos ejecutar

varios comandos Update.

Page 28: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

RESTRICCIONES COMO ASERCIONES Y TRIGGERS

ASERCIONES TRIGGERS

En SQL podemos especificar restricciones generales mediante aserciones declarativas utilizando la sentencia

Create Assertion del DDL.

El nombre de la restricción se puede utilizar más tarde para referirse a dicha restricción o para modificarla o eliminarla. El

DBMS es responsable de garantizar que no se viole la condición.

Un trigger especifica un evento, una condición y una acción. La acción se ejecuta automáticamente si se satisface la condición

cuando se produce el evento.

Por ejemplo puede ser útil especificar una condición, que en caso de ser violada informe al usuario de alguna forma. La condición se

utiliza para monitorizar la base de datos.

En lugar de ofrecer al usuario la opción de abortar una operación que provoca una violación, el DBMS debe contar con otras

opciones

La técnica básica para escribir estas aserciones consiste en especificar una consulta que seleccionan las tuplas que violan

la condición deseada.

Page 29: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

VISTAS EN SQL

ESPECIFICACIONES

IMPLEMENTACIÓN

CARACTERÍSTICAS ADICIONALES

SQL dispone de varias técnicas diferentes para escribir programas en distintos lenguajes de programación en los que se pueden incluir sentencias de SQL para acceder a una o más

bases de datos.

En SQL se utiliza el comando Create View para especificar una vista, asignándole un nombre de tabla o nombre de vista, una lista de nombres de atributos y una consulta que sirve para

especificar el contenido de una vista.

Si ninguno de los atributos de la vista resulta de aplicar funciones u operaciones aritméticas, no tenemos que

especificar nombres de atributos para la vista, pues serían idénticos a los de las tablas de definición.

Una vista siempre está actualizada y no se materializa al definirla, sino al especificar una consulta en la vista y todo ello

depende del DBMS.

La implementación de la vista puede darse bajo dos métodos: la modificación de consulta y la materialización de la vista.

Una vista con una sola tabla de definición es actualizable si los atributos de la vista contienen la

clave principal de la relación base.

SQL y las bases de datos relacionales pueden interactuar con las nuevas tecnologías como XML.

Page 30: Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)

RESUMEN GENERAL

Hemos presentado el lenguaje de base de datos SQL Y hemos visto la implementación de sus

variaciones en muchos DBMSs.

SQL está diseñado como un lenguaje global que incluye sentencias para la definición de datos, consultas, actualizaciones, especificaciones de

restricciones y definición de vista.

Utilizamos la notación BNF, según la cual los símbolos obligatorios se escriben entre corchetes

angulares, las partes opcionales se muestran entre corchetes, las repeticiones entre llaves y las

alternativas entre paréntesis.