Vous êtes sur la page 1sur 6

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).
1

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.
2

2.6.3.- Vistas en SQL.


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: 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.
3

2.6.3.- Vistas en SQL.


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: 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];
4

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:

2.6.3.- Vistas en SQL (Vistas Actualizables).


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

El Check Option impide que yo pueda aadir cocineros que no sean franceses Obtn una vista con la edad media de los cocineros agrupados por pas:

2.6.3.- Vistas en SQL (Vistas Actualizables).

2.6.3.- Vistas en SQL (Vistas Actualizables).


Vista sobre una concatenacin de relaciones:

Vista sobre una tabla bsica:


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

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).


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

2.7.1.- Concepto de disparador.

Son reglas que especifican acciones que son activadas automticamente por determinados eventos.

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?


9 10

2.7.2.- Reglas Evento-Condicin-Accin.


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:

2.7.3.- Aplicaciones de los disparadores.


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

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.
11

12

2.7.4.- Disparadores en SQL.


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.


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]

13

14

2.7.4.- Disparadores en SQL.


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
15

2.7.4.- Disparadores en SQL.


FOR EACH STATEMENT La regla se ejecuta una vez antes de la ejecucin de la operacin de actualizacin FOR EACH ROW La regla se ejecuta una vez antes de actualizacin de cada tupla afectada por la operacin de actualizacin

BEFORE

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

16

2.7.4.- Disparadores en SQL.


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.


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

17

18

2.7.4.- Disparadores en SQL.


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 (Ejemplo).


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?

19

20

2.7.4.- Disparadores en SQL (Ejemplo).


Detectar qu eventos pueden afectar a la R.I.: TABLA, Suministro, Suministro, Pieza, OPERACIN, Borrado, Modificacin, Insercin, ATRIBUTO cdigo -

2.7.4.- Disparadores en SQL (Ejemplo).


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;

Construir Triggers para controlar estos eventos.

21

22

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.

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)
23 24