You are on page 1of 6

1

2.6.1.- Concepto de vista.


Una vista es una tabla derivada de otras tablas (bsicas o virtuales).
Una vista se caracteriza porque:
Se considera que forma parte del esquema externo.
Una vista es una tabla virtual (no tiene una correspondencia a
nivel fsico)
Se puede consultar como cualquier tabla bsica.
Las actualizaciones se transfieren a la/s tabla/s original/es
(con ciertas limitaciones).
2
2.6.2.- Aplicaciones de las vistas.
Para la especificacin de tablas con informacin que se accede con
frecuencia pero no posee existencia fsica:
Informacin derivada de la relacin entre varias tablas.
Informacin derivada de la formacin de grupos de tuplas (p.e. para
la obtencin de estadsticas).
En general: informacin derivada de consultas complejas a la que se
accede con frecuencia.
Como mecanismo de seguridad: creacin de vistas con, nicamente, los
atributos de las tablas a los cuales se desea permitir acceder a determinados
usuarios.
Para la creacin de esquemas externos.
3
La sintaxis para la creacin de vistas en SQL es la siguiente:
CREATE | REPLACE VIEW vista [(comalista_columna)]
AS expresin_tabla [with check option]
en donde:
2.6.3.- Vistas en SQL.
CREATE VIEW es la orden que permite la creacin de la vista.
vista es el nombre de la tabla virtual que se va a crear.
(comalista_columna) son los nombres de los atributos de la tabla y es opcional:
Si no se especifica, el nombre coincide con el nombre de los atributos
resultantes en expresin_tabla.
Es obligatorio si algn atributo de expresin_tabla es el resultado de una
funcin de agregacin o una operacin aritmtica.
4
La sintaxis para la creacin de vistas en SQL es la siguiente:
CREATE | REPLACE VIEW vista [(comalista_columna)]
AS expresin_tabla [with check option]
en donde:
2.6.3.- Vistas en SQL.
expresin_tabla es una consulta SQL cuyo resultado ser el contenido de la vista.
WITH CHECK OPTION es opcional y se debe incluir si se desea actualizar la
vista de una manera ntegra.
Para la eliminacin de una vista se utiliza la instruccin:
DROP VIEW vista [restrict | cascade];
5
2.6.3.- Vistas en SQL (Ejemplos).
Dada la siguiente relacin de una base de datos:
Cocinero(nombre:varchar, edad: number, pas:varchar)
Obtn una vista con, nicamente, los cocineros franceses:
Obtn una vista con la edad media de los cocineros agrupados por pas:
El Check Option impide que yo pueda aadir
cocineros que no sean franceses
Motivos por los que una vista NO es actualizable:
contiene operadores conjuntistas (UNION, INTERSECT,).
el operador DISTINCT
funciones agregadas (SUM, AVG, ..)
la clusula GROUP BY
2.6.3.- Vistas en SQL (Vistas Actualizables).
Vista sobre una tabla bsica:
el sistema traducir la actualizacin sobre la vista en una operacin de
actualizacin sobre la relacin bsica.
siempre que no se viole ninguna restriccin de integridad definida sobre
dicha relacin.
2.6.3.- Vistas en SQL (Vistas Actualizables).
Vista sobre una concatenacin de relaciones:
la actualizacin slo puede modificar una de las tablas bsicas
actualizacin modificar la relacin bsica que cumpla la propiedad de
conservacin de la clave (aquella relacin tal que su clave primaria podra ser
tambin clave de la vista)
la actualizacin no se realizar si viola alguna de las restricciones definidas
sobre la relacin bsica que se va a actualizar
2.6.3.- Vistas en SQL (Vistas Actualizables).
9
EJEMPLO:
Dadas las siguientes relaciones:
Persona(nif: dom_nif, nombre: dom_nom, edad: dom_edad)
CP:{nif}
Vivienda(cod_viv: dom_cod, nif: dom_nif, dir: dom_dir, num_hab: dom_num)
CP:{cod_viv} CAj:{nif} Persona
Dada la siguiente vista definida sobre dichas relaciones:
CREATE VIEW Todo_Vivienda AS
SELECT * FROM Persona NATURAL JOIN Vivienda
Podr modificar la direccin de una vivienda en Todo_Vivienda?
Podr modificar el nombre del propietario de una vivienda?
2.6.3.- Vistas en SQL (Vistas Actualizables).
10
2.7.1.- Concepto de disparador.
Son reglas que especifican acciones que son activadas
automticamente por determinados eventos.
11
Forma de una regla de actividad:
Evento - Condicin - Accin
accin que el sistema ejecuta cuando como respuesta a la ocurrencia de
un evento cuando cierta condicin se satisface:
evento: operacin de actualizacin
condicin: expresin lgica del SQL. Slo se ejecutar la accin si
esta condicin existe y es verdadera.
accin: procedimiento escrito en un lenguaje de programacin que
incluye instrucciones de manipulacin de la BD.
2.7.2.- Reglas Evento-Condicin-Accin.
12
Define el comportamiento activo del sistema. Aplicaciones:
comprobacin de restricciones de integridad
restauracin de la consistencia
definicin de reglas de funcionamiento de la organizacin
mantenimiento de informacin derivada
2.7.3.- Aplicaciones de los disparadores.
13
definicin_regla::=
{CREATE | REPLACE} TRIGGER nombre_regla
{BEFORE | AFTER | INSTEAD OF} evento [disyuncin_eventos]
ON {nombre_relacin | nombre_vista}
[ [REFERENCING OLD AS nombre_referencia
[NEW AS nombre_referencia] ]
[FOR EACH {ROW | STATEMENT} [WHEN ( condicin ) ] ]
bloque PL/SQL
disyuncin_eventos ::= OR evento [disyuncin_eventos]
evento ::= INSERT | DELETE | UPDATE [OF comalista_nombre_atributo]
2.7.4.- Disparadores en SQL.
14
EVENTOS
{BEFORE | AFTER | INSTEAD OF} evento [disyuncin_eventos]
ON {nombre_relacin | nombre_vista}
disyuncin_eventos ::= OR evento [disyuncin_eventos]
evento ::=
INSERT | DELETE | UPDATE [OF comalista_nombre_atributo]
2.7.4.- Disparadores en SQL.
15
EVENTOS
Parametrizacin de eventos:
los eventos de las reglas FOR EACH ROW estn parametrizados
pametrizacin implcita:
evento INSERT o DELETE: n (n grado de la relacin)
evento UPDATE: 2*n
nombre de parmetros:
evento INSERT: NEW
evento DELETE: OLD
evento UPDATE: OLD y NEW
se pueden usar en la condicin de la regla
se pueden usar en el bloque PL/SQL
2.7.4.- Disparadores en SQL.
16
BEFORE
FOR EACH STATEMENT FOR EACH ROW
La regla se ejecuta una vez antes de la
ejecucin de la operacin de
actualizacin
La regla se ejecuta una vez antes de
actualizacin de cada tupla afectada
por la operacin de actualizacin
AFTER
La regla se ejecuta una vez despus de
la ejecucin de la operacin de
actualizacin
La regla se ejecuta una vez despus
de actualizacin de cada tupla
afectada por la operacin de
actualizacin
2.7.4.- Disparadores en SQL.
17
CONDICIONES
WHEN (condicin)
expresin lgica de sintaxis similar a la condicin de la clusula WHERE de la
instruccin SELECT
no puede contener subconsultas ni funciones agregadas
slo se puede hacer referencia a los parmetros del evento
2.7.4.- Disparadores en SQL.
18
ACCIONES
bloque PL/SQL
bloque escrito en el lenguaje de programacin de Oracle PL/SQL
sentencias de manipulacin de la BD: INSERT, DELETE, UPDATE,
SELECT ... INTO ...
sentencias de programa: asignacin, seleccin, iteracin
sentencias de manejo de errores
sentencias de entrada/salida
2.7.4.- Disparadores en SQL.
19
Lenguaje de reglas:
Creacin: CREATE TRIGGER nombre_regla ...
Eliminacin: DROP TRIGGER nombre_reglas
Modificacin: REPLACE TRIGGER nombre_regla ...
Recompilacin: ALTER TRIGGER nombre_regla COMPILE
Des/Habilitar regla: ALTER TRIGGER nombre_regla [ENABLE | DISABLE]
Des/Habilitar todas las reglas sobre una relacin:
ALTER TABLE nombre_relacin [{ENABLE | DISABLE} ALL TRIGGERS]
2.7.4.- Disparadores en SQL.
20
La restriccin R2 :
R2) Px: Pieza, Sx: Suministro Px : Pieza (Sx : Suministro ( Sx.cdigo=Px.cdigo ) )
se define mediante una restriccin general:
create assertion R2 check
not exists(select * from Pieza P
where not exists(select *
from Suministro S
where P.cdigo=S.cdigo));
Cmo controlar la restriccin mediante reglas de actividad?
2.7.4.- Disparadores en SQL (Ejemplo).
21
Detectar qu eventos pueden afectar a la R.I.:
TABLA, OPERACIN, ATRIBUTO
Suministro, Borrado, -
Suministro, Modificacin, cdigo
Pieza, Insercin, -
Construir Triggers para controlar estos eventos.
2.7.4.- Disparadores en SQL (Ejemplo).
22
CREATE TRIGGER T2
AFTER INSERT ON Pieza
FOR EACH ROW
DECLARE N: NUMBER;
BEGIN
SELECT COUNT(*) INTO N
FROM Suministro S WHERE :new.codigo = S.codigo;
IF N=0 THEN
RAISE_APPLICATION_ERROR(-20000, No se puede
insertar una pieza, porque la pieza no tiene suministros.
Cree las dos tuplas (la de pieza y la de suministro)
dentro de una transaccin deshabilitando este trigger.);
END IF;
END;
2.7.4.- Disparadores en SQL (Ejemplo).
23
2.8.- Limitaciones del modelo relacional.
Los modelos de datos tradicionales (relacional, jerrquico y red) han tenido
xito en aplicaciones tradicionales de negocios.
Los modelos tradicionales presentan deficiencias en aplicaciones:
de diseo y fabricacin en ingeniera (CAD/CAM/CIM),
experimentos cientficos,
telecomunicaciones,
sistemas de informacin geogrfica, y
multimedia.
24
2.8.- Limitaciones del modelo relacional.
Requisitos y caractersticas de las nuevas aplicaciones:
estructuras ms complejas para los objetos,
transacciones de mayor duracin,
nuevos tipos de datos para almacenar imgenes o elementos de texto
grandes y
la necesidad de definir operaciones no estndar especficas para las
aplicaciones.
Evolucin de las bases de datos relacionales:
bases de datos deductivas,
bases de datos activas,
bases de datos orientadas a objetos y
bases de datos objeto-relacionales (SQL3)

You might also like