Fundamentos de Sistemas de Base de Datos (Capítulo 7 y 8)
1. 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
2. Libro
Fundamentos de Sistemas de Bases de
Datos - 5ta Ed. - Elmasr
Lucio Karina, Ludeña Bryan y Melo Elena
CAPITULO 7
7.1 Diseño de una base de datos relacional utilizando el mapeado ER-a-
relacional
3. 7.1.1 Algoritmo de mapeado ER-a-relacional
Lucio Karina, Ludeña Bryan y Melo Elena
4. 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.
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.
5. 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.
6. Lucio Karina, Ludeña Bryan y Melo Elena
Paso 3: Mapeado de
los 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.
7. 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 ER
Figura 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.
8. Lucio Karina, Ludeña Bryan y Melo Elena
7.2 Mapeado de construcciones del modelo EER a las relaciones
7.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.
9. 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
10. 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
Lucio Karina, Ludeña Bryan y Melo Elena
CAPITULO 8
SQL-99: definición del esquema, restricciones, consultas y vistas
11. Lucio Karina, Ludeña Bryan y Melo Elena
8.1 Definición de datos y tipos de datos SQL
SQL 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 SQL
Un 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 SQL
El 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
12. 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
13. 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
14. 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.
15. 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.
16. 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 consultas
WHERE <condición> una expresión condicional (booleana) que identifica las tuplas que la consulta
recuperará
17. 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 realidad
SELECT Nombre, EMPLEADO. Nombre, Dirección
FROM EMPLEADO, DEPARTAMENTO
DEPARTAMENTO
WHERE Nombre='lnvestígación' AND
DEPARTAMENTO.NumeroDpto=EMPLEADO.Numer
oDpto;
18. 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;
19. 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
20. 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.
21. 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
22. 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.
23.
24. FUNCIONES AGREGADAS
EN 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úmero
de 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.
25. 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.
27. 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.
28. 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.
29. 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.
30. 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.