Les vues Une vue: c’est une relation virtuelle. Définie par: ses instances ne sont pas stockés physiquement; ils sont calculé à chaque invocation de la vue. Définie par: une requête portant sur des relations ou des vues existantes. le schéma de la vue est la liste des projections. Pourquoi ? -Permettre aux utilisateurs de visualiser la BD sous différents angles... -Fournir un mécanisme de sécurité, puisque vous pouvez restreindre l'accès des utilisateurs aux données dont ils ont besoin.
Gestion des vues Définition d’une vue : create view < nom vue> as < requête d'interrogation select > Suppression d’une vue : drop view < nom vue > Interrogation d’une vue: toujours possible identique à l'interrogation d’une relation de base. Mise à jour d’une vue -Non définie dans de nombreux cas -Syntaxe identique à la mise à jour d’une relation de base (si la mise à jour sur la vue est autorisée).
Les vues: exemples create view produit_tres_chers (numero-p,nom-p) create view produits-chers as select * from produit where pu > 100 create view produit_tres_chers (numero-p,nom-p) as select #prod,nom from produit_chers where pu < 300
Différence entre vue et relation temporaire (1)_fichiers create view Produits-chers as select * from Produit where pu > 100 -Relation temporaire select * from Produit into #temp where pu > 100 Produits-chers #temp select * from Produit into #temp where pu > 100* select * from Produits-chers #prod nom pu P1 P2 P3 Vis xy 100 200 300 #prod nom pu P2 P3 Vis xy 200 300 #prod nom pu P2 P3 Vis xy 200 300
Différence entre vue et relation temporaire (2)_fichiers -Mise à jour de la relation Produit insert into Produit values (p5, ’FL', 400) insert into Produit values (p6, ’MM', 99) -Interrogation: Produits-chers #temp select * from Produits-chers => select * from #temp => #prod nom pu P1 P2 P3 P5 p6 Vis Xy FL MM 100 200 300 400 99 #prod nom pu P2 P3 p5 Vis Xy FL 200 300 400- #prod nom pu P2 P3 Vis xy 200 300
Les index Définition d'un index Trois types d'index: -Les index facilitent la localisation des données par serveur SQL. Ils accélèrent l'extraction des données en indiquant au serveur SQL le lieu de stockage sur disque des données des colonnes de table. Une table peut comporter plusieurs index. Les index sont transparents pour l'utilisateur: aucune syntaxe SQL ne permet d'y faire référence lors d'une requête. Trois types d'index: -index primaire -index secondaire -index de groupement
Index Primaire -Construit sur une clé primaire dont les valeurs sont ordonnées dans la relation. Espace Index Espace Donnée
Index Secondaire -Construit sur un attribut (non forcement clé) dont les valeurs sont ordonnées dans la relation; -permet d’établir un ordre logique sur les n-uplets.
Création d’un index -La création d'index en SQL se fait grâce à la clause INDEX précédée de la clause CREATE. Elle permet de définir un index désigné par son nom, portant sur certains champs d'une table. La syntaxe est la suivante: CREATE [UNIQUE] INDEX Nom_de_l_indexON Nom_de_la_table(Nom_de_champ [ASC/DESC], ...) -L'option UNIQUE permet de définir la présence ou non de doublons pour les valeurs de la colonne -Les options ASC/DESC permettent de définir un ordre de classement des valeurs présentes dans la colonne
Gestion des permissions -Plusieurs personnes peuvent travailler simultanément sur une base de données -Ainsi, il est possible de définir des permissions pour chaque personne en leur octroyant un mot de passe -Cette tâche incombe à l'administrateur de la base de données : Définir les besoins de chaque utilisateurs. Appliquer chaque besoin à la base de donnée sous forme de permissions -Le langage SQL permet d'effectuer ces opérations grâce à deux clauses: GRANT permet d'accorder des droits à un (parfois plusieurs sur certains SGBD) utilisateur REVOKE permet de retirer des droits à un (ou plusieurs sur certains SGBD) utilisateur
Gestion des permissions(2) -Les privilèges : DELETE: privilège de supprimer les données d'une table INSERT: privilège d'ajouter des données à une table SELECT: privilège d'accèder aux données d'une table UPDATE: privilège de mettre à jour les données d'une table -L'unique personne pouvant accorder ou retirer des droits sur un élément (table, vue ou index) est la personne qui l'a créé. Toutefois, il lui est possible de transmettre ce droit d'accorder/retirer des droits, auquel cas la personne recevant cet "honneur" aura le droit de transmettre ce "pouvoir" sur ces éléments.
L'attribution de permissions La clause GRANT permet d'attribuer des permissions à un ou plusieurs utilisateurs sur un ou plusieurs éléments de la base de données. La syntaxe de cette clause est la suivante: GRANT Liste_de_permissions ON Liste_d_objets TO Liste_d_utilisateurs [WITH GRANT OPTION]; L'option WITH GRANT OPTION permet de définir si l'utilisateur peut lui-même accorder à un autre utilisateur les permissions qu'on lui accorde sur les éléments Le mot clé PUBLIC en lieu et place de la liste d'utilisateurs permet d'accorder les privilèges sur le ou les objets à l'ensemble des utilisateurs Le mot clé ALL en lieu et place de la liste de permissions permet d'accorder tous les privilèges aux utilisateurs présents dans la liste .
L'attribution de permissions(2) En précisant entre parenthèses un nom de colonne pour un privilège, il est possible de limiter le privilège à la colonne (ou la liste de colonnes) entre parenthèses, par exemple: GRANT UPDATE(Nom,Prenom) ON Etudiants TO Jerome,Francois,Georges WITH GRANT OPTION; L'option WITH GRANT OPTION autorise donc plusieurs utilisateurs à accorder des permissions à un même utilisateur, il y a donc des règles à respecter lors du retraits des permissions à un utilisateur...
La révocation de permissions La clause REVOKE permet de retirer des permissions à un ou plusieurs utilisateurs sur un ou plusieurs éléments de la base de données. La syntaxe de cette clause est la suivante: REVOKE [GRANT OPTION FOR] Liste_de_permissions ON Liste_d_objets FROM Liste_d_utilisateurs; L'option GRANT OPTION FOR permet de supprimer le droit d'un utilisateur à accorder des permissions à un autre utilisateur. Exemple: [GRANT OPTION FOR] UPDATE (Nom,Prenom) ON Etudiants FROM PUBLIC - La clause REVOKE étant implémentée différemment selon les SGBDR, il s'agit de consulter la documentation de celui-ci...