miércoles, 25 de abril de 2018

VISTAS




CARRERA PROFESIONAL DE  : Ingeniería de Sistemas y Telemática

ASIGNATURA                                : Laboratorio de programación III

ESTUDIANTE                                :
ü  CHUQUIZUTA RAMOS, Marleni
ü  HERRERA SILVA, Carlos Jhonatan
CICLO                                              : VII

GRUPO                                            : A



      I.        Tema: Vistas
1.    Contenido
v  Definición
Es una consulta que se presenta como una tabla (virtual) a partir de un conjunto de tablas en una base de datos relacional.
Son un mecanismo que permite generar un resultado a partir de un pedido (query) almacenado, y ejecutar nuevos pedidos sobre este resultado como si fuera una tabla normal.
Una vista de base de datos es un subconjunto de una base de datos y se basa en una consulta que se ejecuta en una o más tablas de base de datos. Las vistas de base de datos se guardan en la base de datos como consultas con nombre y se pueden utilizar para guardar consultas completas que se utilizan con frecuencia.

Hay dos tipos de vistas de base de datos:
ü  Las vistas dinámicas pueden contener datos de una o dos tablas e incluir automáticamente todas las columnas de la tabla o tablas especificadas. Las vistas dinámicas se pueden actualizar dinámicamente cuando se crean o modifican objetos relacionados u objetos ampliados.
ü  Las vistas estáticas pueden contener datos de varias tablas y las columnas necesarias de estas tablas se deben especificar en las cláusulas SELECT y WHERE de la vista estática. Las vistas dinámicas se pueden actualizar manualmente cuando se crean o modifican objetos relacionados u objetos ampliados.

v  Sintaxis

CREATE VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ]
[ WITH <view_attribute> [ ,...n ] ]
AS select_statement
[ WITH CHECK OPTION ] [ ; ]

<view_attribute> ::=
{
    [ ENCRYPTION ]
    [ SCHEMABINDING ]
    [ VIEW_METADATA ]     }

schema_name
Es el nombre del esquema al que pertenece la vista.

view_name
Es el nombre de la vista. Los nombres de las vistas deben cumplir las reglas de los identificadores. La especificación del nombre del propietario de la vista es opcional.

column
Es el nombre que se va a utilizar para una columna en una vista. Solo se necesita un nombre de columna cuando una columna proviene de una expresión aritmética, una función o una constante; cuando dos o más columnas puedan tener el mismo nombre, normalmente debido a una combinación; o cuando una columna de una vista recibe un nombre distinto al de la columna de la que proviene. Los nombres de columna se pueden asignar también en la instrucción SELECT.

select_statement
Es la instrucción SELECT que define la vista. Dicha instrucción puede utilizar más de una tabla y otras vistas. Se necesitan permisos adecuados para seleccionar los objetos a los que se hace referencia en la cláusula SELECT de la vista que se ha creado.

Una vista no tiene por qué ser un simple subconjunto de filas y de columnas de una tabla determinada. Es posible crear una vista que utilice más de una tabla u otras vistas mediante una cláusula SELECT de cualquier complejidad.

v  Administración de Vistas (Creación, Modificación y Eliminación)

Creación:
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.


B)   Verticales o por proyección
Son aquellas que restringen el acceso de un usuario sólo a ciertas columnas de una tabla.

C)   Subconjuntos fila / columna
Lo más habitual es crear vistas con parte de las filas y parte de las columnas de una tabla



D)   Agrupados
Son vistas que incluyen una cláusula GROUP BY en la consulta especificada. Estas vistas incluyen siempre una lista de nombres de columna.


E)   Compuestas
Son vistas creadas a partir de los datos de dos o más tablas. Presentan los datos como una única tabla virtual. Al igual que las anteriores se utilizan frecuentemente para facilitar el manejo de consultas complejas de uso frecuente en la base.


Modificación

Para que una vista se pueda actualizar debe existir una relación directa entre las filas y columnas de la vista y las de la tabla fuente. Según el estándar ANSI, se puede actualizar a través de las vistas si la consulta que la define, satisface las siguientes restricciones:

