Está en la página 1de 14

Vistas

David Esteban Echeverri Duque


Consultor en Inteligencia de Negocios
Objetivos
• Definición

• Ventajas

• Creación

• Cadena de Propietarios

• Modificar Datos

• Ocultar Definición

• Desempeño

2
Tabla Virtual
¿Qué es una Vista?
title
title_no title author synopsis
1 Last of the Mohicans James Fenimore Cooper ~~~
2 The Village Watch-Tower Kate Douglas Wiggin ~~~
3 Poems Wilfred Owen ~~~

CREATE VIEW dbo.TitleView


AS
SELECT title, author
FROM title

TitleView
title author
Last of the Mohicans James Fenimore Cooper
Vista de Usuario
The Village Watch-Tower Kate Douglas Wiggin
Poems Wilfred Owen
Ventajas

• Enfoca los datos para los usuarios


– Enfoca únicamente los datos importantes
– Limita el acceso a datos sensitivos
• Oculta complejidad de la BD
– Oculta la complejidad del diseño
– Simplifica las consultas complejas
• Simplifica la administración de permisos de usuario
• Organiza los datos para ser exportados
Creación de Vistas

• Solo cree una vista si hay una clara ventaja


– Suponga que tiene una vista que retorna el nombre del
cliente cuya línea de crédito es mayor a $ 100,000, esta
vista no da ninguna ventaja al tenerla

• Opciones al crear vistas


– ENCRYPTION
– SCHEMABINDING
Cadena de Propietarios
• Para que el usuario D pueda ejecutar la vista debe
hacer lo siguiente
• UserA da a UserD permiso SELECT en la vista
• UserB da a UserD permiso SELECT en dbo.Customer
• UserC da a UserD permiso SELECT en
dbo.CustomerAddress

User D
Modificar Datos Con Vistas (1/2)
• Los cambios deben referencias las columnas de una tabla y no
derivaciones
• No puede modificar columnas generadas por los operadores
UNION, CROSSJOIN, INTERSECT, GROUP BY, HAVING, o
DISTINCT. Y no puede usar Top cuando especifique WITH
CHECK OPTION
• Puede usar WHERE para limitar la consulta, por ejemplo
crédito > 1000, si inserta un valor de 1000 es permitido, pero la
vista no verá el resultado, puede utilizar la opción WITH CHECK
OPTION, para evitar que créditos <= 1000 sean insertados
Modificar Datos Con Vistas (2/2)

• No puede afectar más de una Tabla

• No se puede realizar a ciertas columnas

• Puede causar error si afecta tablas que no tienen


definidos valores por defecto o no acepten Nulos

• Son verificados los datos si ha sido especificado la


opción WITH CHECK
Restricciones al Crear Vistas

• Máximo 1024 columnas


• No puede incluir COMPUTE o COMPUTE BY
• No puede incluir ORDER BY, a menos que sea usado en
conjunto con un TOP
• No puede incluir INTO
• No puede referenciar una tabla temporal
• Debe ser expresada como un batch simple Transact-SQL
Vista de Múltiples Tablas
member juvenile
member_no
member_no lastname
lastname firstname
firstname middleinitial
middleinitial photograph
photograph member_no
member_no adult_no
adult_no birth_date
birth_date
1111 Thomas
Thomas Gary
Gary ~~~
~~~ ~~~
~~~ 1212 1111 1992-01-16
1992-01-1600:00:00.000
00:00:00.000
1212 Thomas
Thomas Clair
Clair ~~~
~~~ ~~~
~~~ 1313 66 1984-01-18 00:00:00.000
1984-01-18 00:00:00.000
1313 Funk
Funk Frank
Frank ~~~
~~~ ~~~
~~~
1414 Rudd
Rudd Clair
Clair ~~~
~~~ ~~~
~~~

USE
USE library
library
GO
GO
BirthdayView
CREATE
CREATE VIEW
VIEW dbo.BirthdayView Lastname
dbo.BirthdayView LastnameFirstname
FirstnameBirth
BirthDate
Date
(Lastname,
(Lastname, Firstname,
Firstname, Birthdate) Thomas
Birthdate) Thomas Clair
Clair 92.01.16
92.01.16
AS
AS Funk
Funk Frank
Frank 84.01.18
84.01.18
SELECT
SELECT lastname,
lastname, firstname,
firstname,
CONVERT(char(8),
CONVERT(char(8), birth_date,
birth_date, 2)
2)
FROM
FROM member
member JOIN
JOIN juvenile
juvenile
ON
ON member.member_no == juvenile.member_no
member.member_no juvenile.member_no
Modificar y Eliminar Vistas
• Modificar vistas
• Conserva los permisos asignados
• Reemplaza la definición existente

ALTER VIEW dbo.TitleView


AS
SELECT title, authors, synopsis
FROM title
• Eliminar vistas

DROP VIEW UnpaidFinesView


Ocultar Definición de Vistas

• Opción WITH ENCRYPTION

CREATE VIEW dbo.UnpaidFinesView (Member, TotalUnpaidFines)


WITH ENCRYPTION
AS
SELECT member_no, (sum(fine_assessed-fine_paid))
FROM loanhist
GROUP BY member_no, fine_assessed, fine_paid
HAVING SUM(fine_assessed-fine_paid) > 0
GO
Consideraciones de Desempeño
title
title USE
USE library
library
11item
~~
item ~~ ~~ nn GO
GO
copy CREATE
CREATE VIEW
VIEW dbo.LoanableView
2 11~ copy
2 1~ ~
~~ ~ ~~
~ ~ ~~~~nnnn dbo.LoanableView
~ n AS
AS
3322~~1~~ ~ ~~~~ ~ ~~~~yy~nn n SELECT
2 ~ ~ ~ n SELECT **
4433~~2~~ ~ ~~~~ ~ ~~~~yy~yy n FROM
FROM CopywideView
CopywideView
3 ~ ~ ~ y WHERE
5544~~3~~ ~ ~~~~ ~ ~~~~nn~yy y WHERE loanable
loanable == 'y'
'y'
4 ~ ~ ~ y
6655~~4~~ ~ ~~~~ ~ ~~~~yy~nn y
66 55~~ ~~ ~~ ~~ ~~ ~~yy nn
66 ~~ ~~ ~~ yy
CopywideView
CopywideView LoanableView
LoanableView
11 ~~ ~~ ~~ nn 33 ~~ ~~ ~~ yy
22 ~~ ~~ ~~ nn 44 ~~ ~~ ~~ yy
33 ~~ ~~ ~~ yy 66 ~~ ~~ ~~ yy
44 ~~ ~~ ~~ yy
55 ~~ ~~ ~~ nn
66 ~~ ~~ ~~ yy
SELECT
SELECT DISTINCT
DISTINCT isbn,
isbn, title,
title, author
author
FROM LoanableView
FROM LoanableView
WHERE
WHERE language
language == 'french'
'french'
David Esteban Echeverri Duque
Consultor BI y Analítica
Medellín - Colombia
sutano19@gmail.com
LinkedIn

También podría gustarte