Vistas - Facultad de Ciencias Exactas

Anuncio
Bases de Datos I
Cursada 2008
Clase 6: Vistas
Facultad de Ciencias Exactas
Universidad Nac. Centro de la Pcia. de Bs. As.
BASES DE DATOS I
Vistas
Una relación que está realmente almacenada en la
BD Tabla base (o básica)
Una vista es una tabla virtual relación que es
definida en términos de otras tablas y/o vistas.
Es un elemento del esquema de la BD (catálogo)
Es parte del esquema externo (arquitectura
estándar)
Puede ser accedida mediante consultas al igual que
cualquier otra tabla.
Habitualmente no materializada las tuplas de
una vista se calculan cuando el usuario hace una
consulta sobre ella.
BASES DE DATOS I
Vistas
Definición:
CREATE VIEW nombre_vista [n_col1, …, n_coln]
AS expresión_tabla
[WITH [CASCADED |LOCAL ] CHECK OPTION]
Donde,
nombre_vista: nombre de la vista
[nom_col1 ,....]: nombres de columna de la vista
expresión_tabla: consulta que define la relación
derivada (SELECT)
WITH CHECK OPTION: impide que se realice una
actualización sobre la vista que viole su definición.
1
BASES DE DATOS I
Vistas
DROP VIEW nombre_vista <opción>
permite eliminar una vista del esquema de la BD.
<opción>
Cascade: se elimina cualquier definición de
vista o restricción a la que haga referencia
Restrict: se aborta si hay objetos del esquema
que la mencionan.
BASES DE DATOS I
Ventajas de las Vistas
o Simplifica la percepción que los usuarios tienen de
la base de datos presenta la información
necesaria y oculta el resto
o Facilitan la independencia de los datos
o Define consultas frecuentes para no especificarlas
cada vez que se utilizan.
o Presenta diferentes datos a diferentes usuarios,
aún cuando los estén compartiendo importante cuando usuarios con diferentes
intereses y diferente destreza manejan la misma
base de datos.
BASES DE DATOS I
Desventajas de las Vistas
o Actualizaciones VISTA Tabla BASE restringidas
o Restricciones estructurales la estructura de una vista
se determina en el momento de su creación. Si los
componentes cambian, éstos no son considerados.
o El estándar impone restricciones sobre la creación y
utilización de vistas, por ejemplo: una vista agrupada no
puede ser combinada con otras tablas o vistas para formar
una nueva vista.
o Rendimiento: el proceso de resolución de la vista puede
exigir el acceso a múltiples tablas cada vez que se accede
a ella ⇒ recursos de procesamiento adicionales!! técnicas alternativas de mantenimiento de vistas
2
BASES DE DATOS I
Aplicaciones de Vistas
Definición de esquemas externos
Definición de vistas parciales del esquema lógico
de la BD para distintos grupos de usuarios
Preparación de consultas
Definir y almacenar en la BD consultas complejas
que son utilizadas frecuentemente
Aplicar políticas de seguridad (privacidad) de los
datos
BASES DE DATOS I
Aplicaciones de Vistas: Seguridad
Definiendo diferentes vistas y otorgando privilegios
selectivamente sobre ellas, puede restringirse el
acceso de los usuarios a ciertos subconjuntos de
datos:
o Vistas sobre determinadas columnas, ocultando
otras reservadas para usuarios específicos por ej.
Antecedentes penales.
o Vistas sobre determinadas filas, ocultando otras
reservadas para usuarios específicos por ej.
Películas no aptas para el público infantil.
BASES DE DATOS I
Aplicaciones de Vistas: Seguridad
(cont.)
o Vistas sobre determinadas columnas y filas,
ocultando otras filas y columnas reservadas para
usuarios específicos.
o Se pueden definir vistas sobre conjuntos de tablas
(ensambles), seleccionando luego filas y columnas.
o Se puede restringir el acceso a subconjuntos de otra
vista o combinaciones de vistas y tablas básicas.
3
BASES DE DATOS I
Seguridad: Autorización en SQL usando Vistas
GRANT access
ON view
TO user_list
GRANT SELECT ON Clientes TO Pedro
Las vistas pueden ser usadas para simular el control
de accesos a columnas individuales de una tabla.
BASES DE DATOS I
Aplicaciones de Vistas: Seguridad
Ejemplo: Definición de un esquema externo para el departamento DCyS
sobre la BD de docentes:
CREATE VIEW Asignaturas_DCyS AS
SELECT IdAsig, nombre, cuatrim, teo, prac FROM Asignatura
WHERE dep=‘DCyS’
CREATE VIEW Profesor_DCyS AS
SELECT Nro_Leg, nombre, TE, categ FROM Profesor
WHERE dep=‘DCyS’
CREATE VIEW Docencia_DCyS AS
SELECT Nro_leg, IdAsig, teo, prac FROM Docencia
WHERE Nro_leg IN (SELECT Nro_leg FROM Profesor WHERE dep=‘DCyS’)
Privacidad: Los usuarios de cada Depto sólo tendrían autorización para
consultar el esquema externo correspondiente a su departamento
).
BASES DE DATOS I
Ventajas de las Vistas: Indep. de los Datos
o Pueden ocultar a los usuarios cambios de estructura en las tablas
reales, si no son necesarios para sus aplicaciones.
EJEMPLO: La tabla ALUMNOS se divide en dos: una para los datos
personales ALUMNO_PERS y otra para los académicos ALUMNO_ACAD.
La original puede ser obtenida mediante una vista que sea el ensamble
de las nuevas puede llamarse ALUMNOS.
Cualquier pieza de código que antes se refería a la tabla ALUMNOS,
ahora se refiere a la vista ALUMNOS !! y los usuarios no notan la
diferencia !!
PERO …. La independencia es sólo parcial
la tabla ALUMNOS puede ser actualizada … pero la vista ALUMNOS,
en general NO !!
4
BASES DE DATOS I
Creación de Vistas
CREATE VIEW Pericos AS
Una vista es equivalente a
una consulta que ha sido
‘guardada’ Eficiencia: sólo se accede a
los componentes y se
genera una vez
El SELECT que la genera
puede tener cualquier
complejidad
La vista puede ser usada
en cualquier otro SELECT
SELECT *
FROM Animal
WHERE (Category = ‘loro’) AND
(Color = ‘verde’) AND (habla = ‘si’);
SELECT Avg(Precio), max(Precio)
FROM Pericos
WHERE (Tamano LIKE “%mediano%”);
BASES DE DATOS I
Vistas: otros ejemplos
Puede ser obtenida a partir de varias tablas y/o
vistas:
CREATE VIEW Mascotas AS
SELECT P.Nombre, P.Precio, V.FechaVenta,
V.IdTienda
FROM Pericos P, Ventas V
WHERE P.IdAnimal = V.IdAnimal;
BASES DE DATOS I
Consultas sobre Vistas
CREATE VIEW Clientes AS
(SELECT nombre-sucursal, nombre-clte
FROM Depositante, CtaCte
WHERE Depositante.NroCuenta = CtaCte.NroCuenta)
UNION
(SELECT nombre-sucursal, nombre-clte
FROM Deudor, Prestamo
WHERE Deudor.NroDeudor = Prestamo.NroDeudor)
Obtener los clientes de la sucursal ‘Centro’
SELECT nomre-clte
FROM Clientes WHERE nombre-sucursal = ‘Centro’
5
BASES DE DATOS I
Acceso a una Vista
Puede ser consultada como cualquier tabla base
Pero hay limitaciones (muchas!!) para actualizar vistas dificultad para propagar las actualizaciones en cascada
hacia los componentes.
Acceso a los datos necesariamente debe limitarse:
Usuarios deben identificarse sistema de
autenticación (passwords)
Cada usuario tiene limitaciones para manipular los
datos – autorización
SQL provee herramientas de autorización pero no de
autenticación (propietarias de cada sistema)
BASES DE DATOS I
Procesamiento de las Vistas
El DBMS interpreta cada consulta como si la
vista fuese una tabla base.
Los DBMS típicos traducen la consulta en un
lenguaje del estilo del álgebra relacional (de
bolsas).
Las vistas usadas por la consulta son
reemplazadas por su equivalente algebraico, y
empalmadas en el árbol generado por la
estructura de la consulta (este proceso puede
afectar el rendimiento, recordar desventajas)
BASES DE DATOS I
Ejemplo: Expansión (o resolución) de la Vista
PROYNombre
SELECTIdTienda=15
CREATE VIEW Mascotas AS
SELECT P.Nombre, P.Precio,
V.FechaVenta, V.IdTienda
FROM Pericos P, Ventas V
WHERE P.IdAnimal = V.IdAnimal;
Mascotas
PROYNombre, Precio, FechaVenta, IdTienda
SELECT Nombre FROM Mascotas
WHERE IdTienda = 15;
JOIN
Pericos
Ventas
6
BASES DE DATOS I
Vistas: Optimización de la Consulta
El DBMS “optimiza” la consulta
transformando la
expresión algebraica en
una que pueda ejecutarse
más rápido:
1.
2.
Desplazar las selecciones
hacia las hojas…
Eliminar proyecciones
innecesarias…
Nombre
IdTienda
Pericos
15
Ventas
La mayoría de las
tuplas son
eliminadas de
Ventas antes del
join (costoso).
BASES DE DATOS I
Diseño orientado a las prestaciones
Fuente: Curso Diseño y Optimización de Bases de Datos. Depto. O.E.I. UPM
Recurso que aconseja utilizar técnicas que buscan
mejorar las prestaciones de un DBMS en la resolución de
consultas, en la fase de diseño.
Principales estrategias:
o Particionamiento.
o Desnormalización.
Se incrementa la Redundancia de datos Efectos
indeseados en actualizaciones y borrados realizar
procesos extra para mantenimiento de la consistencia de la
información.
NO ABUSAR DE ESTE RECURSO !!!!
BASES DE DATOS I
Diseño orientado a las prestaciones
Se basa en las consideraciones siguientes:
o La
tasa de
recuperaciones.
actualizaciones
con
respecto
a
o Las veces que se accede conjuntamente a los
atributos.
o El tamaño de los atributos.
o El tipo de proceso (Batch/On Line).
o La prioridad de los procesos.
o El tamaño de las tablas.
o Otros …
7
BASES DE DATOS I
Diseño orientado a las prestaciones
Desnormalización: Conjunto de técnicas empleadas
en el diseño de BD para mejorar el rendimiento de
las consultas, creando redundancia de datos.
o Es dependiente del proceso de consulta a mejorar
disminución de la independencia entre procesos y
datos Si cambia la consulta: el diseño debe ser
revisado y adaptado si es necesario
o No debe aplicarse sin un estudio previo muy
detallado.
BASES DE DATOS I
Diseño orientado a las prestaciones
Hay cuatro técnicas de desnormalización:
o Duplicación de Datos.
o Derivación de Datos.
o Claves Subrogadas.
o Vector de Datos.
o … y una adicional (sobrenormalización) Partición de Tablas.
BASES DE DATOS I
Diseño orientado a las prestaciones
Duplicación de Datos: Introducción de atributos
individuales de forma redundante con objeto de
reducir el número de tuplas que deben ser
revisadas en una consulta.
EJEMPLO: En un esquema de BD dos tablas,
CLIENTES y sus correspondientes PEDIDOS.
Se desea mejorar el tiempo de respuesta de una
consulta de pedidos donde deben aparecer los
correspondientes nombres de los clientes.
8
BASES DE DATOS I
Diseño orientado a las prestaciones
Recuperar el Nombre del cliente para emitir los
pedidos exige un acceso adicional al archivo Cliente.
Esto puede mejorarse mediante la inserción del
atributo Nombre en la tabla PEDIDO.
BASES DE DATOS I
Diseño orientado a las prestaciones
Derivación de Datos: Creación de columnas para
almacenar datos derivados de cálculos reduce el
número de tuplas accedidas al realizar un cálculo en
una consulta.
EJEMPLO: esquema de BD con tres tablas:
PRODUCTOS, CLIENTES y PEDIDOS.
Se desea mejorar tiempo de respuesta de una
consulta de facturación de clientes.
BASES DE DATOS I
Diseño orientado a las prestaciones
El acceso a disco para recuperar totales cliente
puede eliminarse insertando los atributos
Tot_Productosy Facturación en la tabla CLIENTE.
9
BASES DE DATOS I
Diseño orientado a las prestaciones
Claves Subrogantes: Reemplazo de la clave primaria
original en caso de que ésta sea grande o de
procesamiento computacionalmente complejo, por
una clave artificial.
EJEMPLO: En un esquema de BD de publicaciones con
un encadenamiento de entidades débiles, la clave
primaria para cada una de ellas incluye la clave
primaria de sus antecesoras.
La recuperación de tuplas puede verse dificultada por
el tamaño de la clave.
BASES DE DATOS I
Diseño orientado a las prestaciones
BASES DE DATOS I
Diseño orientado a las prestaciones
Vectorización de Datos: La vectorización de un
atributo multivaluado, generando un atributo para
cada uno de los elementos (despliegue horizontal).
EJEMPLO: En un esquema de BD con dos tablas:
SOCIOS y PAGOS mensuales a lo largo de un año
Queremos obtener la información de cada uno de
ellos con las cantidades correspondientes.
10
BASES DE DATOS I
Diseño orientado a las prestaciones
BASES DE DATOS I
Diseño orientado a las prestaciones
Partición de Tablas: Técnica utilizada para mejorar
tiempos de respuesta de consultas. Consiste en la
división de una relación en dos o más, atendiendo
a diferentes criterios obtenidos a partir del análisis
de prestaciones que debe dar la BD.
o Existen dos técnicas diferentes:
oPartición Horizontal.
oPartición Vertical.
BASES DE DATOS I
Diseño orientado a las prestaciones
Partición Horizontal: Consiste en reducir el número de
tuplas de relaciones sobre las que se realizan
consultas procura disminuir la cardinalidad de cada
relación resultado de la partición.
o Se basa en las operaciones de álgebra relacional
selección y unión resultan relaciones unióncompatibles respecto de la relación inicial.
o La estrategia de acceso en estos casos se basa en
técnicas de SQL dinámico (el patrón de acceso a la
base de datos se conoce en tiempo de ejecución).
11
BASES DE DATOS I
Diseño orientado a las prestaciones
Partición Vertical: Consiste en reducir el número
de atributos de las relaciones sobre las que se
realizan las consultas procura disminuir el
grado de cada relación resultante.
o Se basa en la operación de proyección del
álgebra relacional resultan relaciones que
deben mantener la clave primaria de relación
original.
BASES DE DATOS I
Actualización de Vistas
Las vistas reciben las actualizaciones provenientes
de sus componentes:
Tabla Básica Vista
Si las vistas son actualizables deben propagar las
actualizaciones a las tablas básicas:
Vista
Tabla Básica
BASES DE DATOS I
Actualización de Vistas
Actualización datos de la BD las vistas deben ser
actualizadas.
. Recálculo
. Mantenimiento Incremental: computa y aplica
sólo los cambios incrementales a las vistas
o
o Modificación de vistas problemas inherentes de
ambigüedad.
o Suprimir una tupla en una vista ‘borrarla de la
tabla básica’ ? o ‘actualizar alguna columna para que
ya no sea seleccionada para la vista’?
12
BASES DE DATOS I
Actualización de Vistas
(cont.)
o Insertar una fila en una vista ‘insertar una
tupla en la tabla base’? o ‘actualizar una tupla
existente para que ahora pueda ser seleccionada
para la vista’?
o Actualizar una tupla en una vista que involucra
join puede cambiar la semántica de otras columnas
que no son proyectadas por la vista.
BASES DE DATOS I
Actualización de Vistas
Las vistas no mantienen COPIAS de los datos cuando se modifica una vista, se están modificando
las tablas base.
Cuándo es posible sin ambigüedades?
o No afecta más de una tabla.
o Si la vista deriva de más de una tabla, pero la
actualización afecta sólo a una.
BASES DE DATOS I
Actualización de Vistas
(cont.)
o Si no afecta una columna que contiene
información derivada.
o Si no causa error afectando tablas que no tienen
valores por defecto definidos o que no aceptan
nulos para alguna columna.
o Se verifica si WITH CHECK OPTION ha sido
especificado.
13
BASES DE DATOS I
Vistas actualizables: en síntesis
Vista sobre una tabla básica:
• el sistema traducirá la actualización sobre la
vista en una operación de actualización sobre
la relación básica
siempre que no se viole ninguna restricción
de integridad definida sobre dicha relación
BASES DE DATOS I
Vistas actualizables: en síntesis
Vista sobre una concatenación de relaciones:
• la actualización sólo puede modificar UNA de las
tablas básicas
• la actualización modificará la relación básica que
cumpla la propiedad de conservación de la clave (‘Key
preserved’, aquella relación tal que su clave primaria
podría ser también clave de la vista)
• la actualización no se realizará si viola alguna de las
restricciones definidas sobre la relación básica que se
va a actualizar
BASES DE DATOS I
Vistas Actualizables de una tabla básica
Una vista obtenida a partir de una única tabla
básica es actualizable si
conserva una clave (primaria o alternativa)
no contiene funciones de agregación
no incluye DISTINCT
No incluye subconsultas en el SELECT
Únicas aceptadas por SQL:1992
Se denominan vistas π - σ (vistas PS)
14
BASES DE DATOS I
Vistas Actualizables de una tabla básica
Vista obtenida a partir de varias tablas básicas es
actualizable si
la actualización altera la tabla correspondiente
a la Key Preserved
Manifiestos para SQL:1999 y versiones
posteriores incluir otras operaciones, por ej.
intersección
Se denominan vistas π - σ - (vistas PSJ)
BASES DE DATOS I
Vistas Actualizables
FacturaxCompra(IDFact, IDProd, Cant)
121
121
122
VISTA 57
82
57
Prod(IDProd, Descripcion)
3
2
1
57
82
59
Alim Gatos
Alim Peces
Alim Perros
LineaFact(IDFact, Prod.IDProd, Descripcion, Cantidad)
121
121
122
57
82
57
32
Alim Gatos
Alim Peces
Alim Gatos
3
2
1
Si se intenta modificar Prod.IDProd en la vista, se cambia
la PK de la tabla Prod ésto no agregará una nueva fila
en FacturaxCompra, que pasa con la primera tupla de
FacturaxCompra?
BASES DE DATOS I
Actualización de Vistas
Cuando se inserta o actualiza una tupla en una tabla base,
puede ocurrir que esta tupla ya no pertenezca a la vista.
Ejemplo:
CREATE VIEW alumnos_Tandil AS ( SELECT * FROM
Alumnos WHERE ciudad=‘Tandil’ )
Si se hace
UPDATE alumnos_Tandil SET ciudad=‘Rauch‘
Todos los registros de la vista son actualizados con un valor
diferente de ciudad y dejan de pertenecer a la vista.
15
BASES DE DATOS I
Vistas Actualizables
Esto es legal, pero este efecto puede propagar errores
inadvertidos por el usuario.
Solución WITH CHECK OPTION en la creación de la vista.
CREATE VIEW alumnos_Tandil AS ( SELECT * FROM
Alumnos WHERE ciudad=‘Tandil’ ) WITH CHECK OPTION
Cualquier inserción o actualización que haga ‘migrar’ una
tupla de la vista ≡ la tupla ya no satisface la condición del
query que define la vista
error en tiempo de ejecución rechaza la operación
BASES DE DATOS I
Vistas Actualizables: With Check Option
Cláusula necesaria para vistas actualizables.
Todos los INSERT y UPDATE sobre la vista serán
verificados para asegurar que los datos
satisfacen la definición de la vista si no es así
: Rollback.
LOCAL
Chequea la integridad de la vista corriente.
CASCADE (opción por defecto)
Chequea la integridad en la vista corriente y en
toda otra dependiente de ella.
BASES DE DATOS I
Modificación de Vistas vía Triggers
Se puede “interceptar” una modificación a una
vista mediante un trigger instead-of opción
especial para vistas (recordar que los triggers se
definen sobre tablas !!)
Triggers INSTEAD OF proveen una manera
transparente para actualizar vistas que no pueden
ser modificadas directamente vía las sentencias
SQL DML.
16
BASES DE DATOS I
Modificación de Vistas vía Triggers
El trigger INSTEAD OF se dispara en lugar
de ejecutar la sentencia disparadora el
trigger ejecuta UPDATE, INSERT, o DELETE
directamente sobre las tablas subyacentes,
en forma invisible para el usuario.
Por defecto, triggers INSTEAD OF se activan
‘for each row’.
BASES DE DATOS I
Modificación de Vistas vía Triggers: Ejemplo
CREATE VIEW info_supervisor AS
SELECT E.nombre,E.Nro_estud,E.Id_superv,P.id_oficina
FROM Estudiante E, Profesor P
WHERE E.Id_superv = P.legajo;
CREATE TRIGGER insert_info_supervisor
INSTEAD OF INSERT ON info_supervisor
REFERENCING NEW AS n – nuevo supervisor
FOR EACH ROW
BEGIN
IF NOT EXISTS (SELECT * FROM Estudiante E WHERE E.Nro_estud =
n.Nro_estud)
THEN INSERT INTO Estudiante(Nro_estud,nombre,supervisor)
VALUES(n.Nro_estud, n.nombre, n.Id_superv);
ELSE UPDATE Estudiante SET Estudiante.Id_superv = n.Id_superv
WHERE Estudiante.Nro_estud = n.Nro_estud;
END IF;
IF NOT EXISTS (SELECT * FROM Profesor P WHERE P.legajo= n.Id_superv)
THEN INSERT INTO Profesor VALUES(n.Id_superv, n.id_oficina);
ELSE UPDATE Profesor SET Profesor.id_oficina = n.id_oficina WHERE
Profesor.legajo = n.id_superv;
Pueden plantearse triggers similares para las
END IF;
operaciones de UPDATE y DELETE.
END;
BASES DE DATOS I
Vistas Materializables
Una vista puede ser materializada su contenido puede ser
precomputado y almacenado por el DBMS
Características:
Cuestiones de performance en la elaboración de la consulta
Confiabilidad
Mantenimiento de vistas
cómo mantener consistencia entre las tablas de la BD y
los resultados materializados?
Actualización por regeneración o incremental?
Implementación de triggers para realizar estas funciones
o programas o soporte por el DBMS.
Selección cuáles conviene materializar?
Obtener resultados de consultas usando vistas reescritura
de consultas para utilizar los resultados materializados.
17
BASES DE DATOS I
Vistas Materializables: Actualización Incremental
Los cambios a una tabla o derivados se denomina: diferencial
El conjunto de tuplas insertadas ∆R
El conjunto de tuplas borradas ∇R
El conjunto de tuplas modificadas puede obtenerse
considerando la baja de los estados viejos, y las altas de los
nuevos.
Las operaciones que representan altas y bajas
⊕ unión de conjuntos disjuntos
diferencia de conjuntos estrictamente incluidos uno en el otro
Rnueva = (Rvieja ∇R) ⊕ ∆R
Para las vistas Vnueva = (Vvieja ∇V) ⊕ ∆V
BASES DE DATOS I
Vistas Materializables: Actualización Incremental
Selección
σc(R S) ⇒ σc(R) σc(S)
σc(R ⊕ S) ⇒ σc(R) ⊕ σc(S)
Proyección
πL(R S) ⇒ πL(R) (πL(R) - πL(R - S))
πL(R ⊕ S) ⇒ πL(R) ⊕ (πL(S) - πL(R))
Producto Cartesiano
(R S) X T ⇒ (R X T) (S X T)
(R ⊕ S) X T ⇒ (R X T) ⊕ (S X T)
BASES DE DATOS I
Vistas Materializables: Actualización Incremental
Unión
(R S) T ⇒ (R T) (S - T)
(R ⊕ S) T ⇒ (R T) ⊕ (S - T)
Intersección
(R S) T ⇒ (R T) (S T)
(R ⊕ S) T ⇒ (R T) ⊕ (S T)
Ensamble
(R S) T ⇒ (R T) (S T)
(R ⊕ S) T ⇒ (R T) ⊕ (S T)
18
BASES DE DATOS I
Vistas Materializables: Actualización Incremental
Diferencia
(R S) - T ⇒ (R - T) (S - T)
(R ⊕ S) - T ⇒ (R - T) ⊕ (S - T)
T - (R S) ⇒ (T - R) ⊕ (T S)
T - (R ⊕ S) ⇒ (T - R) (T S)
BASES DE DATOS I
Actualización de Vistas: consideraciones
Actualizar una vista (como si estuviera materializada)
debe resultar en la misma relación que si se
modificaran las tablas base aplicando una o más
actualizaciones acti y luego aplicando la definición de
la vista Actualizar(V(D)) = V(acti(D))
La actualización es una propiedad semántica las
vistas deberían ser actualizables independientemente
de su estructura
Simetría Si una vista resulta de la intersección de
tablas, la baja debe ser reflejada en ambas tablas,
aunque algebraicamente con una es suficiente
BASES DE DATOS I
Actualización de Vistas: consideraciones
Tener en cuenta acciones referenciales y la
activación de triggers asociados
Una actualización en una vista debería
transformarse en el mismo tipo de operación en las
tablas base
Las reglas de actualización no deben dar por
supuesto que las tablas están normalizadas
Considerar las modificaciones como una sucesión de
bajas + altas puede tener consecuencias
indeseables.
19
Descargar