VISTAS
Las
vistas se pueden definir como tablas virtuales basadas en una o más tablas
o vistas y cuyos contenidos vienen definidos por una consulta sobre las mismas.
Esta tabla virtual o consulta se le asigna un nombre y se almacena
permanentemente en la BD, generando al igual que en las tablas una entrada en
el diccionario de datos. Las vistas permiten que diferentes usuarios vean la BD
desde diferentes perspectivas, así como restringir el acceso a los datos de
modo que diferentes usuarios accedan sólo aciertas filas o columnas de una
tabla. Desde el punto de vista del usuario, la vista es como una tabla real con
filas y columnas, pero a diferencia de esta, sus datos no se almacenan
físicamente en la BD. Las filas y columnas de datos visibles a través de la
vista son los resultados producidos por la consulta que define la vista.
CREACION DE VISTAS:
La cláusula CREATE VIEW permite la creación de vistas. La
cláusula asigna un nombre a la vista y permite especificar la consulta que la
define. Su sintaxis es: CREATE VIEW id vista [(columna,…)]AS especificación consulta;
Opcionalmente se puede asignar un nombre a cada columna de la vista. Si se
especifica, la lista de nombres de las columnas debe de tener el mismo número
de elementos que el número de columnas producidas por la consulta. Si se omiten,
cada columna de la vista adopta el nombre de la columna correspondiente en
la consulta. Existen dos casos en losque es obligatoria la especificación de la
lista de columnas:
1 – Cuando la consulta incluye columnas calculadas
2 – Cuando la consulta produce nombres idénticos.Según
el propósito con el que se organizan las vistas, pueden clasificarse en
lossiguientes tipos:
Horizontales o por Restricción
Son las que restringen el acceso de un usuario a únicamente
un conjunto de filas de unatabla.
EJEMPLO: Si se desea que un director de ventas vea sólo las
filas de la tabla
RVENTAS, correspondientes a los vendedores de su región, se
debería de definir una vista para cada región.
CREATE VIEW repEste
AS
SELECT *
FROM RVENTAS
WHERE oficina IN (SELECT n_oficina FROM OFICINASWHERE region
= ‘Este’);
Las vistas horizontales son adecuadas cuando la tabla
sobre la que se definen contienedatos que relacionan a varias
organizaciones o usuarios, proporcionando una “tabla privada” para cada
usuario compuesta únicamente de las filas necesarias para ese usuario en
concreto.
OTRO EJEMPLO:
1. Definir una vista para el empleado nº 102 que
contenga solo los pedidos emitidos, por los clientes asignados
al mismo.
CREATE VIEW emplCientodos AS
SELECT *
FROM PEDIDOS
WHERE clie IN (SELECT num_clie
FROM CLIENTESWHERE rep_clie = 102);
Verticales o por proyección
Son aquellas que restringen el acceso de un usuario sólo a
ciertas columnas de una tabla.
EJEMPLO:
El departamento de procesamiento de pedidos necesita acceso
únicamente al número de empleado, nombre y oficina asignada al mismo para
procesar los pedidos. Crear una vista que muestre esta información.
CREATE VIEW infoPedidos AS
SELECT num_empl, r_oficina
FROM RVENTAS;
El uso de estas vistas es aconsejable cuando los datos de la
tabla son compartidos también por varios usuarios diferentes. La diferencia
está en que ahora solo necesitamos parte de los campos, no todos.
SQL> CREATE VIEW PedidosDetallados AS
SQL> CREATE VIEW UnidadesPorPedido
2 SELECT pedido_id, SUM(cantidad) as
"productos por pedido"
3 FROM detalles_del_pedido
4 GROUP BY pedido_id;
Vista creada.
SQL>
CREATE VIEW Categorias
2 As Select nombre_categoria,descripcion_categoria
3 From Categorias
4 where Id_categoria>1;
2 As Select nombre_categoria,descripcion_categoria
3 From Categorias
4 where Id_categoria>1;
Vista creada.
SQL>
CREATE VIEW empleado
2 As Select nombre_empleado,apellido_empleado,puesto_empleado
3 From Empleado
4 Where Id_empleado<3;
2 As Select nombre_empleado,apellido_empleado,puesto_empleado
3 From Empleado
4 Where Id_empleado<3;
Vista creada.
2 SELECT d.*,p.nombre_producto,p.nombre_latin
,c.*
3 FROM productos p
4 JOIN detalles_del_pedido d ON
p.codigo_producto=d.producto_id
5 JOIN categorias c ON
c.nombre_categoria=p.categoria;
Vista creada.
SQL>
CREATE VIEW Pedidos
2 As Select nombre_destinatario,pais_destino
3 From Pedidos
4 Where Id_pedido>0;
2 As Select nombre_destinatario,pais_destino
3 From Pedidos
4 Where Id_pedido>0;
Vista creada.
No hay comentarios:
Publicar un comentario