1ª - No especifica DISTINCT
2ª - FROM debe especificar una única tabla
3ª - La lista de selección no puede contener expresiones, columnas calculadas o funciones de columna, solo referencias a columnas simples.
4ª - WHERE no debe incluir subconsultas.
5ª - No debe incluir ni GROUP BY ni HAVING.

Eliminación

Se hace con
DROP VIEW id_vista

v  Ejemplos
Por ejemplo, si tenemos unas tablas que representan autores y libros, y queremos hacer un listado plano de libros y sus autores, podemos ejecutar un query que haga una junta (join) entre estas dos tablas. Pero si posteriormente queremos pedir solo unas líneas de este resultado a partir de otro filtro, vamos a tener que re-ejecutar el query completo, agregando nuestro filtro. Obviamente es posible, pero también implica repetir operaciones anteriores. En el caso de tener pedidos complejos, esto puede resultar en una pérdida de eficiencia grande, y mucho trabajo adicional para el desarrollador.

Vista de "empleados" denominada "vista_empleados_ingreso" que almacena la cantidad de empleados por año:

 create view vista_empleados_ingreso (fecha,cantidad)
  as
  select datepart(year,fechaingreso),count(*)
   from empleados
   group by datepart(year,fechaingreso)

Creamos la vista "vista_empleados", que es resultado de una combinación en la cual se muestran 4 campos:

 create view vista_empleados as
  select (apellido+' '+e.nombre) as nombre,sexo,
   s.nombre as seccion, cantidadhijos
   from empleados as e
   join secciones as s
   on codigo=sección

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

CREATE VIEW clienTresmil
ASSELECT * FROM CLIENTESWHERE 30000 <
(SELECT SUM (importe) FROM
PEDIDOSWHERE num_clie = clie)

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 ASSELECT DNI, codigo_banco, paga_banco FROM USUARIOS

2.    Resumen

Vistas:

Datos es un subconjunto de una base de datos y se basa en una consulta que se ejecuta en una o más tablas de base de datos.

Hay dos tipos de vistas de base de datos:
ü  Las vistas dinámicas: pueden contener datos de una o dos tablas e incluir automáticamente todas las columnas de la tabla o tablas especificadas. Las vistas dinámicas se pueden actualizar dinámicamente cuando se crean o modifican objetos relacionados u objetos ampliados.
ü  Las vistas estáticas: pueden contener datos de varias tablas y las columnas necesarias de estas tablas se deben especificar en las cláusulas SELECT y WHERE de la vista estática. Las vistas dinámicas se pueden actualizar manualmente cuando se crean o modifican objetos relacionados u objetos ampliados.
v  Sintaxis
CREATE VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ]
[ WITH <view_attribute> [ ,...n ] ]
AS select_statement
[ WITH CHECK OPTION ] [ ; ]

<view_attribute> ::=
{
    [ ENCRYPTION ]
    [ SCHEMABINDING ]
    [ VIEW_METADATA ]     }

v  Administración de Vistas (Creación, Modificación y Eliminación)

Creación:

CREATE VIEW id_vista [(columna,…)]
AS especificación_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.

B.   Verticales o por proyección
Son aquellas que restringen el acceso de un usuario sólo a ciertas columnas de una tabla.

C.   Subconjuntos fila / columna
Lo más habitual es crear vistas con parte de las filas y parte de las columnas de una tabla

D.   Agrupados
Son vistas que incluyen una cláusula GROUP BY en la consulta especificada..

E.   Compuestas
Son vistas creadas a partir de los datos de dos o más tablas.


Modificación

1ª - No especifica DISTINCT
2ª - FROM debe especificar una única tabla
3ª - La lista de selección no puede contener expresiones, columnas calculadas o funciones de columna, solo referencias a columnas simples.
4ª - WHERE no debe incluir subconsultas.
5ª - No debe incluir ni GROUP BY ni HAVING.

Eliminación

Se hace con
DROP VIEW id_vista

3.    Summary

Views:

Data is a subset of a database and is based on a query that runs on one or more database tables.

