Você está na página 1de 17

Implementacin de

vistas
Introduccin
Introduccin a las vistas
Ventajas de las vistas
Definicin de vistas
Modificacin de datos mediante vistas
Optimizacin del rendimiento mediante vistas
Prctica: Implementacin de vistas
Introduccin a las vistas
EmployeeView
Lastname Firstname
Davolio
Fuller
Leverling
Nancy
Andrew
Janet
Employees
EmployeeID LastName Firstname Title
1
2
3
Davolio
Fuller
Leverling

Nancy
Andrew
Janet
~~~
~~~
~~~
Vista del usuario
USE Northwind
GO
CREATE VIEW dbo.EmployeeView
AS
SELECT LastName, Firstname
FROM Employees
Ventajas de las vistas
Centrar el inters en los datos de los usuarios
Centrarse slo en los datos importantes o adecuados
Limitar el acceso a los datos confidenciales
Enmascarar la complejidad de la base de datos
Ocultar el diseo de la base de datos compleja
Simplificar las consultas complejas, incluyendo las consultas
distribuidas a datos heterogneos
Simplificar la administracin de los permisos de usuario
Mejorar el rendimiento
Organizar los datos para exportarse a otras aplicaciones
Definicin de vistas
Creacin de vistas
Ejemplo: Vista de tablas combinadas
Modificacin y eliminacin de vistas
Evitar la interrupcin de las cadenas de pertenencia
Ubicacin de la informacin de definicin de vistas
Ocultacin de la definicin de las vistas
Creacin de vistas
Creacin de una vista




Restricciones en las definiciones de vistas
No se puede incluir la clusula ORDER BY
No se puede incluir la palabra clave INTO

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
Ejemplo: Vista de tablas combinadas
OrderID
10663
10827
10427
10451
10515
CustomerID
BONAP
BONAP
PICCO
QUICK
QUICK

~~~
~~~
~~~
~~~
~~~
RequiredDate
1997-09-24
1998-01-26
1997-02-24
1997-03-05
1997-05-07
ShippedDate
1997-10-03
1998-02-06
1997-03-03
1997-03-12
1997-05-23
Orders Customers
ShipStatusView
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
CustomerID
BONAP
PICCO
QUICK


CompanyName
Bon app'
Piccolo und mehr
QUICK-Stop

ContactName
Laurence Lebihan
Georg Pipps
Horst Kloss
OrderID
10264
10271
10280
1996-08-21
1996-08-29
1996-09-11


ShippedDate
1996-08-23
1996-08-30
1996-09-12
ContactName
Laurence Lebihan
Georg Pipps
Horst Kloss
Modificacin y eliminacin de vistas
Alteracin de vistas



Conserva los permisos asignados
Hace que la instruccin SELECT y las opciones
reemplacen la definicin existente
Eliminacin de vistas
USE Northwind
GO
ALTER VIEW dbo.EmployeeView
AS
SELECT LastName, FirstName, Extension
FROM Employees
DROP VIEW dbo.ShipStatusView
GRANT SELECT ON view2 TO pierre
SELECT * FROM maria.view2
Objetos dependientes con
propietarios distintos
Ejemplo:
Maria ejecuta:


Pierre ejecuta:


Evitar la interrupcin de las cadenas de pertenencia
maria.view2
lucia.view1
lucia.table1
Ubicacin de la informacin de definicin de vistas
Ubicacin de las definiciones de vistas
No disponible si la vista fue creada con la opcin
WITH ENCRYPTION
Ubicacin de las dependencias de una vista
Muestra los objetos de los que depende una vista
Muestra los objetos que dependen de una vista
Ocultacin de la definicin de las vistas
Uso de la opcin WITH ENCRYPTION
No elimine las entradas de la tabla syscomments
USE Northwind
GO
CREATE VIEW dbo.[Order Subtotals]
WITH ENCRYPTION
AS
SELECT OrderID,
Sum(CONVERT(money,(UnitPrice*Quantity*(1-Discount)/100))*100)
AS Subtotal
FROM [Order Details]
GROUP BY OrderID
GO
Modificacin de datos mediante vistas
No pueden afectar a ms de una tabla subyacente
No pueden afectar a ciertas columnas
Pueden provocar errores si afectan a columnas a las
que la vista no hace referencia
Se comprueba si se ha especificado WITH CHECK
OPTION
Optimizacin del rendimiento mediante vistas
Consideraciones acerca del rendimiento
Uso de vistas indizadas
Uso de vistas para dividir datos
Consideraciones acerca del rendimiento
USE Northwind
GO
CREATE VIEW dbo.TopSalesView
AS
SELECT *
FROM dbo.TotalPurchaseView
WHERE Subtotal > 50000
GO
TotalPurchaseView
1 ~ ~ ~ ~
2 ~ ~ ~ ~
3 ~ ~ ~ ~
4 ~ ~ ~ ~
5 ~ ~ ~ ~
6 ~ ~ ~ ~
Customers
1 ~ ~ ~ n
2 ~ ~ ~ n
3 ~ ~ ~ y
4 ~ ~ ~ y
5 ~ ~ ~ n
6 ~ ~ ~ y
Orders
1 ~ ~ ~ n
2 ~ ~ ~ n
3 ~ ~ ~ y
4 ~ ~ ~ y
5 ~ ~ ~ n
6 ~ ~ ~ y
Order Details
1 ~ ~ ~ ~
2 ~ ~ ~ ~
3 ~ ~ ~ ~
4 ~ ~ ~ ~
5 ~ ~ ~ ~
6 ~ ~ ~ ~
SELECT *
FROM dbo.TopSalesView
WHERE CompanyName = 'Ernst Handel'
TopSalesView
~ ~ ~
~ ~ ~
~ ~ ~
Uso de vistas indizadas
Las vistas indizadas almacenan el conjunto de
resultados en la base de datos
Creacin de una vista indizada
Recomendaciones para la creacin de vistas indizadas
Utilizar si:
El rendimiento mejora el costo del incremento en el
mantenimiento
Los datos subyacentes no se actualizan con frecuencia
Las consultas realizan una gran cantidad de
combinaciones y operaciones de agregado
Restricciones en la creacin de vistas indizadas
Uso de vistas para dividir datos
Puede utilizar las vistas para dividir los datos en varios
servidores o instancias de SQL Server
Cmo utiliza SQL Server las vistas para dividir datos
Cmo las vistas divididas mejoran el rendimiento
Prctica: Implementacin de vistas

Você também pode gostar