Académique Documents
Professionnel Documents
Culture Documents
Lotfi NAJDI
Année Universitaire 2020 / 2021
Licence Professionnelle Génie Informatique
Faculté Polydisciplinaire de Taroudant
Utilisateur et Schéma
L’accès à la base de données s’effectue via une procédure d’identification sous le nom d’un
Un schéma est un ensemble d’objets regroupés pour le compte d’un seul utilisateur de la base de
données.
Le schéma fait partie des propriétés attribuées à un utilisateur ainsi que le TABLESPACE par
défaut dans lequel seront stockés implicitement les objets qui seront créés par l’utilisateur et les
Schéma de Jean
Tables
Vues
Jean
Index …
Objets de la base de données
En plus des tables, une base de données contient plusieurs autres types d’objets.
Object Description
• Avec les vues, vous pouvez montrer ou masquer les données contenues dans les tables.
• Vous pouvez utiliser les séquences pour générer des nombres uniques.
• Si vous souhaitez améliorer la performance des requêtes d'interrogation des données, vous
• Avec les synonymes , vous pouvez fournir des noms alternatifs pour les objets afin de
Table EMPLOYEES
Qu'est-ce qu'une vue ?
Représentation logique basée sur une table , plusieurs tables ou bien autres vues.
Une vue ne contient pas de données, mais peut être considérée comme une fenêtre à travers
Les tables sur lesquelles une vue est basée sont appelées tables de base.
La vue est stockée sous la forme d'une instruction SELECT dans le dictionnaire de données
d’Oracle.
Intérêt des vues
• Restreindre l’accès aux données: les vues limitent l'accès aux données car elles affichent les
colonnes sélectionnées à partir d’une table. Par exemple cela permet de cacher certaines colonnes
à un ou à plusieurs utilisateurs.
• Simplifier les requêtes complexes : Les vues peuvent être utilisées pour stocker des requêtes qui
sont plus ou moins complexes afin qu’ils soient utilisées comme s'il s'agissait d'une table.
• Par exemple, les vues peuvent être utilisées pour interroger des données provenant de plusieurs
tables sans que l'utilisateur ne sache comment écrire une requête de jointure.
Intérêt des vues
• Permettre l’indépendance des données : les vues assurent l'indépendance logique des données
pour les utilisateurs et les programmes. Si on apporte des modifications à la requête qui a donné
lieu à la vue, l’interface d’accès (dans ce cas, la vue ne sera pas affectée) .
• Présenter des vues différentes pour les mêmes données: les vues permettent à des groupes
La différence fondamentale entre ces deux types de vues réside dans la possibilité d’utilisation des
instructions DML ne sont pas toujours autorisés sur les vues complexes.
Créer une vue
Pour créer une vue , on va incorporer une sous requête dans l’instruction CREATE VIEW :
AS subquery ;
DESCRIBE empvu80
Créer une vue
FROM employees
SELECT *
FROM salvu50;
Créer une vue
syntaxe générale
AS subquery
Les alias des colonnes de la clause CREATE OR REPLACE VIEW, sont spécifiés dans le même ordre que les
colonnes de la sous-requête.
Créer une vue complexe
Exemple de vue complexe qui contient des fonctions de groupement et qui affiche les données issues
de plus d’une table.
GROUP BY d.department_name;
Interroger une vue complexe
L’affichage du contenu de la vue se fait à travers une instruction SELECT de manière très simplifiée .
les instructions DML peuvent être généralement effectuée sur des vues simples.
La suppression d’une ligne à travers une vue n’est pas permise dans les cas suivants :
• Fonctions de groupement
• Mot-clé DISTINCT
• Pseudo-colonne ROWNUM
Règles sur les instructions DML et les vues
La modification des données d’une vue n’est pas permise si la vue contient :
• Fonctions de groupement
• Mot-clé DISTINCT
• Pseudo-colonne ROWNUM
L’insertion des données par le biais d'une vue, n’est pas autorisée si celle-ci comprend :
• Fonctions de groupement
• Mot-clé DISTINCT
• Pseudo-colonne ROWNUM
• Colonnes NOT NULL contenues dans les tables de base qui ne sont pas sélectionnées par la vue
OPTION WITH CHECK
Cette option permet de s’assurer que les opérations DML effectuées soient conformes au domaine
de la vue.
CREATE OR REPLACE VIEW empvu20 AS SELECT *
FROM employees
WHERE department_id = 20
• Les instructions DML sur les vues peuvent être interdites, en spécifiant l’option WITH READ ONLY
• Dans ce cas le serveur oracle refuse toute tentative d'effectuer une opération DML sur une ligne
Exemple de tentative de suppression dune ligne à partir de la vue avec une contrainte WITH READ ONLY
La tentative d'insertion ou de modification d’une ligne en utilisant la vue entraîne la même erreur.
Suppression d'une vue
La suppression d’une vue n’entraine pas la suppression des données au niveau des tables de bases.
Les valeurs générées par la séquence dépendent des paramètres spécifiés lors de la création de la
séquence.
Les séquences sont des objets de base de données Oracle, au même titre que les tables, les vues ..etc.
• Générer les valeurs d’une clé primaire (utilisation la plus commune des séquences )
Réduire le code nécessaire pour écrire des fonctions générant une séquence au niveau des
applications
Accélérer l'efficacité de l'accès aux valeurs des séquences lorsqu'elles sont mises en cache dans
la mémoire
Cette Expression SQL permet de définir une séquence qui va générer automatiquement une suite de
nombres.
Créer une séquence
Créer une séquence appelée DEPT_DEPTID_SEQ à utiliser pour la clé primaire de la table DEPARTMENTS .
Après la création d’une séquence , on peut l'interroger à travers l'utilisation des deux pseudo-colonnes
NEXTVAL and CURRVAL (les pseudo-colonnes sont manipulées comme les colonnes de table, mais ils ne le
sont pas).
• NEXTVAL renvoie la prochaine valeur disponible de la séquence (après incrémentation ) . Elle renvoie
• NEXTVAL doit être appelée lors de la première utilisation d'une séquence afin de l’initialiser, il faut
Exemple d’utilisation d’une sequence pour insertion d’un nouveau département appelé "Support"
avec location_id égale à 2500 :
Select dept_deptid_seq.CURRVAL
FROM dual;
Utilisation d'une séquence
Exemple d’utilisation d’une séquence pour l’insertion de plusieurs lignes à l’aide de l’instruction
INSERT (par exemple les nouveaux recrus pour le nouveau département )
EMPLOYEE_SEQ est une séquence créée pour générer de nouveaux numéros pour
employee_id .
Mettre les valeurs en mémoire cache
• Consiste à demander au serveur Oracle de placer en mémoire cache un certain nombre de valeurs de la
séquence.
• La mise en cache des valeurs des séquences en mémoire permet d'optimiser l'utilisation des séquences
Pour modifier le pas d'incrémentation, la valeur maximale, la valeur minimale, l'option de cycle ou l'option de
cache :
INCREMENT BY 20
MAXVALUE 999999
NOCACHE NOCYCLE;
Si la limite MAXVALUE de la séquence est atteinte , aucune valeur supplémentaire de la séquence ne peut être
attribuée et erreur sera renvoyée.
Pour continuer à utiliser la séquence, on peut la modifier en utilisant l'instruction ALTER SEQUENCE.
Modifier une séquence
La sequence peut être modifiée par le propriétaire de la séquence ou par tout utilisateur possédant le
privilège ALTER pour la séquence.
Seuls les futurs numéros générés par la séquence seront concernés par la modification de la séquence.
La séquence doit être supprimée et recréée pour recommencer la séquence à partir d’un autre numéro.
Certaines validations sont effectuées lors de la modification des séquences. Par exemple, une nouvelle
MAXVALUE qui est inférieure au numéro de séquence actuel ne peut pas être attribuée.
Les indexes sont utilisés sans réécrire les requêtes, dans ce cas les résultats demeurent les mêmes, mais
Les index sont logiquement et physiquement indépendants des tables qu'ils permettent d’indexer.
C.-à-d. qu'ils peuvent être créés ou supprimés à tout moment, et n'ont aucun effet sur les tables
associées.
Intérêt des index
Réduire les I/O des disques en utilisant une méthode d'accès par chemin rapide pour localiser rapidement
les données
Si aucun index n’est défini sur la colonne, alors un balayage complet (Full scan ) de la table est nécessaire
avant de renvoyer les résultats .
Types d’index
Unique index : le serveur Oracle crée automatiquement cet index lorsque vous définissez une
colonne dans un tableau qui correspond à une CLÉ PRIMAIRE PRIMARY KEY ou une contrainte
UNIQUE. Dans ce cas l’indexe porte le même nom qui a été donné à la contrainte.
Nonunique index : Il s'agit d'un index que l’utilisateur peut définir sur les colonnes, de manière
last_name VARCHAR2(25));
FROM USER_INDEXES
WHERE TABLE_NAME = 'EMP_UNNAMED_INDEX';
Les types d’index
Oracle propose plusieurs schémas d'indexation, qui offrent des fonctionnalités de performance
complémentaires.
• type d'index de base de données le plus courant (Index par défaut dans oracle)
• Un index B-tree est une liste ordonnée de valeurs divisée en plages de valeurs.
• En associant une clé à une ligne ou à une plage de lignes, les arbres B-trees fournissent
• B-tree est recommandé dans le cas des colonnes avec high-cardinality (nombreuses valeurs
Oracle propose plusieurs schémas d'indexation, qui offrent des fonctionnalités de performance
2. Bitmap :
• recommandé pour environnements d'entrepôt de données (data warehouse) avec des colonnes à
• Bitmap n’est pas approprié pour les bases de données transactionnelles (OLTP) où les lignes sont
ON employees(last_name);
FROM USER_INDEXES
La modification d’indexes n’et pas permises , pour modifier un index, on doit le supprimer puis le recréer.
Pour supprimer un index, vous devez être le propriétaire de l'index ou avoir le privilège DROP ANY INDEX.
Recommandations pour la création d'un index
Avoir beaucoup d'index sur une table ne permet pas forcément d'obtenir des requêtes plus rapides.
Chaque opération DML validée sur une table avec des index signifie que les index doivent être mis à
jour.
Par conséquent, la création d'index est recommandée dans les cas suivants :
• Une colonne contient un large éventail de valeurs ou bien un grand nombre de valeurs NULL
• Une ou plusieurs colonnes sont fréquemment utilisées ensemble dans une clause WHERE ou bien une
condition de jointure .
• La table est large et la plupart des requêtes devraient permettre de retourner moins de 2 à 4 % des
lignes.
Ne pas créer d'index pour les colonnes qui ne sont pas souvent utilisées pour définir une condition dans
la requête
Les synonymes
Les synonymes
Un synonyme est un alias ou un nom convivial pour les objets de base de données (tables, vues..
etc.)
Par exemple, la création d’un synonyme permet de donner un autre nom à une table et pouvoir
La création d’ un synonyme pour un objet dans un schéma facilite l’accès à cet objet en utilisant le
synonyme au niveau des instructions SQL.
L’utilisation des synonymes constitue un moyen pratique permettant de réduire la complexité des
instructions SQL pour les utilisateurs de bases de données.
Les synonymes permettent de renommer ou de déplacer les objets sous-jacents. Dans ce cas, seul le
synonyme doit être redéfini et les applications basées sur le synonyme continuent à fonctionner sans
aucune modification.
Les synonymes peuvent fournir un niveau de sécurité en masquant le nom et le propriétaire d'un
objet.
Créer un synonyme
Simplifier l'accès aux objets en créant un synonyme (un autre nom pour un objet).
• Créer une référence plus facile à une table qui appartient à un autre utilisateur
FOR object;
Un synonyme public est la propriété du groupe spécial d'utilisateurs nommé PUBLIC et est
Un synonyme privé est contenu dans le schéma d'un utilisateur spécifique et n'est accessible
que par cet 'utilisateur et par les utilisateurs ayant droit d’accès pour l'objet sous-jacent.
Lorsqu’on accorde des privilèges sur un synonyme, on accorde en réalité des privilèges sur
l'objet sous-jacent, et le synonyme agit juste comme un alias de l'objet dans une instruction
GRANT.
Créer et supprimer un synonyme
L'administrateur de la base de données (DBA) peut créer un synonyme public qui est accessible à
tous les utilisateurs.
L'exemple suivant permet de crée un synonyme public nommé DEPT pour la table DEPARTMENTS de HR:
FOR HR.departments;