domingo, 26 de junio de 2011

CREACION DE VISTA Y EJEMPLOS

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 los que 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 los
siguientes tipos:

a)   Horizontales o por Restricción

Son las que restringen el acceso de un usuario a únicamente un conjunto de filas de una
tabla.

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 r_oficina IN (SELECT n_oficina
FROM OFICINAS
WHERE region = ‘Este’);
Las vistas horizontales son adecuadas cuando la tabla sobre la que se definen contiene datos 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 CLIENTES
WHERE rep_clie = 102);

     2. Definir una vista, que muestre únicamente clientes que tienen más de 30000 € en pedidos registrados actualmente.

CREATE VIEW clienTresmil AS
SELECT *
FROM CLIENTES
WHERE 30000 < (SELECT SUM (importe)
FROM PEDIDOS
WHERE num_clie = clie);


2.   Crear una vista para el Banco Atlántico, que le permita ver la lista de usuarios que  pagan en él.

CREATE VIEW vistaUsuariosAtlantico AS
SELECT *
FROM USUARIOS
WHERE codigo_banco IN (SELECT ent_suc
FROM BANCOS
WHERE nombre = ‘ATLANTICO’);

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

OTRO EJEMPLO:

3.   Definir una vista de la tabla oficinas, para el personal del procesamiento de pedidos que incluya la ciudad, el número de oficina y la región.

CREATE VIEW personalPedidos AS
SELECT ciudad, n_oficina, region
FROM OFICINAS;

4.   En la tabla clientes, para el mismo departamento, que incluya el nombre de los clientes y la asignación de los vendedores

CREATE VIEW vistaClien AS
SELECT rep_clie
FROM CLIENTES;


5.   Vista sobre la tabla de usuarios para el Dpto. de Contabilidad, en el que se incluyan solamente el DNI, el código de banco y paga banco.

CREATE VIEW vistaUser AS
SELECT DNI, codigo_banco, paga_banco
FROM USUARIOS;
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

VISTAS

Adopta el nombre de la columna correspondiente en la consulta. Existen dos casos en los que 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 los siguientes tipos:

a)   Horizontales o por Restricción

Son las que restringen el acceso de un usuario a únicamente un conjunto de filas de una tabla.

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 r_oficina IN (SELECT n_oficina
FROM OFICINAS
WHERE region = ‘Este’);

Las vistas horizontales son adecuadas cuando la tabla sobre la que se definen contiene datos 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 CLIENTES
WHERE rep_clie = 102);

2. Definir una vista, que muestre únicamente clientes que tienen más de 30000 € en
pedidos registrados actualmente.

CREATE VIEW clienTresmil AS
SELECT *
FROM CLIENTES
WHERE 30000 < (SELECT SUM (importe)
FROM PEDIDOS
WHERE num_clie = clie);

3. Crear una vista para el Banco Atlántico, que le permita ver la lista de usuarios que
pagan en él.
CREATE VIEW vistaUsuariosAtlantico AS
SELECT *
FROM USUARIOS
WHERE codigo_banco IN (SELECT ent_suc
FROM BANCOS
WHERE nombre = ‘ATLANTICO’);

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

No hay comentarios:

Publicar un comentario