Module 11 : Implémentation de vues
Vue d'ensemble Présentation d'une vue Avantages liés aux vues Définition de vues Modification de données à l'aide de vues Performances
Présentation d'une vue titleviewtitleview title author Last of the Mohicans The Village Watch-Tower Poems Last of the Mohicans The Village Watch-Tower Poems James Fenimore Cooper Kate Douglas Wiggin Wilfred Owen James Fenimore Cooper Kate Douglas Wiggin Wilfred Owen titletitle title_no title author synopsis Last of the Mohicans The Village Watch-Tower Poems Last of the Mohicans The Village Watch-Tower Poems James Fenimore Cooper Kate Douglas Wiggin Wilfred Owen James Fenimore Cooper Kate Douglas Wiggin Wilfred Owen ~~~ Vue de l'utilisateur USE library GO CREATE VIEW dbo.TitleView AS SELECT title, author FROM title USE library GO CREATE VIEW dbo.TitleView AS SELECT title, author FROM title
Avantages liés aux vues Mise en valeur des données pour les utilisateurs Mettre en valeur les données importantes ou appropriées seulement Limiter l'accès aux données sensibles Masquage de la complexité de la base de données Masquer la conception de bases de données complexes Simplifier les requêtes complexes, notamment les requêtes distribuées sur des données hétérogènes Simplification de la gestion des autorisations des utilisateurs Organisation des données pour les exporter vers d'autres applications
Définition de vues Création de vues Exemple : Vue de tables jointes Modification et suppression de vues Prévention des chaînes de propriété rompues Localisation des informations de définition de vue Masquage des définitions de vues
Création de vues Création d'une vue Restrictions relatives à la définition des vues Une vue ne peut pas comporter la clause ORDER BY Une vue ne peut pas faire référence à un mot clé INTO USE library GO CREATE VIEW dbo.UnpaidFinesView (Member, TotalUnpaidFines) AS SELECT member_no, (sum(fine_assessed-fine_paid)) FROM loanhist GROUP BY member_no HAVING SUM(fine_assessed-fine_paid) > 0 GO USE library GO CREATE VIEW dbo.UnpaidFinesView (Member, TotalUnpaidFines) AS SELECT member_no, (sum(fine_assessed-fine_paid)) FROM loanhist GROUP BY member_no HAVING SUM(fine_assessed-fine_paid) > 0 GO
Exemple : Vue de tables jointesmember_nomember_no lastnamelastname Thomas Funk Rudd Thomas Funk Ruddfirstnamefirstname Gary Clair Frank Clair Gary Clair Frank Clairmiddleinitialmiddleinitial ~~~ photographphotograph lastnamelastname Thomas Funk Thomas Funk firstnamefirstname Clair Frank Clair Frank birth date member juvenile BirthdayView USE library GO CREATE VIEW dbo.BirthdayView (Lastname, Firstname, [Birth Date]) AS SELECT lastname, firstname, CONVERT(char(8), birth_date, 2) FROM member JOIN juvenile ON member.member_no = juvenile.member_no USE library GO CREATE VIEW dbo.BirthdayView (Lastname, Firstname, [Birth Date]) AS SELECT lastname, firstname, CONVERT(char(8), birth_date, 2) FROM member JOIN juvenile ON member.member_no = juvenile.member_nomember_nomember_no adult_noadult_no birth_datebirth_date :00: :00: :00: :00:00.000
Modification et suppression de vues Modification de vues Conserve les autorisations attribuées La nouvelle instruction SELECT et ses options remplacent la définition existante Suppression de vues USE library GO ALTER VIEW dbo.TitleView AS SELECT title, authors, synopsis FROM title USE library GO ALTER VIEW dbo.TitleView AS SELECT title, authors, synopsis FROM title DROP VIEW UnpaidFinesView
GRANT SELECT ON view2 TO pierre SELECT * FROM maria.view2 Objets dépendants ayant différents propriétaires Exemple : Maria exécute : Pierre exécute : Prévention des chaînes de propriété rompues maria.view2 lucia.view1 lucia.table1
Localisation des informations de définition de vue Localisation des définitions de vues Non disponible si la vue a été créée avec l'option WITH ENCRYPTION Localisation des dépendances de vues Énumération des objets dont dépend la vue Énumération des objets qui dépendent d'une vue
Masquage des définitions de vues Utilisation de l'option WITH ENCRYPTION Conservation de toutes les entrées dans la table syscomments USE library GO 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 USE library GO 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
Modification de données à l'aide de vues Elles ne peuvent pas affecter plusieurs tables sous-jacentes Elles ne peuvent pas être effectuées sur certaines colonnes Elles peuvent produire des erreurs si elles affectent des colonnes auxquelles il n'est pas fait référence dans la vue Elles sont vérifiées si la clause WITH CHECK OPTION a été spécifiée
Performances USE library GO CREATE VIEW dbo.LoanableView AS SELECT * FROM CopywideView WHERE loanable = 'y' USE library GO CREATE VIEW dbo.LoanableView AS SELECT * FROM CopywideView WHERE loanable = 'y' titletitle 1 1 ~ ~ ~ ~ ~ ~ n n 2 2 ~ ~ ~ ~ ~ ~ n n 3 3 ~ ~ ~ ~ ~ ~ y y 4 4 ~ ~ ~ ~ ~ ~ y y 5 5 ~ ~ ~ ~ ~ ~ n n 6 6 ~ ~ ~ ~ ~ ~ y y CopywideViewCopywideView 1 1 ~ ~ ~ ~ ~ ~ n n 2 2 ~ ~ ~ ~ ~ ~ n n 3 3 ~ ~ ~ ~ ~ ~ y y 4 4 ~ ~ ~ ~ ~ ~ y y 5 5 ~ ~ ~ ~ ~ ~ n n 6 6 ~ ~ ~ ~ ~ ~ y y itemitem 1 1 ~ ~ ~ ~ ~ ~ n n 2 2 ~ ~ ~ ~ ~ ~ n n 3 3 ~ ~ ~ ~ ~ ~ y y 4 4 ~ ~ ~ ~ ~ ~ y y 5 5 ~ ~ ~ ~ ~ ~ n n 6 6 ~ ~ ~ ~ ~ ~ y y copycopy 1 1 ~ ~ ~ ~ ~ ~ n n 2 2 ~ ~ ~ ~ ~ ~ n n 3 3 ~ ~ ~ ~ ~ ~ y y 4 4 ~ ~ ~ ~ ~ ~ y y 5 5 ~ ~ ~ ~ ~ ~ n n 6 6 ~ ~ ~ ~ ~ ~ y y SELECT DISTINCT isbn, title, author FROM LoanableView WHERE translation = 'french' SELECT DISTINCT isbn, title, author FROM LoanableView WHERE translation = 'french'LoanableViewLoanableView 3 3 ~ ~ ~ ~ ~ ~ 4 4 ~ ~ ~ ~ ~ ~ 6 6 ~ ~ ~ ~ ~ ~ y y y y y y
Conseils pratiques Spécifiez dbo en tant que propriétaire de toutes les vues Vérifiez les relations de dépendance des objets avant de les supprimer Vérifiez les relations de dépendance des objets avant de les supprimer Évaluez soigneusement la nécessité de créer des vues basées sur des vues Évaluez soigneusement la nécessité de créer des vues basées sur des vues N'effacez jamais d'entrées dans la table syscomments Mettez au point une convention de dénomination standard
Atelier 11.1 : Implémentation de vues
Contrôle des acquis Présentation d'une vue Avantages liés aux vues Définition de vues Modification de données à l'aide de vues Performances