Objectifs du cours
- Comprendre l'importance de l'indépendance des niveaux dans une base de données
- Maîtriser l'utilisation des vues pour gérer les accès et renforcer la confidentialité
- Explorer le rôle du dictionnaire de données dans la gestion des niveaux
Rappel du problème
- La situation :
- Il peut être nécessaire de réorganiser certaines parties de l'application pour cause de :
- Il faut :
- Pouvoir le faire sans changer son comportement
- « modularité » entre les différents niveaux de l'application (analogie avec l'esprit objet)
Les trois niveaux des applications de bases de données
- « Logique » : tables relationnelles
- « Physique » : détails de leur organisation physique sur le disque
- « Externe » : programmes accédant aux tables relationnelles
- Norme ANSI 1978
Exemple d'architecture
Visualisation de l'organisation des trois niveaux et leurs relations
Motivation : Exemple 1 - Performances
- Les performances d'une requête sont influencées par le stockage physique des données
- Possibilité de modifier cette organisation sans toucher aux tables relationnelles
- Le niveau logique doit être séparé du niveau physique pour permettre des optimisations indépendantes
Motivation : Exemple 2 - Évolutivité
- Les fonctionnalités évoluent, nécessitant des modifications de tables
- Les programmes existants doivent fonctionner de la même manière malgré les changements
- Le niveau externe doit rester indépendant du niveau logique
Outils fournis par le SGBD
- Vues : facilitent l'indépendance entre niveaux externe et logique
- Dictionnaire de données : maintient l'indépendance entre niveaux logique et physique
Exemple d'utilisation d'une vue
Problèmes avec la requête directe
- Confort : Toto maîtrise mal SQL et les tables de l'application
- Grandes quantités : la requête est réexécutée à chaque fois
- Confidentialité : accès non nécessaire à certaines colonnes ou lignes
- Indépendance des niveaux : requête échoue si réorganisation des tables
Principe de solution : Alias
- Le programmeur associe un alias à la requête
- Toto utilise uniquement cet alias
Définition des vues
- Une vue est une table virtuelle dont le contenu est défini par une requête
- Son contenu peut être :
- Recalculé à chaque appel
- Matérialisé (et maintenu par le système)
Création d'une vue
create view billetsainttrop as
select client
from billet
where destination like 'St Trop%'
(Matérialisation ou non : hors programme)
Remarque :
revoke select on billet from toto;
Conséquences de l'utilisation des vues
Avantages supplémentaires des vues
- Maintenance :
- Factorisation des requêtes dans l'application via « appel à la vue »
- Pas de duplication de code
Vocabulaire clé
- Le programme du niveau externe est indépendant du niveau logique : les mises à jour du niveau logique ne
l'affectent pas
- Le programme du niveau externe satisfait la propriété d'indépendance par rapport au niveau logique
Remarque sur les mises à jour du schéma
L'indépendance des niveaux
- L'indépendance des niveaux est possible si, et seulement si, la mise à jour est SPI
Règles pour les mises à jour des vues
Résumé : Vues
- Le concept de vue permet de gérer :
- Indépendance des niveaux
- Confidentialité
- Grandes quantités
- Facilite le confort d'utilisation et la maintenance
Le dictionnaire de données
- Utilisé pour :
- Indépendance des niveaux : traduction entre logique et physique
- Répertorier les informations sur les objets de la base
- Stocké dans des tables système accessibles via des vues
Exemple de requêtes sur le dictionnaire de données
Accéder aux tables système pour obtenir des informations sur la base
select * from dictionary;
select table_name from user_tables;
select table_name from all_tables where owner = 'PHPARIS';
Indépendance du niveau physique
- Certaines mises à jour n'obligent pas le système à réorganiser le disque
- Exemple : ajout ou suppression d'une colonne d'une table
- Assuré par le dictionnaire de données
Indépendance du niveau logique
- Le niveau logique (tables) ne dépend pas du niveau externe (vues)
Récapitulatif
- Indépendance des niveaux :
- Indépendance du niveau externe par rapport aux mises à jour du schéma logique : assurée par les vues
- Indépendance du niveau logique par rapport aux mises à jour du niveau physique : assurée par le
dictionnaire de données
Compétences à acquérir
- Analyse :
- Détecter et illustrer les occurrences d'indépendance des niveaux dans une application
- Décrire le comportement d'une application en présence de vues
- Construction :
- Gérer l'indépendance des niveaux dans une application
- Utiliser le dictionnaire de données pour récupérer des informations essentielles