Dépendances entre les chapitres
1 I n t r o d u c t i o n a u x s y s t è m e s d e g e s t i o n d e
b a s e s d e d o n n é e s
7
G e s t i o n d e s d o n n é e s e n m é m o i r e s e c o n d a i r e
8 O r g a n i s a t i o n s u n i d i m e n s i o n n e l l e s : i n d e x a g e e t h a c h a g e
9 M é t h o d e s m u l t i d i m e n s i o n n e l l e s e t
r e p r é s e n t a t i o n d ' a s s o c i a t i o n s 3 . 1 e t 3 . 2
C o n c e p t s d e b a s e e t c o n t r a i n t e s d ' i n t é g r i t é d u
m o d è l e r e l a t i o n n e l
4 L e l a n g a g e S Q L
6
C o n t r a i n t e s d ' i n t é g r i t é e n S Q L
1 4 L ' i n t é g r i t é e t l a g e s t i o n 1 1
T h é o r i e d e l a n o r m a l i s a t i o n
2
A n a l y s e e t m o d é l i s a t i o n c o n c e p t u e l l e
3 . 3 C o n c e p t i o n l o g i q u e
5
I n t e r f a c e e n t r e S Q L e t u n p r o g r a m m e
3 . 4 A l g è b r e r e l a t i o n e l l e
1 0 E v a l u a t i o n d e s r e q u ê t e s
r e l a t i o n n e l l e s
1 3 C o n c e p t i o n d a n s u n 1 2
C a s d ' u t i l i s a t i o n d é t a i l l é s e t p r o c e s s u s d ' é l a b o r a t i o n d u
m o d è l e c o n c e p t u e l d e d o n n é e s
1 Introduction aux systèmes de gestion de bases de données
BD= composante essentielle des systèmes informatiques modernes
– systèmes d ’information de gestion
– ingénierie
– contrôle de processus
– bibliothèques électroniques
– ...
Données persistantes
1.1 Donnée et de type de donnée
Donnée (data)
– Une donnée au sens informatique est une représentation d'un fait à l'aide d'un code binaire stocké dans la mémoire de l'ordinateur
Type de données (data type)
– Le type de données détermine la nature du
codage utilisé pour représenter la donnée et
les opérations applicables à la donnée.
1.2 Donnée et information
Information : donnée interprétée
– théorie de l'information
– Shannon et Weaver (1959 )
– mesure de la quantité d'information
message d'une source à un destinataire
– diminution de l'incertitude au niveau du destinataire
– information : relatif au destinataire du message
Changement d'état du destinataire
Souvent synonymes
1.3 Donnée simple et complexe
Donnée simple
Donnée de type complexe, ou donnée complexe
–
composée de données simples
Donnée multimédia (multimedia data)
–
texte, image, son, vidéo
1.4 Différentes facettes du terme base de données
Base de données (BD)
–
Au sens large, collection de données
Différentes interprétations
fichier de texte
ensemble de fichiers de textes
un seul fichier d'enregistrements
ensemble de fichiers d’enregistrements
plusieurs sous bases de données indépendantes les unes des autres
Toile : base de données de nature hétérogène et répartie
BD logique = une collection de BD physiques
1.5 Système de gestion de base de données (SGBD)
Base de données (database)
–
Sens plus strict, ensemble de données : 1. fortement structurées
2. persistantes
3. structure définie dans un schéma
4. gérées par système de gestion de bases de données
Système de gestion de base de données (SGBD, database management system - DBMS)
–
Logiciel spécialisé pour la gestion de base de données
Mémoire centrale/secondaire
Mémoire centrale, vive, primaire, volatile (main memory, primary storage)
–
directement accessible par le processeur central
–
contient les instructions et les données d'un programme en exécution
–
rapidité
–
non persistance
Mémoire secondaire (secondary storage), permamente, externe, stable, non volatile ou persistante
–
indirectement via des opérations d'entrée/sortie
–
lenteur
–
persistance
Langage de définition des données et schéma
Langage de définition des données (LDD, data definition language - DDL )
– permet la définition des types des données de la BD
Schéma de la base de données (database schema)
– structure des données définie à l'aide du LDD
Environnement SGBD
S y s t è m e d e g e s t i o n d e b a s e d e d o n n é e s ( S G B D )
P r o g r a m m e d 'a p p lic a t i o n U t il it a i r e d 'é d it i o n e t
d 'i n t e r p r é t a t io n d e c o m m a n d e s d u L M D
U t il it a ir e c o n v iv ia l d e m a n ip u la t io n
d e d o n n é e s
E v a l u a t e u r d e r e q u ê t e ( L M D ) I n t e r p r è t e d u L D D
U t i lit a ir e d 'é d it io n d u s c h é m a
D ic t io n n a ir e d e d o n n é e s ( c o n t ie n t le s c h é m a o u
m é t a - d o n n é e s )
B a s e d e d o n n é e s ( c o n t ie n t le s d o n n é e s ) A d m in is t r a t e u r d e b a s e d e d o n n é e s ( A B D )
U t ili s a t e u r e x p e r t
U t il is a t e u r P r o g r a m m e s o u r c e
i n c o r p o r a n t d e s a p p e ls à u n e li b r a i r ie s p é c ia lis é e p o u r le
S G B D P r o g r a m m e u r P r o g r a m m e s o u r c e
a v e c L M D e n c h â s s é
p r é - c o m p i la t e u r
C o m p i la t e u r
Langage de manipulation de données/ de requête
Manipulation des données (data manipulation)
–
lire (sélectionner)
–
ajouter
–
supprimer
–
modifier
Langage de manipulation des données (LMD, data manipulation language - DML)
–
langage de requête (query language )
–
ex: SQL, OQL
Contexte d ’utilisation du LMD
Langage de manipulation des données enchâssé (embedded data manipulation language), langage hôte (host language)
–
LMD enchâssé un langage de programmation hôte
(e.g. C, C++, ADA, JAVA,…)
–
syntaxe spéciale non reconnue par compilateur
étape de pré-compilation
Interface programmatique (API)
–
e.g. ODBC, JDBC
–
LMD passé en paramètre
Utilitaire GUI convivial
Exécution des requêtes
Évaluateur de requête (query processor)
–
composante du SGBD responsable de l'exécution des requêtes
–
processus complexe
Requête (query)
–
opération de manipulation de données
Définition des données
Administrateur de la base de données (ABD, database administrator - DBA)
–
responsable de la gestion d'une base de données
–
maintien du schéma de la base de données
–
utilitaire d ’édition du schéma
Méta-données (metadata)
–
le schéma sous forme de données
Dictionnaire de données (métabase, data dictionary)
–
BD, gérée par le SGBD, qui contient les méta-données
1.6Principales
architectures des BD
Architecture centralisée
–
programme d'application et SGBD sur même machine (même site)
–
premiers systèmes
Architecture du type client-serveur (client-server architecture)
–
programme d'application = client
interface (« GUI ») + traitement du domaine d ’application
–
SGBD = serveur (de données « data server »)
–
machines (sites) différentes
–
deux couches, niveaux, strates (“two tier ”)
Architecture client-serveur
R é s e a u
L o g i c i e l i n t e r m é d i a i r e
P i l o t e d e
t é l é c o m m u n i c a t i o n P r o g r a m m e d 'a p p l i c a t i o n
L o g i c i e l i n t e r m é d i a i r e
P i l o t e d e
t é l é c o m m u n i c a t i o n S G B D
C l i e n t S e r v e u r
B D
Architecture à trois niveaux (three tier)
R é s e a u
L o g i c i e l i n t e r m é d i a i r e
P i l o t e d e t é l é c o m m u n i c a t i o n
A p p l i c a t i o n
L o g i c i e l i n t e r m é d i a i r e
P i l o t e d e t é l é c o m m u n i c a t i o n
S G B D
S e r v e u r d ' a p p l i c a t i o n
S e r v e u r d e d o n n é e s
L o g i c i e l i n t e r m é d i a i r e
P i l o t e d e t é l é c o m m u n i c a t i o n
I n t e r f a c e
C l i e n t m i n c e
R é s e a u
B D
Base de données répartie, distribuée (distributed database)
SGBD réparti (distributed DBMS)
–
répartition des données de manière transparente
R é s e a u
L o g i c i e l i n t e r m é d i a i r e
P i l o t e d e t é l é c o m m u n i c a t i o n
S G B D r é p a r t i
S e r v e u r d e d o n n é e s
L o g i c i e l i n t e r m é d i a i r e
P i l o t e d e t é l é c o m m u n i c a t i o n
P r o g r a m m e d 'a p p l i c a t i o n
C l i e n t
R é s e a u
L o g i c i e l i n t e r m é d i a i r e
P i l o t e d e t é l é c o m m u n i c a t i o n
S G B D r é p a r t i
S e r v e u r d e d o n n é e s
B D lo c a le
B D lo c a l e
Base de données parallèle (parallel database)
Parallélisme à l'intérieur d'un site
D is q u e D is q u e D is q u e D is q u e
U n it é d e t r a it e m e n t
U n it é d e t r a i t e m e n t
U n it é d e t r a it e m e n t
D is q u e
M é m o i r e v iv e
Entrepôt de données
E n t r e p ô t d e d o n n é e s ( « d a t a w h a r e h o u s e » )
B D o p é r a t i o n n e l l e
( O L T P )
A u t r e s o u r c e d e
d o n n é e s
E x t r a c t i o n : f i l t r a g e , s y n t h è s e , t r a n s f o r m a t i o n ,
f u s i o n B D
o p é r a t i o n n e l l e ( O L T P )
A n a l y s e ( O L A P ) , p r o s p e c t i o n
Entrepôt de données
Base de données opérationnelle
– traitement des données quotidiennes et récentes
– OLTP (“ On Line Transaction Processing ”).
Entrepôt de données (data wharehouse)
– grand volume de données historiques extraites de bases opérationnelles pour le support à la prise de décision
– OLAP (“ On Line Analytical Processing ”)
Prospection de données , ou forage, fouille, exploration de données, ou découverte de connaissances dans les BD (data mining, analysis, dredging, archeology, knowledge discovery in databases - KDD)
– extraction non triviale d'informations implicites, inconnues et utiles
1.7 Des systèmes de gestion de fichiers aux SGBD
Système de gestion de fichier (SGF, file system)
– gestionnaire de fichiers (file manager)
– composante du système d’exploitation
– abstraction des mémoires secondaires
sous forme d'un ensemble de fichiers
Utilisation d'un système de gestion de fichier
F ic h ie r d e s c o m p t e s
F ic h i e r d e s t r a n s a c t io n s
F ic h i e r d e s c o m p t e s m i s à j o u r
M i s e à jo u r e n l o t d e s c o m p t e s
A p p l i c a t i o n d e g e s t i o n d e s c o m p t e s
F ic h ie r d e s p r ê t s F ic h i e r d e s
t r a n s a c t io n s
F ic h ie r d e s p r ê t s m i s à j o u r
M i s e à jo u r e n l o t d e s p r ê t s
A p p l i c a t i o n d e g e s t i o n d e s p r ê t s
Exemple de contenu des fichiers de comptes et de prêts (fichiers séquentiels triés)
noPrêt nomClient adresse
Client noTéléphone montant
Prêt dateDébut taux
Intérêt fréquence Paiement
1000 Hugh
Paycheck Ottawa (999)999-9999 10000.00 10/ 6/ 2000 10 12 2000 Ye San Le
Su Montréal (777)777-7777 20000.00 20/ 7/ 2000 12 52 3000 Hugh
Paycheck Ottawa (999)999-9999 5000.00 15/ 8/ 2000 12 12
noCompte nomClient adresseClient noTéléphone dateOuverture solde
100 Hugh Paycheck Ottawa (999)999-9999 5/ 05/ 1999 1000.00
200 Dollard Cash Montréal (888)888-8888 10/ 10/ 1999 2000.00
300 Hugh Paycheck Ottawa (999)999-9999 10/ 10/ 1999 1000.00
400 Ye San Le Su Montréal (777)777-7777 20/ 7/ 2000 5.00
600 Ye San Le Su Montréal (777)777-7777 15/ 10/ 2000 10.00
1.7.1 Redondance et
incohérence des données
noCompte nomClient adresseClient noTéléphone dateOuverture solde
100 Hugh Paycheck
Ottawa (999)999-99995/ 05/ 1999 1000.00 200 Dollard Cash Montréal (888)888-8888 10/ 10/ 1999 2000.00 300 Hugh Paycheck
Québec (555)555-555510/ 10/ 1999 1000.00 400 Ye San Le Su Montréal (777)777-7777 20/ 7/ 2000 5.00 600 Ye San Le Su Montréal (777)777-7777 15/ 10/ 2000 10.00
noPrêt nomClient adresse
Client noTéléphone montant
Prêt dateDébut taux
Intérêt fréquence Paiement
1000 Hugh
Paycheck
Alma (444)444-444410000.00 10/ 6/ 2000 10 12 2000 Ye San Le Montréal (777)777-7777 20000.00 20/ 7/ 2000 12 52
Modifications
anarchiques
1.7.2Mécanismes d'organisation de données limités des SGF
SGBD supporte
– Indexage
– Hachage
– Organisation par grappe
– Liens entre fichiers
1.7.3 Intégrité sémantique
Contrainte d'intégrité sémantique (semantic integrity constraint)
– ou simplement contrainte d'intégrité
– une règle qui doit toujours être respectée par les données de la BD
– ex: “ le solde d'un compte ne peut être négatif ”
Supporté par SGBD (pas SGF)
1.7.4 Contrôle de concurrence
Empêcher interférences indésirables
SGBD : mécanismes raffinés
Temps Processus #1 Processus #2 État du fichier t
1Lire ( SoldeCompte , s )
{s = 8} SoldeCompte = 8
t
2Lire ( SoldeCompte , s )
{s = 8}
t
3s = s + 5
t
4Écrire ( s , SoldeCompte ) SoldeCompte = 13
t
5s = s + 2
t
6Écrire ( s , SoldeCompte ) SoldeCompte = 10
t
7Saperlipopette!
1.7.5 Fiabilité
Exemple de panne
SGBD : mécanismes de récupération
Revenir à un état cohérent suite à une panne
– journal des transactions
1.7.6 Sécurité
SGF :
– lecture, écriture au niveau fichier
SGBD : contrôle plus fin
– types de données
– enregistrements
– champs
– type d ’opération
– cryptage
1.7.7 Gestion des transactions
Transaction
– séquence d'opérations de manipulation de données exécutées par un programme
– délimitées par une opération de début et une opération de fin de transaction
– propriétés d'Atomicité, de Consistance,
d'Isolation et de Durabilité (ACID).
1.7.8Indépendance des données
Indépendance entre :
– formulation d'une requête (QUOI)
langage non procédural
– façon d'effectuer la requête par
le SGBD (COMMENT)
1.8 Perspective historique
Modèle de définition de données (“ data definition model ”)
– nature des types de données supportés par le SGBD.
1ère génération (années 70): réseau, hiérarchique (CODASYL, IMS,...)
– LMD navigationnel
2ième génération (années 80) :relationnel (Oracle, Ingres, DB2, SQL server,…)
– LMD non procédural
3ième génération (années 90)
– objet (Object Store, Versant,…)
– relationnel objet (Oracle8, DB2 UDS, Informix US)
4ième génération ?
– déductif (« Datalog »), entrepôt de données, data mining, support du WEB (XML, XMLQL)
Modèles pour conception
1.9 Exemple introductif : Banque SansIntérêts
Table Client
noClient nomClient adresseClient noTéléphone 10 Hugh Paycheck Ottawa (999)999-9999 20 Dollard Cash Montréal (888)888-8888 30 Ye San Le Su Montréal (777)777-7777
Table Compte
noCompte solde dateOuverture noClient 100 1000.00 5/ 05/ 1999 10
200 2000.00 10/ 10/ 1999 20 300 1000.00 10/ 10/ 1999 10
400 5.00 20/ 7/ 2000 30
600 10.00 15/ 10/ 2000 30 Table Prêt
noPrêt montantPrêt dateDébut tauxIntérêt fréquence
Paiement noClient
1000 10000.00 10/ 6/ 2000 10 12 10
2000 20000.00 20/ 7/ 2000 12 52 30
3000 5000.00 15/ 8/ 2000 12 12 10
Code du schéma avec le LDD SQL
(script Oracle)
Création du schéma avec
l'outil SQL*plus d'Oracle
SQL> CREATE TABLE Client
2 (noClient INTEGER PRIMARY KEY, 3 nomClient VARCHAR(18),
4 adresseClient VARCHAR(20), 5 noTéléphone VARCHAR(15)) 6 /
Table created.
SQL> CREATE TABLE Compte
2 (noCompte INTEGER PRIMARY KEY,
3 solde DECIMAL(10,2) CHECK (solde >= 0), 4 dateOuverture DATE,
5 noClient INTEGER REFERENCES Client) 6 /
Table created.
SQL> CREATE TABLE Prêt
2 (noPrêt INTEGER PRIMARY KEY, 3 montantPrêt DECIMAL(10,2),
4 dateDébut DATE,
5 tauxIntérêt DECIMAL(8,2),
Création du schéma
Manipulation de données
SQL> INSERT INTO Client
2 VALUES(10,'Luc Sansom','Ottawa','(999)999-9999') 3 /
1 row created.
SQL> SELECT * 2 FROM Client 3 /
NOCLIENT NOMCLIENT ADRESSECLIENT NOTÉLÉPHONE --- --- --- --- 10 Luc Sansom Ottawa (999)999-9999
Transaction (COMMIT)
-- Session parallèle avec Oracle (multiversion) : SQL> SELECT *
2 FROM Client 3 /
no rows selected
SQL> COMMIT 2 /
Commit complete.
Session parallèle : SQL> SELECT *
2 FROM Client 3 /
NOCLIENT NOMCLIENT ADRESSECLIENT NOTÉLÉPHONE
Insertion d ’un lot en une transaction
SQL> INSERT INTO Client
2 VALUES(20,'Dollard Tremblay','Montréal','(888)888-8888') 3 /
1 row created.
SQL> INSERT INTO Client
2 VALUES(30,'Lin Bô','Montréal','(777)777-7777') 3 /
1 row created.
SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'DD/MM/YYYY' 2 /
Session altered.
SQL> INSERT INTO Compte
2 VALUES(100,1000.0,'5/5/1999',10) 3 /
1 row created.
…
SQL> INSERT INTO Prêt
2 VALUES(3000,5000,'15/8/2000',12,12,10) 3 /
1 row created.
SQL> COMMIT 2 /
Respect des contraintes d’intégrité
SQL> INSERT INTO Client
2 VALUES(10,'Jean Leconte','Montréal','(666)666-6666') 3 /
INSERT INTO Client
*
ERROR at line 1:
ORA-00001: unique constraint (IDUTIL1.SYS_C001737) violated
SELECT SQL
SQL> SELECT noCompte, solde 2 FROM Compte
3 WHERE noClient = 10 4 /
NOCOMPTE SOLDE --- --- 100 1000 300 1000
SELECT noCompte, solde FROM Compte
WHERE noClient = 10
noCompte solde
100 1000.00
300 1000.00
noCompte solde dateOuverture noClient 100 1000.00 5/ 05/ 1999 10 200 2000.00 10/ 10/ 1999 20 300 1000.00 10/ 10/ 1999 10
400 5.00 20/ 7/ 2000 30
600 10.00 15/ 10/ 2000 30
Exécution d'un SELECT dans une application client-
serveur Java
// Exemple de programme JAVA qui utilise le pilote JDBC thin d'Oracle // pour effectuer un SELECT et itérer sur les lignes du résultat // Il faut importer le paquetage java.sql pour utiliser JDBC package ExemplesJDBC;import java.sql.*;
import java.math.BigDecimal;
class ExempleSelectCompte {
public static void main (String args [])
throws SQLException, ClassNotFoundException, java.io.IOException {
// Charger le pilote JDBC d'Oracle
Class.forName ("oracle.jdbc.driver.OracleDriver");
// Connection à une BD avec un pilote thin Connection uneConnection =
DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ora817i",
"idutil1", "oracle");
// Création d'un énoncé associé à la Connection
Statement unEnoncéSQL = uneConnection.createStatement ();
// Exécution d'un SELECT
// Le code du SELECT est passé en paramètre sous forme d'un String ResultSet résultatSelect = unEnoncéSQL.executeQuery
("SELECT noCompte, solde FROM Compte WHERE noClient = 10");
// Itérer sur les lignes du résultat du SELECT et extraire les valeurs // des colonnes dans des variables JAVA
while (résultatSelect.next ()){
int noCompte = résultatSelect.getInt ("noCompte");
BigDecimal solde = résultatSelect.getBigDecimal ("solde");
Pilote JDBC
R é s e a u
P r o g r a m m e d 'a p p l i c a t i o n ( J a v a )
C l i e n t
S e r v e u r
B D
L o g i c i e l i n t e r m é d i a i r e ( P i l o t e J D B C )
P i l o t e d e
t é l é c o m m u n i c a t i o n ( T C P / I P )
S G B D ( O r a c l e )
C l i e n t
L o g i c i e l i n t e r m é d i a i r e
( N E T 8 ) P i l o t e d e
t é l é c o m m u n i c a t i o n ( T C P / I P )
C l i e n t
SELECT sur plusieurs tables
SQL> SELECT nomClient, noCompte, solde 2 FROM Client, Compte
3 WHERE Client.noClient = Compte.noClient AND 4 dateOuverture = '10/10/1999'
5 /
NOMCLIENT NOCOMPTE SOLDE
--- --- ---
Dollard Tremblay 200 2000
Luc Sansom 300 1000
suite
Requête complexe
noCompte solde dateOuverture noClient 100 1000.00 5/ 05/ 1999 10 200 2000.00 10/ 10/ 1999 20 300 1000.00 10/ 10/ 1999 10
400 5.00 20/ 7/ 2000 30
600 10.00 15/ 10/ 2000 30
SELECT nomClient, noCompte, solde FROM Client, Compte
WHERE Client.noClient = Compte.noClient AND dateOuverture = '10/10/1999'
noClient nomClient adresseClient noTéléphone 10 Hugh Paycheck Ottawa (999)999-9999 20 Dollard Cash Montréal (888)888-8888 30 Ye San Le Su Montréal (777)777-7777
nomClient noCompte solde Dollard Cash 200 2000.00 Hugh Paycheck 300 1000.00
UPDATE SQL
SQL> UPDATE Compte
2 SET solde = solde - 100 3 WHERE noCompte = 100 4 /
1 row updated.
SQL> UPDATE Compte
2 SET solde = solde + 100 3 WHERE noCompte = 300 4 /
1 row updated.
SQL> COMMIT 2 /
Commit complete.
SQL> SELECT noCompte, solde 2 FROM Compte
3 WHERE noClient = 10 4 /
DELETE SQL
SQL> DELETE FROM Compte WHERE noCompte = 100 2 /
1 row deleted.
SQL> COMMIT 2 /
Commit complete.
SQL> SELECT * FROM Compte 2 /
NOCOMPTE SOLDE DATEOUVERT NOCLIENT
--- --- --- ---
200 2200 10/10/1999 20
300 1000 10/10/1999 10
400 5 20/07/2000 30
600 10 15/10/2000 30
Organisation physique des données
SQL> CREATE INDEX indexNoClientCompte ON Compte(noClient) 2 /
Index created.
Dictionnaire de données
SQL> SELECT TABLE_NAME 2 FROM USER_TABLES 3 /
TABLE_NAME
--- CLIENT
COMPTE PRÊT
SQL> SELECT COLUMN_NAME 2 FROM USER_TAB_COLUMNS
3 WHERE TABLE_NAME = 'CLIENT' 4 /
COLUMN_NAME
--- NOCLIENT
NOMCLIENT ADRESSECLIENT NOTÉLÉPHONE
Allocation d ’espace
SQL> SELECT TABLESPACE_NAME, EXTENTS, BLOCKS 2 FROM USER_SEGMENTS
3 WHERE SEGMENT_NAME = 'CLIENT' 4 /
TABLESPACE_NAME EXTENTS BLOCKS
--- --- ---
USERS 1 16
1.10 Conception du schéma d'une base de données
Prêt noPrêt montantPrêt dateDébut tauxIntérêt
fréquencePaiement
<<entity>>
Compte noCompte solde
dateOuverture
<<entity>>
Client noClient nomClient adresseClient noTéléphone
<<entity>>
1
0..*
1
0..*
0..*
1
0..*
1
Prêt {CléPrimaire : noPrêt}
noPrêt montantPrêt dateDébut tauxIntérêt
fréquencePaiement noClient
<<Table>>
Compte {Clé primaire : noCompte}
noCompte solde
dateOuverture noClient
<<Table>>
Client {Clé primaire : noClient}
noClient nomClient adresseClient noTéléphone
<<Table>>