Implementación de vistas
Introducción
Introducción a las vistas
Ventajas de las vistas
Definición de vistas
Modificación de datos mediante vistas
Optimización del rendimiento mediante vistas
Práctica: Implementación de vistas
Introducción a las vistas
EmployeeViewEmployeeViewEmployeeViewEmployeeView
Lastname Lastname Firstname Firstname
Davolio Fuller Leverling
Davolio Fuller Leverling
Nancy Andrew Janet
Nancy Andrew Janet
EmployeesEmployeesEmployeesEmployees
EmployeeIDEmployeeID LastName LastName FirstnameFirstname TitleTitle
123
123
DavolioFullerLeverling
DavolioFullerLeverling
NancyAndrewJanet
NancyAndrewJanet
~~~~~~~~~
~~~~~~~~~
Vista del usuarioVista del usuario
USE NorthwindGOCREATE VIEW dbo.EmployeeViewAS SELECT LastName, FirstnameFROM Employees
USE NorthwindGOCREATE VIEW dbo.EmployeeViewAS SELECT LastName, FirstnameFROM Employees
Ventajas de las vistas
Centrar el interés en los datos de los usuarios
Centrarse sólo en los datos importantes o adecuados
Limitar el acceso a los datos confidenciales
Enmascarar la complejidad de la base de datos
Ocultar el diseño de la base de datos compleja
Simplificar las consultas complejas, incluyendo las consultas distribuidas a datos heterogéneos
Simplificar la administración de los permisos de usuario
Mejorar el rendimiento
Organizar los datos para exportarse a otras aplicaciones
Definición de vistas
Creación de vistas
Ejemplo: Vista de tablas combinadas
Modificación y eliminación de 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
Creación de vistas
Creación de una vista
Restricciones en las definiciones de vistas
No se puede incluir la cláusula ORDER BY
No se puede incluir la palabra clave INTO
CREATE VIEW dbo.OrderSubtotalsView (OrderID, Subtotal)ASSELECT OD.OrderID, SUM(CONVERT(money,(OD.UnitPrice*Quantity*(1-Discount)/100))*100)FROM [Order Details] ODGROUP BY OD.OrderIDGO
CREATE VIEW dbo.OrderSubtotalsView (OrderID, Subtotal)ASSELECT OD.OrderID, SUM(CONVERT(money,(OD.UnitPrice*Quantity*(1-Discount)/100))*100)FROM [Order Details] ODGROUP BY OD.OrderIDGO
Ejemplo: Vista de tablas combinadas
OrderIDOrderIDOrderIDOrderID
1066310827104271045110515
1066310827104271045110515
CustomerIDCustomerIDCustomerIDCustomerID
BONAP BONAP PICCO QUICKQUICK
BONAP BONAP PICCO QUICKQUICK
~~~ ~~~ ~~~ ~~~ ~~~
~~~ ~~~ ~~~ ~~~ ~~~
RequiredDateRequiredDateRequiredDateRequiredDate
1997-09-241998-01-261997-02-241997-03-051997-05-07
1997-09-241998-01-261997-02-241997-03-051997-05-07
ShippedDateShippedDateShippedDateShippedDate
1997-10-031998-02-061997-03-031997-03-121997-05-23
1997-10-031998-02-061997-03-031997-03-121997-05-23
Orders Customers
ShipStatusViewUSE NorthwindGOCREATE VIEW dbo.ShipStatusViewASSELECT OrderID, ShippedDate, ContactNameFROM Customers c INNER JOIN Orders o ON c.CustomerID = O.CustomerIDWHERE RequiredDate < ShippedDate
USE NorthwindGOCREATE VIEW dbo.ShipStatusViewASSELECT OrderID, ShippedDate, ContactNameFROM Customers c INNER JOIN Orders o ON c.CustomerID = O.CustomerIDWHERE RequiredDate < ShippedDate
CustomerIDCustomerIDCustomerIDCustomerID
BONAPPICCOQUICK
BONAPPICCOQUICK
CompanyNameCompanyNameCompanyNameCompanyName
Bon app'Piccolo und mehrQUICK-Stop
Bon app'Piccolo und mehrQUICK-Stop
ContactNameContactNameContactNameContactName
Laurence LebihanGeorg PippsHorst Kloss
Laurence LebihanGeorg PippsHorst Kloss
OrderIDOrderIDOrderIDOrderID
102641027110280
102641027110280
1996-08-211996-08-291996-09-11
1996-08-211996-08-291996-09-11
ShippedDateShippedDateShippedDateShippedDate
1996-08-231996-08-301996-09-12
1996-08-231996-08-301996-09-12
ContactNameContactNameContactNameContactName
Laurence LebihanGeorg PippsHorst Kloss
Laurence LebihanGeorg PippsHorst Kloss
Modificación y eliminación de vistas
Alteración de vistas
Conserva los permisos asignados
Hace que la instrucción SELECT y las opciones reemplacen la definición existente
Eliminación de vistas
USE NorthwindGOALTER VIEW dbo.EmployeeViewAS SELECT LastName, FirstName, ExtensionFROM Employees
USE NorthwindGOALTER VIEW dbo.EmployeeViewAS SELECT LastName, FirstName, ExtensionFROM Employees
DROP VIEW dbo.ShipStatusViewDROP VIEW dbo.ShipStatusView
GRANT SELECT ON view2 TO pierreGRANT SELECT ON view2 TO pierre
SELECT * FROM maria.view2SELECT * FROM maria.view2
Objetos dependientes conpropietarios distintos
Ejemplo:
Maria ejecuta:
Pierre ejecuta:
Evitar la interrupción de las cadenas de pertenencia
maria.view2
lucia.view1
lucia.table1
Ubicación de la información de definición de vistas
Ubicación de las definiciones de vistas
No disponible si la vista fue creada con la opciónWITH ENCRYPTION
Ubicación de las dependencias de una vista
Muestra los objetos de los que depende una vista
Muestra los objetos que dependen de una vista
Ocultación de la definición de las vistas
Uso de la opción WITH ENCRYPTION
No elimine las entradas de la tabla syscomments
USE NorthwindGOCREATE VIEW dbo.[Order Subtotals] WITH ENCRYPTIONASSELECT OrderID, Sum(CONVERT(money,(UnitPrice*Quantity*(1-Discount)/100))*100) AS SubtotalFROM [Order Details]GROUP BY OrderIDGO
USE NorthwindGOCREATE VIEW dbo.[Order Subtotals] WITH ENCRYPTIONASSELECT OrderID, Sum(CONVERT(money,(UnitPrice*Quantity*(1-Discount)/100))*100) AS SubtotalFROM [Order Details]GROUP BY OrderIDGO
Modificación de datos mediante vistas
No pueden afectar a más 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
Optimización del rendimiento mediante vistas
Consideraciones acerca del rendimiento
Uso de vistas indizadas
Uso de vistas para dividir datos
Consideraciones acerca del rendimiento
USE NorthwindGOCREATE VIEW dbo.TopSalesViewASSELECT *FROM dbo.TotalPurchaseViewWHERE Subtotal > 50000GO
USE NorthwindGOCREATE VIEW dbo.TopSalesViewASSELECT *FROM dbo.TotalPurchaseViewWHERE Subtotal > 50000GO
TotalPurchaseTotalPurchaseViewViewTotalPurchaseTotalPurchaseViewView
11 ~~ ~~ ~~ ~~
22 ~~ ~~ ~~ ~~
33 ~~ ~~ ~~ ~~
44 ~~ ~~ ~~ ~~
55 ~~ ~~ ~~ ~~
66 ~~ ~~ ~~ ~~
CustomersCustomersCustomersCustomers
11 ~~ ~~ ~~ nn
22 ~~ ~~ ~~ nn
33 ~~ ~~ ~~ yy
44 ~~ ~~ ~~ yy
55 ~~ ~~ ~~ nn
66 ~~ ~~ ~~ yy
OrdersOrdersOrdersOrders
11 ~~ ~~ ~~ nn
22 ~~ ~~ ~~ nn
33 ~~ ~~ ~~ yy
44 ~~ ~~ ~~ yy
55 ~~ ~~ ~~ nn
66 ~~ ~~ ~~ yy
Order DetailsOrder DetailsOrder DetailsOrder Details
11 ~~ ~~ ~~ ~~
22 ~~ ~~ ~~ ~~
33 ~~ ~~ ~~ ~~
44 ~~ ~~ ~~ ~~
55 ~~ ~~ ~~ ~~
66 ~~ ~~ ~~ ~~
SELECT *FROM dbo.TopSalesViewWHERE CompanyName = 'Ernst Handel'
SELECT *FROM dbo.TopSalesViewWHERE CompanyName = 'Ernst Handel'
TopSalesViewTopSalesViewTopSalesViewTopSalesView
~~ ~~ ~~
~~ ~~ ~~
~~ ~~ ~~
Uso de vistas indizadas
Las vistas indizadas almacenan el conjunto de resultados en la base de datos
Creación de una vista indizada
Recomendaciones para la creación 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 creación 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
Cómo utiliza SQL Server las vistas para dividir datos
Cómo las vistas divididas mejoran el rendimiento
Práctica: Implementación de vistas
Top Related