Base de données II

Architecture
générale d'un
SGBD Relationnel
I-
I
Quelques définitions
5
Rappels des objectifs d'un SGBDR
6
Architecture d'un SGBDR
7
Fonctions d'un SGBDR
8
Catalogues
12
Rappel de la terminologie du modèle relationnel
13
Exemple : Base de données approvisionnement
14
La plupart des recherches de ces 30 dernières années se sont basées sur l'approche
relationnelle. Elle représente aujourd'hui la tendance principale du marché. La
raison est que le modèle relationnel est fondé sur des bases mathématiques.
Un système relationnel est un système dans lequel :
1. l'utilisateur perçoit les données comme des tables,
2. les opérateurs génèrent de nouvelles tables résultats à partir des tables
existantes.
A. Quelques définitions
Définition
Un SGBD (Système de Gestion de Base de données) est un logiciel qui permet la
création et la manipulation d'une base de données.
Définition
Un SGBDR (SGBD Relationnel) est un SGBD dont la base de données est organisée
sous forme de tables relationnelles.
Exemple

SYSTEM-R de IBM (1er SGBDR (1975) prouvant la faisabilité du modèle
relationnel)
Nadia Abdat & Nazih Selmoune
5
Architecture générale d'un SGBD Relationnel


INGRES de Univ Calif BERKELEY (1976)
ORACLE d'oracle corp. (V1 prototype en assembleur années 70, V2
réécriture en C en 1980, V5 (1985), V6 (1990), V7 (1994) ...Aujourd'hui
oracle 11g.
Définition
Une base de données (B.D.) est une collection de données persistantes (non
volatiles) et pertinentes (nécessaires) utilisées par des systèmes d'application de
certaines organisations.
Remarque
Une organisation peut être un simple individu avec une base de données privée (un
médecin, un notaire, ...) ou une société avec une base de données partagée
importante (une banque, une université, un hôpital,...).
B. Rappels des objectifs d'un SGBDR
Indépendance physique
Le niveau physique peut être modifié indépendamment du niveau conceptuel. Cela
signifie que tous les aspects matériels de la base de données n'apparaissent pas
pour l'utilisateur, il s'agit simplement d'une structure transparente de
représentation des informations.
Indépendance logique
Le niveau conceptuel doit pouvoir être modifié sans remettre en cause le niveau
physique, c'est-à-dire que l'administrateur de la base de données doit pouvoir la
faire évoluer sans que cela gêne les utilisateurs.
Évolution de la BD
Le système doit permettre l'ajout, la suppression et la modification des tuples, la
modification des valeurs des attributs Ainsi que le changement du schéma de la BD
(ajout suppression de tables, ajout :suppression d'attributs d'une table).
Cohérence des données
Les données doivent être cohérentes entre elles, de plus lorsque des éléments font
référence à d'autres, ces derniers doivent être présents. Ceci est possible grâce à la
définition de contraintes d'intégrité.
Limitation de la redondance
Le SGBD doit pouvoir éviter dans la mesure du possible des informations
redondantes, afin d'éviter d'une part un gaspillage d'espace mémoire mais aussi
des erreurs.
Efficacité des accès aux données
Le système doit pouvoir fournir les réponses aux requêtes le plus rapidement
possible, cela implique des algorithmes de recherche rapides.
Partageabilité
Le SGBD doit permettre l'accès simultané à la base de données par plusieurs
6
Nadia Abdat & Nazih Selmoune
Architecture générale d'un SGBD Relationnel
utilisateurs.
Confidentialité
Le SGBD doit présenter des mécanismes permettant de gérer les droits d'accès aux
données selon les utilisateurs.
Sécurité
La BD doit être sécurisée contre les pannes.
C. Architecture d'un SGBDR
Architecture fonctionnelle d'un SGBDR
Le moteur d'évaluation de requête
Une requête est généralement analysée selon les étapes suivantes :
 Analyse (évaluateur de requête): La requête est vérifiée syntaxiquement et