There are two types of database views:
ü  Dynamic views: can contain data from one or two tables and automatically include all the columns of the table or tables specified. Dynamic views can be updated dynamically when related objects or extended objects are created or modified.
ü  Static views: they can contain data from several tables and the necessary columns of these tables must be specified in the SELECT and WHERE clauses of the static view. Dynamic views can be updated manually when related objects or extended objects are created or modified.

v  Syntax

CREATE VIEW [schema_name. ] view_name [(column [, ... n])]
[WITH <view_attribute> [, ... n]]
AS select_statement
[WITH CHECK OPTION] [; ]

<view_attribute> :: =
{
    [ENCRYPTION]
    [SCHEMABINDING]
    [VIEW_METADATA]}

v  Administration of Views (Creation, Modification and Elimination)

Creation:

CREATE VIEW view_id [(column, ...)]
AS query_ specification;

There are two cases in which the specification of the list of columns is mandatory:
1. When the query includes calculated columns
2. When the query produces identical names.

According to the purpose with which the views are organized, they can be classified into the following types:

A. Horizontal or by Restriction
They are those that restrict a user's access to only a set of rows in a table.

B. Vertical or projection
Are those that restrict a user's access only to certain columns of a table.

C. Subsets row / column
The most common is to create views with part of the rows and part of the columns of a table

D. Grouped
These are views that include a GROUP BY clause in the specified query ..

E. Composite
These are views created from the data of two or more tables.


Modification

1st - Does not specify DISTINCT
2nd - FROM must specify a single table
3rd - The selection list can not contain expressions, calculated columns or column functions, only references to simple columns.
4th - WHERE should not include subqueries.
5th - You must not include either GROUP BY or HAVING.

Elimination

It is made with
DROP VIEW id_view

4.    Recomendaciones
ü  Recomendamos el uso de Vistas en sql server, para mostrar registros de manera más rápida, además las consultas con soluciones complejas se simplifican.
ü  Además permiten personalizar la base para los distintos usuarios, de forma que presenten los  datos con una estructura lógica para los mismos.
5.    Conclusiones
ü  Como conclusión decimos que una vista se especifica a través de una expresión de consulta (una sentencia SELECT) que la calcula y que puede realizarse sobre una o más tablas. Sobre un conjunto de tablas relacionales se puede trabajar con un número cualquiera de vistas.
ü  También las vistas en sql server tienen la misma estructura que una tabla: filas y columnas. La única diferencia es que sólo se almacena de ellas la definición, no los datos.

6.    Apreciación del Equipo
ü  En conjunto podemos apreciar que las vistas pueden emplearse como mecanismos de seguridad, que permiten a los usuarios obtener acceso a los datos por medio de la vista, pero no les conceden el permiso de obtener acceso directo a las tablas base subyacentes de la vista.
ü  Las vistas en sql server es un código ya depurado y que no requiere pasar por la validación de sintaxis del servidor de base de datos, por lo que resulta más rápida su ejecución. Es altamente efectiva para consultas repetitivas.
7.    Glosario de Términos
·         Base subyacentes: Es un término utilizado para describir el código unido al código creado por un procesador XAML cuando se compila una página XAML en una aplicación.
·         Tabla virtual: Estas segmentaciones pueden ser verticales (un subconjunto de columnas basado en una selección de columnas elegidas), horizontales (un conjunto explícito de filas o de registros basado en una expresión condicional) o ambas opciones.
·         Clausula: Conjunto de palabras que forman un sentido completo; incluye una proposición o diversas proposiciones íntimamente relacionadas entre sí.
·         Base de datos: es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso
·         Filtro: se refiere a un programa diseñado para controlar qué contenido se permite mostrar, especialmente para restringir el acceso a ciertos materiales de la Web.
·         Sintaxis: Modo de combinarse y ordenarse las palabras y las expresiones dentro del discurso.

8.    Bibliografía o Linkografía

9.    Página de diapositivas
     https://www.slideshare.net/MarleniChuquizutaRam/vistas-94991109



No hay comentarios:

Publicar un comentario