Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Implementación
de vistas
Contenido
Introducción 1
Introducción a las vistas 2
Ventajas de las vistas 3
Definición de vistas 5
Modificación de datos mediante vistas 16
Optimización del rendimiento
mediante vistas 17
Procedimientos recomendados 23
Práctica A: Implementación de vistas 25
Repaso 34
La información contenida en este documento está sujeta a modificaciones sin previo aviso. A
menos que se indique lo contrario, los nombres de las compañías, productos, personas, personajes
y datos mencionados son ficticios, y no representan de ningún modo a ninguna persona, compañía,
producto o acontecimiento reales. Es responsabilidad del usuario el cumplimiento de todas las
leyes de derechos de autor aplicables. Ninguna parte de este documento puede ser reproducida o
transmitida de ninguna forma, ni por ningún medio, ya sea electrónico o mecánico, con ningún
propósito, sin la previa autorización por escrito de Microsoft Corporation. Sin embargo, si su único
medio de acceso es electrónico, se le concede permiso para imprimir una copia.
Microsoft puede ser titular de patentes, solicitudes de patentes, marcas, derechos de autor y otros
derechos de propiedad intelectual sobre el contenido de este documento. El suministro de este
documento no le otorga ninguna licencia sobre estas patentes, marcas, derechos de autor, u otros
derechos de propiedad intelectual, a menos que ello se prevea en un contrato por escrito de licencia
de Microsoft.
Microsoft, ActiveX, BackOffice, MS-DOS, PowerPoint, Visual Basic, Visual C++, Visual Studio,
Windows y Windows NT son marcas comerciales registradas o marcas comerciales de Microsoft
Corporation en los Estados Unidos o en otros países.
Otros nombres de productos y compañías mencionados aquí pueden ser marcas comerciales de sus
respectivos propietarios.
Material y preparación
Esta sección proporciona el material y las tareas de preparación que se
necesitan para impartir este módulo.
Material necesario
Para impartir este módulo, necesitará el material siguiente:
El archivo 2329A_08.ppt de Microsoft® PowerPoint®
El archivo de ejemplo C:\Moc\2329A\Demo\D08_Ex.sql, que contiene
todas las secuencias de comandos de ejemplo del módulo, excepto cuando
se indique lo contrario.
Tareas de preparación
Para preparar este módulo, deberá:
Leer todo el material del mismo.
Completar la práctica.
iv Módulo 8: Implementación de vistas
Información de personalización
En esta sección se identifican los requisitos de instalación de las prácticas para
un módulo y los cambios de configuración que ocurren en los equipos de los
alumnos durante estas prácticas. Esta información pretende ayudarle a replicar o
personalizar el material del curso de Microsoft Official Curriculum (MOC).
Preparación de la práctica
En la sección siguiente se describen los requisitos de instalación para la práctica
de este módulo.
Requisito de instalación
La práctica de este módulo requiere que la base de datos Credit se encuentre
en un estado concreto. Para preparar los equipos de los alumnos de manera
que cumplan este requisito, realice una las siguientes acciones:
Complete la práctica anterior.
Ejecute el archivo por lotes C:\Moc\2329A\Batches\Restore08.cmd.
Introducción
Objetivo del tema
Proporcionar una introduc-
ción a los temas y objetivos
del módulo. Introducción a las vistas
Explicación previa Ventajas de las vistas
En este módulo aprenderá
a crear, utilizar y mantener Definición de vistas
vistas de datos.
Modificación de datos mediante vistas
Optimización del rendimiento mediante vistas
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Este módulo define las vistas y sus ventajas. A continuación, describe
cómo crear vistas y proporciona ejemplos de proyecciones y combinaciones.
Estos ejemplos ilustran el modo de incluir columnas calculadas y funciones
integradas en las definiciones de vistas. A continuación, el módulo cubre las
restricciones en la modificación de datos mediante vistas. La última sección
explica cómo las vistas pueden mejorar el rendimiento.
Después de completar este módulo, el alumno será capaz de:
Describir el concepto de vista.
Enumerar las ventajas de las vistas.
Definir una vista con la instrucción CREATE VIEW.
Modificar datos mediante vistas.
Optimizar el rendimiento mediante vistas.
2 Módulo 8: Implementación de vistas
EmployeeView
EmployeeView
Lastname
Lastname Firstname
Firstname
Davolio
Davolio Nancy
Nancy Vista del usuario
Fuller
Fuller Andrew
Andrew
Leverling
Leverling Janet
Janet
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Una vista ofrece la posibilidad de almacenar una consulta predefinida como un
Sugerencia objeto en una base de datos para usarse posteriormente. Las tablas consultadas
Hasta este punto del curso,
hemos escrito consultas
en una vista se denominan tablas base. Salvo algunas excepciones, es posible
“ad hoc”. Con las vistas dar nombre a cualquier instrucción SELECT y almacenarla como una vista.
comenzaremos la expli- Algunos ejemplos habituales de vistas son los siguientes:
cación de la forma en que
las consultas se almacenan
Un subconjunto de las filas o columnas de una tabla base.
como objetos (vistas, proce- Una unión de dos o más tablas base.
dimientos almacenados y
desencadenadores) en la Una combinación de dos o más tablas base.
base de datos. Un resumen estadístico de una tabla base.
Un subconjunto de otra vista o alguna combinación de vistas y tablas base.
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL******
Las vistas ofrecen diversas ventajas, como la capacidad de centrar el interés
en los datos de los usuarios, enmascarar su complejidad, simplificar la
administración de los permisos y organizar los datos para exportarlos a otras
aplicaciones.
Mejorar el rendimiento
Las vistas le permiten almacenar los resultados de consultas complejas.
Otras consultas pueden utilizar estos resultados resumidos. Las vistas también
permiten dividir datos. Es posible colocar divisiones individuales en equipos
distintos.
Definición de vistas
Objetivo del tema
Presentar una sección
acerca del trabajo con las
vistas. Creación de vistas
Explicación previa Ejemplo: Vista de tablas combinadas
Esta sección describe
cómo crear, modificar y Modificación y eliminación de vistas
quitar vistas.
Evitar la interrupción de las cadenas de pertenencia
Ubicación de la información de definición de vistas
Ocultación de la definición de las vistas
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Esta sección describe cómo crear, modificar y quitar vistas. También
explica cómo evitar la interrupción de las cadenas de pertenencia, ocultar
las definiciones de las vistas y obtener información acerca de las vistas de
una base de datos.
6 Módulo 8: Implementación de vistas
Creación de vistas
Objetivo del tema
Explicar cómo crear y
quitar vistas. Creación de una vista
Explicación previa
Ahora que hemos definido CREATE
CREATE VIEW
VIEW dbo.OrderSubtotalsView
dbo.OrderSubtotalsView (OrderID,
(OrderID, Subtotal)
Subtotal)
AS
AS
las vistas, explicaremos SELECT OD.OrderID,
SELECT OD.OrderID,
cómo crear una. SUM(CONVERT(money,(OD.UnitPrice*Quantity*(1-Discount)/100))*100)
SUM(CONVERT(money,(OD.UnitPrice*Quantity*(1-Discount)/100))*100)
FROM
FROM [Order
[Order Details]
Details] OD
OD
GROUP
GROUP BY
BY OD.OrderID
OD.OrderID
GO
GO
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Puede crear vistas con el Asistente para creación de vistas, con el
Administrador corporativo de SQL Server o con Transact-SQL.
Las vistas sólo se pueden crear en la base de datos actual.
Ejemplo 1 Éste es un ejemplo de una vista que crea una columna (Subtotal) que calcula
los subtotales de un pedido a partir de las columnas UnitPrice, Quantity y
Discount.
CREATE VIEW dbo.OrderSubtotalsView (OrderID, Subtotal)
AS
SELECT OD.OrderID,
SUM(CONVERT
(money,(OD.UnitPrice*Quantity*(1-Discount)/100))*100)
FROM [Order Details] OD
GROUP BY OD.OrderID
GO
10271 48.0000
10977 2233.0000
10440 4924.1400
.
.
.
(830 filas afectadas)
8 Módulo 8: Implementación de vistas
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
A menudo se crean vistas para conseguir una forma más práctica de ver
información centralizada de dos o más tablas combinadas.
Ejemplo 1 En este ejemplo, ShipStatusView combina las tablas Customers y Orders.
USE Northwind
GO
CREATE VIEW dbo.ShipStatusView
AS
SELECT OrderID, ShippedDate, ContactName
FROM Customers c INNER JOIN Orders o
ON c.CustomerID = O.CustomerID
WHERE RequiredDate < ShippedDate
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
A menudo, las vistas se alteran como respuesta a las peticiones de información
adicional por parte de los usuarios o a causa de cambios en la definición de las
tablas subyacentes. Para alterar una vista puede quitarla y volverla a crear, o
bien puede ejecutar la instrucción ALTER VIEW.
Alteración de vistas
La instrucción ALTER VIEW cambia la definición de una vista, incluidas
las vistas de índices, sin afectar a los procedimientos almacenados o
desencadenadores dependientes. Esto le permite conservar los permisos
de la vista. Esta instrucción está sujeta a las mismas restricciones que CREATE
VIEW. Si quita una vista y la vuelve a crear, deberá volver a asignar los
permisos asociados a ella.
Sintaxis ALTER VIEW propietario.nombreVista
[(columna [,...n ])]
[WITH {ENCRYPTION | SCHEMABINDING | VIEW_METADATA} [,...n]]
AS
instrucciónSelect
[WITH CHECK OPTION]
Sugerencia Nota Si define una vista con una instrucción SELECT * y, a continuación,
Al crear la vista, la lista de agrega columnas a la estructura de las tablas subyacentes y, por tanto, altera
columnas se almacena en la dicha estructura, las nuevas columnas no aparecerán en la vista. Cuando en la
tabla syscolumns. instrucción CREATE VIEW se seleccionan todas las columnas, la lista de
columnas sólo se interpreta en el momento de crear la vista. Para incluir las
columnas nuevas en la vista, es necesario alterar ésta.
Eliminación de vistas
Si ya no necesita una vista, puede quitar su definición de la base de datos con la
instrucción DROP VIEW. Al quitar una vista se quita su definición y todos los
permisos que tenga asignados. Además, si los usuarios consultan vistas que
hagan referencia a la vista quitada, obtendrán un mensaje de error. Sin embargo,
al quitar una tabla que hace referencia a una vista, ésta no se quita
automáticamente. Es necesario quitarla de forma explícita.
SELECT
SELECT ** FROM
FROM maria.view2
maria.view2
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
SQL Server permite que el propietario del objeto original conserve el control de
qué usuarios tienen autorización de acceso al mismo.
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Para alterar la definición de una vista o comprender cómo se obtienen sus datos
a partir de las tablas base, puede ser necesario ver su definición.
Nota INFORMATION_SCHEMA.VIEW_TABLE_USAGE e
INFORMATION_SCHEMA.VIEW_COLUMN_USAGE sólo muestran
información referida a su nombre de usuario.
Módulo 8: Implementación de vistas 13
Para mostrar el texto utilizado para crear una vista puede usar el Administrador
corporativo de SQL Server, consultar INFORMATION_SCHEMA.VIEWS o
ejecutar el procedimiento almacenado de sistema sp_helptext con el nombre de
la vista como parámetro.
Sintaxis sp_helptext nombreObjeto
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Debido a que los usuarios pueden mostrar la definición de una vista mediante
el Administrador corporativo de SQL Server, por medio de consultas a
INFORMATION_SCHEMA.VIEWS o consultas a la tabla del sistema
syscomments, puede que desee ocultar ciertas definiciones de vistas.
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Las vistas no mantienen una copia aparte de los datos sino que muestran el
conjunto de resultados de una consulta de una o varias tablas base. Por ello,
al modificar los datos de una vista, en realidad se modifica la tabla base.
Con algunas restricciones, es posible insertar, actualizar o eliminar libremente
datos de una tabla a través de una vista. En general, la vista debe estar basada
en una sola tabla y no debe incluir funciones de agregado o cláusulas GROUP
BY en la instrucción SELECT.
Específicamente, las modificaciones realizadas a través de vistas:
No pueden afectar a más de una tabla subyacente.
Puede modificar vistas derivadas de dos o más tablas, pero cada
actualización o modificación sólo puede afectar a una de ellas.
No pueden afectar a ciertas columnas.
SQL Server no permite cambiar las columnas que son resultado de un
cálculo, como las que contienen valores calculados, funciones integradas
o funciones de agregado de filas.
Pueden provocar errores si afectan a columnas a las que la vista no hace
referencia.
Por ejemplo, al insertar una fila en una vista definida en una tabla que
contiene columnas no incluidas en la vista y que no permiten valores
NULL o contienen valores predeterminados, se producirá un error.
Se comprueba si se ha especificado WITH CHECK OPTION en la
definición de la vista.
La opción WITH CHECK OPTION obliga a todas las instrucciones de
modificación de datos que se ejecutan contra la vista a cumplir ciertos
criterios. Estos criterios se especifican en la instrucción SELECT que
define la vista. Si los valores cambiados están fuera del intervalo válido
de la definición de la vista, SQL Server rechazará la modificación.
Módulo 8: Implementación de vistas 17
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Esta sección describe las consideraciones acerca del rendimiento en el uso de
vistas y cómo las vistas le permiten optimizar el rendimiento al almacenar los
resultados de consultas complejas y dividir los datos.
18 Módulo 8: Implementación de vistas
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Cuando se anidan en una vista otras vistas que combinan varias tablas y
evalúan expresiones complejas, el origen inmediato de los posibles problemas
de rendimiento puede ser difícil de determinar. En consecuencia, puede ser
conveniente crear definiciones de vistas separadas, en lugar de anidarlas.
Ejemplo En el ejemplo siguiente, TopSalesView consulta un subconjunto de filas de
TotalPurchaseView.
USE Northwind
Sugerencia GO
Pregunta: ¿hasta dónde
CREATE VIEW dbo.TopSalesView
puede anidarse una vista
de otra vista? AS
SELECT *
Respuesta: el único FROM dbo.TotalPurchaseView
límite son los recursos WHERE Subtotal > 50000
disponibles. En general, GO
no se deben anidar más de
tres niveles si no se desea La definición de la vista dbo.TopSalesView oculta la complejidad de la
ocultar posibles problemas consulta subyacente utilizada para crear TotalPurchaseView, que combina tres
de rendimiento. tablas base.
Módulo 8: Implementación de vistas 19
USE Northwind
GO
CREATE VIEW dbo.TotalPurchaseView
AS
SELECT CompanyName, Sum(CONVERT(money,
(UnitPrice*Quantity*(1-Discount)/100))*100) AS Subtotal
FROM Customers c INNER JOIN Orders o
ON c.CustomerID=o.CustomerID
INNER JOIN [Order Details] od
ON o.OrderID = od.OrderID
GROUP BY CompanyName
GO
(1 fila(s) afectada(s))
20 Módulo 8: Implementación de vistas
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Es posible crear índices en las vistas. Una vista indizada almacena el conjunto
de resultados de una vista en la base de datos. Debido a que la velocidad de
recuperación es rápida, puede utilizar vistas indizadas para mejorar el
rendimiento de las consultas.
Nota Para estar seguro de que puede indizar una vista debe utilizar la
propiedad IsIndexable de la función OBJECTPROPERTY.
22 Módulo 8: Implementación de vistas
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Puede utilizar vistas para dividir datos entre varias bases de datos o copias de
SQL Server y así mejorar el rendimiento.
Procedimientos recomendados
Objetivo del tema
Presentar algunas
recomendaciones para Use
Use una
una convención
convención de
de nomenclatura
nomenclatura estándar
estándar
el uso de las vistas.
Explicación previa
Las siguientes son algunas dbo
dbo debe
debe ser
ser el
el propietario
propietario de
de todas
todas las
las vistas
vistas
recomendaciones para
utilizar las vistas.
Compruebe
Compruebe las
las dependencias
dependencias de
de los
los objetos
objetos antes
antes de
de quitarlos
quitarlos
No
No elimine
elimine nunca
nunca las
las entradas
entradas de
de la
la tabla
tabla del
del sistema
sistema
syscomments
syscomments
Evalúe
Evalúe cuidadosamente
cuidadosamente la
la creación
creación de
de vistas
vistas basadas
basadas en
en otras
otras
vistas
vistas
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Las recomendaciones siguientes le ayudarán a utilizar y administrar las vistas
de bases de datos:
Debe establecer una convención de denominación coherente para distinguir
las vistas de las tablas.
Especifique dbo como propietario al crear las vistas. El dbo debe poseer
todos los objetos a los que se hace referencia en la definición de vista. Con
ello no tendrá que especificar el nombre del propietario al consultar la vista,
ya que el propietario de la base de datos es el propietario predeterminado.
Además, el propietario de la base de datos tiene permisos en todos los
objetos subyacentes de la base de datos, lo que evita la posibilidad de que
se interrumpan las cadenas de propiedad.
Compruebe las dependencias de los objetos antes de quitarlos de la base
de datos. Ejecute el procedimiento almacenado de sistema sp_depends o
muestre las dependencias en el Administrador corporativo de SQL Server
para asegurarse de que ningún objeto depende del que va a quitar.
Nunca elimine entradas de la tabla del sistema syscomments. Si la
aplicación requiere que la definición sea invisible para otros usuarios,
utilice la opción WITH ENCRYPTION en la instrucción CREATE VIEW
o ALTER VIEW. Asegúrese de guardar la secuencia de comandos de la
definición antes de cifrar la secuencia.
Evalúe cuidadosamente si debe crear vistas basadas en otras vistas.
Puede ocultar su complejidad y provocar problemas de rendimiento.
24 Módulo 8: Implementación de vistas
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
Explique los objetivos de la
práctica. Objetivos
Después de realizar esta práctica, el alumno será capaz de:
Crear una vista con un asistente.
Alterar una vista para cifrar su definición.
Alterar una vista con WITH CHECK OPTION.
Utilizar el esquema de información para obtener información acerca de
las vistas.
Requisitos previos
Antes de trabajar en esta práctica, debe tener:
Los archivos de comandos de la práctica que se encuentran en
C:\Moc\2329A\Labfiles\L08.
Los archivos de respuestas de la práctica que se encuentran en
C:\Moc\2329A\Labfiles\L08\Answers.
Preparación de la práctica
Para completar esta práctica, deberá:
Haber completado la práctica anterior o bien
Haber ejecutado el archivo por lotes
C:\Moc\2329A\Batches\Restore08.cmd.
Este archivo de comandos restaura la base de datos ClassNorthwind al
estado requerido por esta práctica.
Más información
Si necesita ayuda acerca de cómo ejecutar archivos, busque el título “Ejecutar
instrucciones SQL” en la Ayuda del Analizador de consultas SQL.
26 Módulo 8: Implementación de vistas
Situación de ejemplo
La organización del aula pretende simular la de una empresa dedicada al
comercio mundial llamada Northwind Traders. Su nombre de dominio ficticio
es nwtraders.msft. El servidor DNS principal para nwtraders.msft es el equipo
del instructor, cuya dirección del Protocolo Internet (IP) es 192.168.x.200
(donde x es el número del aula que tiene asignado). El nombre del equipo del
instructor es London.
En la tabla siguiente se muestran el nombre de usuario, el nombre de
equipo y la dirección IP del equipo de cada alumno en el dominio ficticio
nwtraders.msft. Busque el nombre de usuario correspondiente a su equipo
y anótelo.
Nombre de Nombre del
usuario equipo Dirección IP
Ejercicio 1
Creación y prueba de vistas
En este ejercicio va a crear vistas para administrar las peticiones diarias
relativas a la base de datos ClassNorthwind. Utilizará el Asistente para
creación de vistas y ejecutará una secuencia de comandos que crea varias
vistas. Por último, consultará las vistas para comprobar que obtiene los
resultados esperados.
____________________________________________________________
____________________________________________________________
Módulo 8: Implementación de vistas 29
Ejercicio 2
Cifrado de la definición de una vista
En este ejercicio va a alterar una vista para cifrar su definición, de modo que no
sea visible.
Ejercicio 3
Modificación de datos a través de vistas
En este ejercicio va a alterar FormaggiProductsView para incluir WITH
CHECK OPTION, de modo que sólo podrán hacerse modificaciones a los
datos que cumplan la definición de la vista.
____________________________________________________________
32 Módulo 8: Implementación de vistas
Ejercicio 4
Ubicación de las definiciones de las vistas
En este ejercicio va a consultar las vistas de esquema de información para
obtener información acerca de las vistas que ha creado en la base de datos
ClassNorthwind. El archivo L08\Answers\Schema.sql es la secuencia de
comandos completa de este ejercicio.
____________________________________________________________
____________________________________________________________
____________________________________________________________
¿Por qué es posible ver las tablas a las que hace referencia Sales by
Category si esta vista está cifrada?
La opción WITH ENCRYPTION sólo cifra la definición de la vista en
la tabla del sistema syscomments. Las tablas o vistas a las que hace
referencia una vista se encuentran en la tabla del sistema sysobjects.
____________________________________________________________
____________________________________________________________
____________________________________________________________
34 Módulo 8: Implementación de vistas
Repaso
Objetivo del tema
Reforzar los objetivos del
módulo mediante el repaso
de los puntos clave. Introducción a las vistas
Explicación previa Ventajas de las vistas
Las preguntas de repaso
abarcan algunos de los Definición de vistas
conceptos clave impartidos
en el módulo. Modificación de datos mediante vistas
Optimización del rendimiento mediante vistas
******EL USO POR QUIENES NO SEAN INSTRUCTORES NO ESTÁ AUTORIZADO Y RESULTA ILEGAL*****
1. ¿Cuáles son las ventajas de las vistas?
Los usuarios se centran solamente en los datos que necesitan; el
tratamiento de los datos por parte del usuario se simplifica; la
complejidad de las base de datos y las consultas queda oculta para los
usuarios, lo que les permite ver nombres descriptivos. Las vistas
proporcionan un mecanismo de seguridad al permitir a los usuarios
tener acceso a datos únicamente en vistas. Crear índices en vistas y
dividir los datos mediante vistas puede optimizar el rendimiento.