sémantiquement puis elle est transformée en arbre algébrique où les
opérateurs sont les nœuds et les opérandes les feuilles
 Optimisation (optimiseur): Une séquence SQL peut donner lieu à plusieurs
Nadia Abdat & Nazih Selmoune
7
Architecture générale d'un SGBD Relationnel

interprétations pouvant conduire à différents temps d'exécution. D'où la
nécessité de trouver des techniques qui permettent de trouver le meilleur
ordre d'application des opérateurs, les meilleurs chemins d'accès aux
relations. Ces techniques qui améliorent les performances des systèmes se
retrouvent au niveau de l'optimiseur.
Génération d'un plan d'exécution (exécuteur de plan): L'exécuteur de plan
fournit le résultat de la requête en exécutant les opérateurs contenus dans
l'arborescence à l'aide de procédure associée à ces opérateurs.
Le gestionnaire des accès concurrents et le gestionnaire de panne
Ils concernent un thème plus général, à savoir la gestion de transactions. Ils offrent
des mécanismes assurant la sécurité de la base de données utilisée par plusieurs
utilisateurs en parallèle.
Le gestionnaire d'espace physique
Il permet une organisation efficace des données et un accès rapide grâce à
l'implémentation de méthodes d'accès appropriées.
Le Catalogue système ou Méta-base
Appelé également dictionnaire de données, contient la description des données de
la base (relations, index, vues...), ainsi que des relations systèmes.
1. Modes d'interrogation d'une base de données
Mode Interactif (à travers une interface SQL)
L'utilisateur interroge directement la base de données par des requêtes en langage
SQL, directement interprétables. Un plan d'exécution de la requête est généré en
passant d'abord par les phases d'analyse syntaxique et d'optimisation
Mode programmé
Les ordres SQL sont incorporés à un programme d'application écrit en langage de
programmation PL/1, C, ... appelés langages hôtes. Dans ce cas la démarche
nécessite une approche de précompilation. Le précompilateur est un processeur qui
regroupe les instructions SQL du programme d'application dans un module de
requêtes de la BD, et les remplace dans le programme initial par des appels
(CALLs) du langage hôte à un superviseur d'exécution qui surveille les programmes
SQL.
D. Fonctions d'un SGBDR
Parmi les fonctionnalités d'un SGBDR nous citons :
1. Création / modification
Nous nus intéressons à la création de tables, la modification de la structure d'une
table, et la mise à jour des données.
a) Création d'une table
La structure de données primaire dans les systèmes relationnels est la relation de
8
Nadia Abdat & Nazih Selmoune
Architecture générale d'un SGBD Relationnel
base. La forme générale de la requête permettant la création d'une relation ou
table dans SQL est la suivante
Syntaxe
CREATE
TABLE
<nom
de
table>
(définition
d'attribut
[,
définition
d'attribut]...) ; //Où définition d'attribut est : <nom-attribut (type-donnée [, NOT
NULL])>
Remarque
Les principaux types de données prédéfinis (dans Oracle) sont :
 CHAR (n) chaîne de longueur fixe de n car (par défaut 1 car. Au maximum
255 car)
 VARCHAR2 (n) chaîne de longueur variable (par défaut 1car. Au maximum
2000 car)
 DATE format par défaut jj/mm/aa
 Number(x[,y]) x nombre total de chiffres et y nombre de chiffres après la
virgule
Exemple
écrira
: Pour créer la base de données approvisionnement, on
CREATE TABLE FOURNISSEUR (NF CHAR(5), NOM CHAR(20), CODE NUMBER(5),
VILLE CHAR (15)) ;
CREATE TABLE PIECE (NP CHAR(5), NOM CHAR(20), MATERIAU CHAR(6), POIDS
NUMBER(3), VILLE CHAR (15)) ;
CREATE TABLE FOURNITURE (NF CHAR (5), NP CHAR(5), QTE NUMBER(5)) ;
Remarque
Les ordres CREATE TABLE peuvent être émis à tout moment dans la vie de la base
et non pas comme les systèmes classiques seulement à la phase de création du
module ou du schéma de la base.
Remarque
Pour les clés primaires, il est recommandé de les définir en ajoutant PRIMARY KEY
dès la création de table car les données sont stockées selon l'ordre de cette clé.
Exemple
CREATE TABLE FOURNISSEUR( NF CHAR(5) PRIMARY KEY, NOM CHAR(20),
CODE NUMBER(5), VILLE CHAR (15)) ;
b) Modification de schéma
Une autre possibilité des SGBD relationnels est de modifier à tout moment le
schéma des relations existantes.
Syntaxe : Supprimer une relation par la commande :
DROP TABLE <nom table> ;
Nadia Abdat & Nazih Selmoune
9
Architecture générale d'un SGBD Relationnel
Syntaxe : • ajouter un nouvel attribut afin de prendre en compte
une information qui n'avait pas été prévue au départ
ALTER TABLE <nom table> ADD FIELD (< nom attribut> type de donnée) ;
Exemple
: Ajouter une colonne DATEF à la relation FOURNITURE
ALTER TABLE FOURNITURE ADD FIELD (DATEF Date);
Syntaxe : Modifier une colonne existante
ALTER TABLE <nom table> MODIFY FIELD (< nom attribut> type de donnée) ;
Exemple
: Modifier la taille du nom dans la relation fournisseur
ALTER TABLE Fournisseur MODIFY FIELD NOM (CHAR (40)) ;
c) Mise à jour des données
Syntaxe : Après la création des tables, l'utilisateur peut maintenant
procéder au chargement des données en utilisant l'instruction
INSERT de SQL. Pour insérer une pièce (par exemple, la pièce P7 qui
est un clou) dans la relation PIECE
INSERT INTO PIECE (NP, NOM, MATERIAU, POIDS, VILLE) values (‘P7', ‘clou',?,?,?);
Remarque
Les trois derniers champs de la pièce insérée sont indéfinis.
On peut également copier plusieurs lignes à partir d'une autre relation.
Exemple
INSERT INTO FOURNISSEUR-TUNIS (NF, NOM)
SELECT NF, NOM FROM FOURNISSEUR WHERE VILLE = ‘Tunis' ;
Remarque
Le nombre de colonnes et le type des colonnes dans le INSERT doivent
correspondre à ceux du résultat du SELECT
Syntaxe : Modification de valeurs
UPDATE <nom de table>
SET <nom attribut1> = nouvelle valeur, [nom attribut2 = nouvelle valeur, ...]
WHERE <prédicat> ;
Exemple
Alger
: Pour ajouter 20 aux codes des fournisseurs localisés à
UPDATE FOURNISSEUR SET CODE = CODE + 20
WHERE VILLE = ‘ALGER' ;
10
Nadia Abdat & Nazih Selmoune
Architecture générale d'un SGBD Relationnel
Syntaxe : Pour effacer des n-uplets d'une relation nous utilisons la
commande :
DELETE FROM <nom table> [WHERE <prédicat>] ;
Remarque
L'instruction efface les tuples qui satisfont le prédicat.
Exemple : Pour exprimer que les fournisseurs d'Alger ne
fournissent plus de pièces
DELETE FROM FOURNITURE
WHERE NF IN (SELECT NF FROM FOURNISSEUR WHERE VILLE = ‘ALGER');
2. Chemins d'accès ou INDEX
Reprenons l'exemple de la base de données approvisionnement. Son schéma
relationnel, tel qu'il apparaît dans l'exemple est le seul que doivent connaître les
usagers ‘normaux' de la base de données gérée par le SGBD. Il correspond à
l'ensemble de tables de valeurs, sans description du stockage physique des n-uplets
ni des chemins d'accès qu'il faut utiliser pour retrouver les n-uplets d'une relation
dans un ordre donné ou pour aller d'une relation à une autre. Une requête
relationnelle ne précise pas les chemins d'accès aux informations ni l'ordre dans
lequel les opérateurs de produit s'appliquent. C'est à l'administrateur de demander
au système la création des chemins d'accès sur les relations stockées et au système
de choisir, grâce à l'optimiseur, parmi les chemins disponibles celui qui est le plus
adéquat (indépendance physique).
Remarque
Un chemin d'accès défini sur une relation est appelé INDEX
Définition
Un index est un arrangement des tuples d'une relation en fonction des valeurs d'un
attribut ou d'un groupe d'attributs.
a) On distingue deux types d'index : index primaire et index
secondaire
L'index primaire est défini sur la clé de la relation : à une valeur de la clé, la
fonction index ramènera un tuple. L'index primaire fournit un accès direct aux
tuples d'une relation, c'est-à-dire que l'ordre des tuples sur la clé coïncide avec
l'ordre physique.
L'index secondaire peut être défini sur des attributs non clé : à une valeur de
l'attribut de l'index, celui-ci ramènera un ou plusieurs tuples. L'index secondaire est
un réarrangement logique des tuples d'une relation en fonction des valeurs d'un
attribut ou groupe d'attributs.
b) La commande de création d'un index est de la forme
Syntaxe
CREATE [UNIQUE] INDEX <nomIndex> ON < nomRelation> (attribut [ordre][,
Nadia Abdat & Nazih Selmoune
11
Architecture générale d'un SGBD Relationnel
attribut [ordre]..] );
Où ordre est soit ASC ou DESC et s'il n'est pas spécifié, l'ordre ASC est pris par
défaut.
L'option UNIQUE permet d'une part de définir qu'un attribut (ou un groupe
d'attributs) est clé discriminante de la relation et d'autre part de fournir un chemin
d'accès direct aux n-uplets ayant une valeur de clé donnée.
Exemple
données
: Pour définir les index primaire de notre base de
CREATE UNIQUE INDEX XF ON FOURNISSEUR (NF) ;
CREATE UNIQUE INDEX XP ON PIECE (NP) ;
CREATE UNIQUE INDEX XFP ON FOURNITURE (NF, NP) ;
Exemple : La création d'un index secondaire selon la ville des
fournisseurs serait :
CREATE INDEX XV ON FOURNISSEUR (VILLE) ;
Syntaxe : L'instruction de suppression d'un index d'une relation est
DROP INDEX <nom index> ;
Remarque
En permettant l'exécution à tout moment des instructions CREATE INDEX et DROP
INDEX le SGBD assure l'indépendance des programmes vis à vis des chemins
d'accès (indépendance physique).
E. Catalogues
Du point de vue d'un SGBD relationnel, une base de données comporte des
relations de la base et des vues. De plus pour chaque relation stockée, il peut
exister un ou plusieurs chemins d'accès (index). La manière la plus naturelle pour
un SGBD relationnel de conserver toutes ces informations est de les stocker dans
des catalogues qui sont eux mêmes des relations stockées dans la base ; le SGBD
permet aux usagers de consulter, grâce au langage d'interrogation, les informations
relatives à la description de la base.
Relation
Ce catalogue contient un n-uplet pour chaque relation de la base de données y
compris lui même et les autres catalogues. On y trouve des informations sur le nom
de la relation, son créateur, son degré, certaines statistiques sur son contenu etc....
Attribut
pour chaque relation de la base décrite dans le catalogue Relation, le catalogue
Attribut comporte autant de lignes qu'il y a d'attributs dans la relation. Chaque nuplets décrit un attribut : son nom, son type, sa longueur, etc....
Index
On y trouve la description des chemins d'accès définis sur les relations de la base.
Pour chaque index, par exemple, on y trouve la relation et les constituants
12
Nadia Abdat & Nazih Selmoune
Architecture générale d'un SGBD Relationnel
concernés et s'il s'agit d'un index primaire ou secondaire etc....
Remarque
D'autres catalogues
contraintes..)
existent
relatifs
à
d'autres
aspects
(vue,
autorisation,
Exemple
Chaque tuple est un descripteur de
relation qui peut être de 3 types :
Base, Système, ou Vue.
Image 2 Catalogue Attribut
Image 1 Catalogue Relation
Chaque tuple décrit un attribut d'une
relation système, de base ou d'une
vue
Chaque tuple décrit un index créé sur
une relations de base ou système
Image 3 Catalogue Index
Remarque
Parmi les catalogues dans Oracle 11: USER_ALL_TABLES, USER_CONSTRAINTS etc.
Complément
: D'autres fonctions du SGBDR existent telles que
• Assurer la cohérence des informations stockées par rapport à leur signification :
contrainte d'intégrité ou intégrité interne,
• Assurer l'accès concurrent tout en gardant la cohérence de la base :
synchronisation des accès concurrents,
• Assurer la sûreté de fonctionnement en cas de panne : mécanisme de reprise,
• Assurer la sûreté d'utilisation : droit d'accès....
Ces dernières seront étudiées dans les chapitres suivants
F. Rappel de la terminologie du modèle relationnel
Définition : Scalaire
C'est la plus petite unité sémantique de données (valeur atomique) telle que la
valeur du numéro d'un fournisseur, du poids d'une pièce...
Définition : Domaine
Ensemble donné de valeurs scalaires, toutes de même type. Par exemple, le
domaine des numéros des fournisseurs, le domaine des villes ...
Définition : Attribut
Champ définissant une propriété. Il doit être défini sur exactement un seul domaine
: les valeurs des attributs doivent être prises dans ce domaine. Par exemple,
Nadia Abdat & Nazih Selmoune
13
Architecture générale d'un SGBD Relationnel
l'attribut NF dans la relation Fournisseur et l'attribut NF dans la relation Fourniture,
sont tous deux définis sur le domaine des numéros de fournisseur.
Remarque
Dans les langages de programmation, on défini un domaine par un type de
données.
Définition : Relation
Une relation R, sur un ensemble de domaines D1,D2,..., Dn (non nécessairement
distincts) est constituée de deux parties, un en-tête (schéma de la relation) et un
corps (ensemble de lignes).
L'en-tête est un ensemble fixé d'attributs {A1, A2,..., An }, tel que chaque attribut
Ai est défini sur un domaine Dj ( j = 1,2, ..., n ). Les noms des attributs A1 ,
A2 , ..., An sont tous distincts.
Le corps consiste en un sous-ensemble de tuples ou n-uplets.
Définition : Tuple
Appelé aussi uplet ou enregistrement, correspond à une ligne d'une relation.
Définition : Cardinalité
C'est le nombre de tuples d'une relation.
Définition : Degré
C'est le nombre d'attributs d'une relation
G. Exemple : Base de données approvisionnement
Une illustration de base de données sous forme de tables est donnée dans cet
exemple.



Image 4 Schéma relationnel de la BD
approvisionnement






NF : numéro et nom du
fournisseur
NOM : nom du fournisseur
CODE le code du fournisseur
VILLE la ville où il se situe .
NP : numéro de la pièce
NOMP : nom de la pièce

MATERIAU : le matériau constituant la pièce
POIDS : le poids de la pièce
VILLEP : la ville où est stockée la pièce
QTE : la quantité d'un produit fourni par un fournisseur
Remarque
L'attribut (ou les attributs) souligné(s) dans une relation correspond(ent) à la clé de
cette dernière..
14
Nadia Abdat & Nazih Selmoune
Architecture générale d'un SGBD Relationnel
Chaque relation possède une interprétation ou une signification voulue.
Par exemple, un tuple (f, n, c, v) de la relation fournisseur signifie : le fournisseur
ayant un numéro de fournisseur f possède un nom n, un code c, et se trouve dans
une ville v. De plus, deux fournisseurs n'ont jamais le même numéro.
De même un tuple (p, n', m, x, v') de la relation Pièce : la pièce ayant un numéro
de pièce p possède un nom n', un matériau m, un poids x et se trouve dans une
ville v'. De plus, deux pièces n'ont jamais le même numéro.
Un tuple (f, p, q) de la relation Fourniture signifie que le fournisseur n° f fournit la
pièce n°p en une quantité égale à q.
Une extension de la base de donnée approvisionnement
Nadia Abdat & Nazih Selmoune
15