Documente Academic
Documente Profesional
Documente Cultură
2014-2015
BIBLIOGRAPHIE
Ouvrages de rfrence utiliss pour le cours et disponibles la BU
BIBLIOGRAPHIE
Autres ouvrages de rfrence, disponibles la BU :
C.J. Date, An Introduction to Database Systems, Addison Wesley
C.J. Date, A Guide to SQL Standard, Addison Wesley
R.A. El Masri et S.B. Navathe, Fundamentals of Database Systems, Prentice Hall
Ouvrages pdagogiques contenant des exercices corrigs :
Chap. I - Introduction
Bases de donnes :
Collection homogne et structure d'informations ou de
donnes qui existent sur une longue priode de temps et qui
dcrivent les activits d'une ou plusieurs organisations
ensemble de donnes modlisant les objets d'une partie du
monde rel et servant de support une application informatique
Exemple 1 :
Organisation : une bibliothque
Donnes : les livres, les emprunts, les emprunteurs
Exemple 2 :
Organisation : une Universit
Donnes : les tudiants, les enseignants, les cours, etc.
Maude Manouvrier - Univ. Paris Dauphine
Chap. I - Introduction
SGBD (1/3)
Chap. I - Introduction
SGBD (2/3)
Principales fonctionnalits dun SGBD :
Chap. I - Introduction
SGBD (3/3)
Principaux composants :
Systme de gestion de fichiers
Gestionnaire de requtes
Gestionnaire de transactions
Principales fonctionnalits :
Contrle de la redondance dinformation
Partage des donnes
Gestion des autorisations daccs
Vrifications des contraintes dintgrit
Scurit et reprise sur panne
Maude Manouvrier - Univ. Paris Dauphine
Chap. I - Introduction
Chap. I - Introduction
Instances et schma
Chap. I - Introduction
Petit historique
1990 : dbut des SBGD orients objet (Gemstone, O2, Orion, Objectstore,
Versant, Matisse...).
Aujourdhui : relationnel-objet, semi-structur, multimdia ...
Maude Manouvrier - Univ. Paris Dauphine
10
Chap II - Modlisation
Mthodologie suivre pour modliser un problme
11
Chap. II - Modlisation
Modlisation Entit/Association
(Format Merise)
Un automobiliste possde
entre zro et N voitures
Une voiture a un et un
seul propritaire
12
Chap. II - Modlisation
Modlisation UML
Un automobiliste possde
entre zro et N voitures
Une voiture a un et un
seul propritaire
Attention : petite libert prise avec UML, les attributs souligns ici ne correspondent
pas des attributs drivs mais aux identificateurs (pour ne pas les oublier lors du
passage au relationnel!!)
Maude Manouvrier - Univ. Paris Dauphine
13
Chap. II - Modlisation
Gnralisation/Spcialisation
(E/A - Merise)
Ensemble dentits
gnralisantes
Ensemble dentits
spcialises
Maude Manouvrier - Univ. Paris Dauphine
14
Chap. II - Modlisation
Hritage (UML)
15
Chap. II - Modlisation
On peut nommer ou
non lagrgat
16
Chap. II - Modlisation
Classe-Association (UML)
17
Chap. II - Modlisation
18
Chap. II - Modlisation
19
Chap. II - Modlisation
Composition (UML)
20
Chap. II - Modlisation
Contraintes
Contraintes dintgrit :
toutes rgles implicites ou explicites que doivent
suivre les donnes [Gar99]
Contraintes d'entit: toute entit doit possder un
identificateur
Contraintes de domaine : les valeurs de certains
attributs doivent tre prises dans un ensemble donn
Contraintes d'unicit : une valeur d'attribut ne peut pas
tre affecte deux fois deux entits diffrentes
Contraintes gnrales : rgle permettant de conserver
la cohrence de la base de manire gnrale
Maude Manouvrier - Univ. Paris Dauphine
21
Chap. II - Modlisation
Exemples de contraintes
Contraintes de domaine :
"La fonction dun enseignant lUniversit prend sa valeur
dans lensemble {vacataire, moniteur, ATER, MCF, Prof.,
PRAG, PAST}."
Contraintes d'unicit :
"Un dpartement, identifi par son numro, a un nom unique
(il ny a pas deux dpartements de mme nom)."
Contraintes gnrales :
"Un mme examen ne peut pas avoir lieu dans deux salles
diffrentes la mme date et la mme heure. "
Maude Manouvrier - Univ. Paris Dauphine
22
Chap. II - Modlisation
Dpendances fonctionnelles
XY : Y dpend fonctionnellement de X
ou X dtermine Y
Dclaration des dpendances au niveau du schma
conceptuel
23
Chap. II - Modlisation
Telephone Enseignant_ID
24
25
Exemple de relation
Nom dattribut
NSS
273
Nom
Prnom Fonction
Manouvrier Maude
MCF
La relation Enseignant
Nuplets ou tuples
26
Instances et schma
27
Passage au relationnel
gnralisation-spcialisation/hritage
Accidente lors
de la location
29
30
31
ou 1..*
ou 0..1
32
ou 1:N
ou 0:1
ou 1:M
ou 0:1
33
ou 1..*
ou 0..1
34
Personne ( Personne_ID,
Nom,Prnom, Tlphone ... )
Enseignant ( #Personne_ID, Position )
Etudiant ( #Personne_ID, Adresse,
Ville ...)
NB : #Personne_ID dans
Enseignant et Etudiant font
rfrence Personne_ID dans
Personne
Maude Manouvrier - Univ. Paris Dauphine
35
36
37
Transformation de la composition
UML
Voiture ( Immatriculation, Marque,
Puissance, Type, Anne )
Voi
Moteur (Numro, #Immatriculation,
Chevaux)
PotEchappement (Num_Srie,
#Immatriculation, DateInstallation)
38
Dpendances fonctionnelles
39
Cl
Attribut (ou ensemble dattributs) permettant didentifier de
manire unique les nuplets de la relation
Exemples :
Lattribut ISBN pour une relation Livre
Lattribut NumroImmatriculation pour une relation Voiture
Lattribut NumroCarte pour une relation Emprunteur
Par dfaut : Cration
automatiquement
dun
attribut
numrique
sincrmentant
Cl artificielle
(surrogate key)
40
Intgrit structurelle
41
Cl trangre (1/5)
Attribut (ou ensemble dattributs) dune relation qui fait (font)
rfrence la cl primaire dune autre relation
A quoi cela sert ?
Problmes :
Rptition des noms, prnoms, dates de naissances, ISBN, etc.
autant de fois quil y a demprunts = Redondance dinformation
Comment identifier les nuplets ?
Ne pas mettre toutes les donnes dans une seule relation !!!
42
Cl trangre (2/5)
La solution ? Diviser les donnes en plusieurs relations
Division en 3 relations associes : Personne, Emprunt et Livre
Stockage unique des informations de chaque livre
43
Cl trangre (3/5)
Relation Livre
Relation Emprunt
Relation Personne
44
Cl trangre (4/5)
Intgrit rfrentielle : Ensemble de rgles garantissant la
cohrence (l'intgrit) des donnes rparties dans plusieurs
relations
Insertion dans la relation Emprunt : autorise uniquement si on
spcifie une valeur personne_id qui existe dans la relation Personne et
une valeur livre_id qui existe dans la relation Livre
Suppression dun nuplet/Mise jour de la valeur de cl primaire dans
la relation Personne :
o Non autorise si un nuplet dans Emprunt fait rfrence au
nuplet supprim/mis jour dans Personne
o Ou autorise mais avec suppression/mise jour en cascade des
nuplets correspondant dans Emprunt
45
Maude Manouvrier - Univ. Paris Dauphine
Cl trangre (5/5)
Insertion dans la relation o est dfinie la cl trangre : autorise
uniquement si on spcifie une valeur de cl trangre qui existe
dans la relation rfrence
Suppression dun nuplet/mise jour de la valeur de la cl
primaire dans la relation rfrence :
o Non autorise si un nuplet de la relation rfrenant fait
rfrence au nuplet supprim dans la relation rfrence
o Ou autorise mais
avec suppression/mise jour en cascade des nuplets
correspondant dans la table rfrenant ou avec
affectation dune valeur NULL
avec affectation dune valeur NULL ou dune valeur
par dfaut la cl trangre des nuplets
correspondants dans la relation rfrenant
Maude Manouvrier - Univ. Paris Dauphine
46
47
Intgrit structurelle
Valeur nulle
valeur conventionnelle introduite dans une relation pour
reprsenter une information inconnue ou inapplicable
tout attribut peut prendre une valeur nulle except les
attributs de la cl primaire (contrainte dentit)
Contraintes de domaine
contrainte d'intgrit imposant qu'un attribut d'une relation
comporte des valeurs vrifiant une assertion logique
48
Chap. II - Modlisation
Contraintes
Contraintes dintgrit :
toutes rgles implicites ou explicites que doivent
suivre les donnes
Contraintes didentit: tout nuplet doit possder une
valeur de cl primaire unique
Contraintes de domaine : les valeurs de certains
attributs doivent tre prises dans un ensemble donn
Contraintes d'unicit : une valeur d'attribut ne peut pas
tre affecte deux fois deux entits diffrentes
Contraintes gnrales : rgle permettant de conserver
la cohrence de la base de manire gnrale
Maude Manouvrier - Univ. Paris Dauphine
49
Exemples de contraintes
Contraintes de domaine :
"La fonction dun enseignant lUniversit prend sa valeur
dans lensemble {vacataire, moniteur, ATER, MCF, Prof.,
PRAG, PAST}."
Contraintes d'unicit :
"Un dpartement, identifi par son numro, a un nom unique
(il ny a pas deux dpartements de mme nom)."
Contraintes gnrales :
"Un mme examen ne peut pas avoir lieu dans deux salles
diffrentes la mme date et la mme heure "
"La date de dbut demprunt doit tre antrieure la date de
fin demprunt"
Maude Manouvrier - Univ. Paris Dauphine
50
51
52
Quelques rgles
53
Exemple 1:
On veut crer une base de donnes stockant des enseignants
(avec leur nom, prnom etc.) et des dpartements, chaque
enseignant appartenant un et un seul dpartement.
Modle relationnel correspondant :
Departement(Dept_ID,Nom_Dept)
Nom_Dept est unique et non NULL
Enseignant(Ens_ID,
#Dep_ID, Grade)
NUMEN,
Nom,
Prnom
54
Relation Departement
Relation Enseignant
55
Exemple 2:
On veut crer une base de donnes grant des noncs
dexamens et des exercices.
Quelles sont les diffrences entre les modles relationnels ?
Modle relationnel 1 :
Examen(Exam_ID, Date, Heure)
Exercice(Exo_ID, Enonc)
Contenu_Exam(#Exam_ID, #Exo_ID, Numero_Ordre)
Modle relationnel 2 :
Examen(Exam_ID, Date, Heure)
Exercice(Exo_ID, Enonc, #Exam_ID)
Maude Manouvrier - Univ. Paris Dauphine
56
Exemple 3:
Relation Salle
Relation Reservation
Langages dinterrogation
Algbre relationnelle
Oprations utilises par le SGBD pour valuer les requtes
58
59
60
Rsultat de la projection
Nom,Prnom(Enseignant) :
Rsultat de la requte
Nom,Prnom ((grade= MCF ) (Enseignant)) :
61
Chap. IV - Algbre
relationnelle
Oprations binaires
Nom,Prnom(Etudiant) Nom,Prnom(Enseignant)
Chap. IV - Algbre
relationnelle
Nom,Prnom(Etudiant) Nom,Prnom(Enseignant) :
Nom,Prnom(Enseignant) - Nom,Prnom(Etudiant) :
63
Chap. IV - Algbre
relationnelle
Produit cartsien
NSS
12345
45678
Nom
Prnom
Manouvrier Maude
Toto
Titi
Grade
MCF
Prof
Dept
1
2
La relation Enseignant
Dept_ID
1
2
Nom_Dept_
Info
Math
La relation Dpartement
NSS
12345
45678
12345
45678
Nom
Manouvrier
Toto
Manouvrier
Toto
Prnom
Maude
Titi
Maude
Titi
Grade
MCF
Prof
MCF
Prof
Dept
1
2
1
2
Dept_ID
1
1
2
2
Nom_Dept
Info
Info
Math
Math
64
Chap. IV - Algbre
relationnelle
Autres oprations
Renommage :
A,B, (r AA, B B, )
Intersection :
r s = r - (r - s)
Thta-jointure :
r s = (r s)
Jointure naturelle : r(R) et s(S) avec R S = {A1,A2, , An}
r s = R S ((r.A1=s.A1) (r.A2=s.A2) (r.An=s.An) (r s))
Maude Manouvrier - Univ. Paris Dauphine
65
Chap. IV - Algbre
relationnelle
Nom,Prnom(Enseignant) Nom,Prnom(Etudiant) :
66
Chap. IV - Algbre
relationnelle
La relation Enseignant :
La relation Departement :
Enseignement Departement :
67
Chap. IV - Algbre
relationnelle
Exemple de jointure
La relation Enseignant :
La relation Departement :
68
Chap. IV - Algbre
relationnelle
Division
tr(R-S) = t
69
Chap. IV - Algbre
relationnelle
Division
La relation Enseignement :
La relation
Inscription :
70
Chap. IV - Algbre
relationnelle
Contraintes et DF
Dpartement_ID(Enseignant) - Dpartement_ID(Dpartement) =
XY r et t1, t2 r on a :
t1.X = t2.X t1.Y = t2.Y
71
72
Quantificateurs
Variable libre
Expression saine
73
A1,A2, , An (r) :
rs:
r-s:
rs:
rs:
rs:
Maude Manouvrier - Univ. Paris Dauphine
74
Division :
Division
(v.Etudiant_ID=t.Etudiant_ID)
(v.Etudiant_ID=t.Etudiant_ID)
(v.ISBN=u.ISBN
(v.ISBN=u.ISBN ))
)) ]
]]
}}
Il existe un nuplet v dans Emprunt
associant le livre u ltudiant t
Maude Manouvrier - Univ. Paris Dauphine
75
76
QBE
Query By Exemple :
langage de requte graphique
mise en uvre du calcul variable domaine
77
QBE
Etape 2 :
slection des
attributs de
la requte
78
QBE
Etape 3 :
possibilit
dappliquer
des fonction
dagrgation
sur les nuplets
rsultats
79
80
81
Personnel
Nom_Employ
Tom
Jerry
Alex
Marthe
Personnel
]
Employ
Employ
Ville
Marseille
Paris
Limoges
Perpignan
Nom_Employ
Tom
Jerry
Alex
Marthe
Personnel
[
Employ
Nom_Employ
Tom
Jerry
Sophie
Marthe
Nom_Employ
Tom
Jerry
Sophie
Marthe
Ville
Marseille
Paris
Limoges
Perpignan
Ville
Marseille
Paris
NULL
Perpignan
Filiale
SUD_EST
IDF
IDF
SUD_OUEST
Filiale
SUD_EST
IDF
NULL
SUD_OUEST
Filiale
SUD_EST
IDF
IDF
SUD_OUEST
Salaire
10000
25000
15000
12000
Salaire
10000
25000
NULL
12000
Salaire
10000
25000
15000
12000
82
Fonction dagrgation
Somme des places disponibles dans lUniversit
SumCapacit(Salle )
Nombre moyen de places disponibles dans les salles de lUniversit
AvgCapacit (Salle)
Nombre dtudiants lUniversit
CountEtudiant_ID (Etudiant)
Capacit de la plus petite salle
MinCapacit(Salle)
Nombre denseignants par dpartements :
Nom_Dpartement
CountEnseignant_ID(Enseignant Dpartement)
83
Suppression
Salle Salle - Capacit 10 (Salle)
Mise jour du
tlphone
84
Vue
Relation virtuelle de schma et instances drivs de la base
par une requte. Utilise pour :
85
86
DML
SELECT [DISTINCT] *
FROM table_1 [synonyme_1], table_2 [synonyme_1],
[WHERE prdicat_1
AND [ou OR] prdicat_2 ]
SELECT [DISTINCT] exp_1 [AS nom_1], exp_2 ...
FROM table_1 [synonyme_1], table_2 [synonyme_1],
[WHERE prdicat_1
AND [ou OR] prdicat_2 ]
87
DML
SELECT Intitul,
(NbSeances*3) AS NbHeures
FROM Cours
WHERE (NbSeances*3)
BETWEEN 24 AND 27 ;
88
DML
89
DML
Clause EXISTS :
Retourne VRAI si au moins un nuplet est retourn par la requte
90
DML
91
DML
92
DML
Jointure interne :
SELECT Nom, Prnom, Nom_Dpartement
FROM Enseignant INNER JOIN Dpartement
ON Enseignant.Departement_ID = Departement.Departement_ID ;
93
DML
Jointure externe :
SELECT Nom, Prnom, Nom_Dpartement
FROM Enseignant LEFT OUTER JOIN Departement ON
Enseignant.Departement_ID = Derpartement.Departement_ID ;
Sil existe des enseignants attach aucun dpartement, la valeur de
Dpartement_ID sera NULL.
En SQL2 : [RIGHT | LEFT | FULL] OUTER JOIN
Jointure naturelle :
SELECT Nom, Prnom, Nom_Dpartement
FROM Enseignant NATURAL JOIN Dpartement
Produit cartsien:
SELECT Nom, Prnom, Nom_Dpartement
FROM Enseignant CROSS JOIN Dpartement
Maude Manouvrier - Univ. Paris Dauphine
94
DML
95
Division :
DML
96
DML
Insertion
INSERT INTO table(col1, col2, coln)
VALUES (val1, val2, valn)
Suppression
DELETE FROM table
WHERE prdicat
Mise jour
UPDATE table
SET col1 = exp1, col2 = exp2 WHERE prdicat
97
DDL
98
DDL
DDL
MATCH SIMPLE/PARTIAL/FULL:
CREATE TABLE inscription(
inscription_id serial NOT NULL,
etudiant_id integer,
enseignement_id integer,
master_id integer,
CONSTRAINT pk_inscription PRIMARY KEY (inscription_id ),
CONSTRAINT "FK_Inscription_Enseignement"
FOREIGN KEY (enseignement_id, master_id)
REFERENCES enseignement (enseignement_id, master_id)
MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT,
CONSTRAINT "FK_Inscription_Etudiant" FOREIGN KEY (etudiant_id)
REFERENCES etudiant (etudiant_id) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT,
CONSTRAINT "UN_Inscription" UNIQUE (etudiant_id ,
enseignement_id , master_id )
)
10
DDL
MATCH SIMPLE/PARTIAL/FULL :
MATCH FULL : violation si toutes les valeurs divergent ou si une colonne est renseigne et
lautre non
INSERT INTO INSCRIPTION VALUES (3,2,NULL,NULL) OK
INSERT INTO INSCRIPTION VALUES (4,2,1,NULL) KO
mme si enseignement_id 1 existe dans la table enseignement
10
DDL
10
DDL
10
DDL
10
DDL
10
DDL
10
DDL
10
DDL
Sous PostgreSQL :
CREATE OR REPLACE FUNCTION GetSalleCapaciteSuperieurA(int)
RETURNS SETOF Salle
AS '
SELECT * FROM Salle WHERE Capacite > $1;
'
LANGUAGE SQL;
SELECT * FROM GetSalleCapaciteSuperieurA(300) ;
10
DDL
DDL
Sous PostgreSQL :
11
DDL
11
Embedded SQL
11
Embedded SQL
11
Embedded SQL
Gestion de curseur :
/* Dclaration d'un curseur pour manipuler la
table Department */
EXEC SQL DECLARE c1 CURSOR FOR
SELECT * FROM Department ;
/* Ouverture du curseur */
EXEC SQL OPEN c1;
/* Lecture de la premire ligne de la table */
EXEC SQL FETCH c1 INTO :d_id, :d_name ;
printf(``Nom du dpartement %s, identifiant :
%s\n'',d_name, d_id);
/* fermeture du curseur */
EXEC SQL CLOSE c1;
Maude Manouvrier - Univ. Paris Dauphine
11
Chap. IV - SQL
Middleware daccs
aux bases de donnes
11
Chap. IV - SQL
JDBC/ODBC
11
Chap. IV - SQL
JDBC
Exemple de programme Java sur la base exemple :
import java.sql.*;
// Tout ce qui est ncessaire pour JDBC
import java.text.*; // Pour formater les dates
import java.util.*;
public class TestJDBCPostgresql
{
Connection
db=null;
//
Statement
sql=null; //
DatabaseMetaData dbmd;
//
//
Variable de connexion
Variable pour un ordre SQL
Mta-donnes ncessaires
au pilote.
11
Chap. IV - SQL
JDBC
11
Chap. IV - SQL
JDBC
12
Chap. IV - SQL
JDBC
12
Chap. IV - SQL
JDBC
12
ODBC
Appel des fonctions de lAPI ODBC :
123
ODBC
124
ODBC
Exemple de programme en C sous Visual C++ :
#include <stdio.h>
#include <conio.h>
#include <afxdb.h> // MFC ODBC database classes
char *cBASE ;
/* Nom de la source de donnes */
char *cLOGIN ; /* Login utilisateur
*/
char *cPASSWD ; /* Mot de passe utilisateur
*/
void main()
{
HENV d_env;
HDBC d_connex;
HSTMT curseur;
RETCODE retcode;
Maude Manouvrier - Univ. Paris Dauphine
/*
/*
/*
/*
Descripteur d'environnement
Descripteur de connexion
Curseur
Code de retour de fonction
*/
*/
*/
*/
125
ODBC
UCHAR ucLastName[20],ucCity[20];
SDWORD ceLastName,ceCity;
char *cREQUETESQL; /* Variable recevant une requte SQL */
/* Saisie du nom de la source de donnes */
cBASE=(char*)malloc(20);
printf("Nom de la base de donnees :"); scanf("%s",cBASE);
/* Saisie du login */
cLOGIN=(char*)malloc(20); printf("Login :");
scanf("%s",cLOGIN);
/* Saisie du password */
cPASSWD=(char*)malloc(20); printf("Mot de passe : ");
/* Pour ne pas afficher le mot de passe l'cran */
int iPosCaractere=0; fflush(stdin);
do { if((cPASSWD[iPosCaractere]=_getch())!='\r')
printf("*");
} while(cPASSWD[iPosCaractere++]!='\r' && iPosCaractere <20);
cPASSWD[--iPosCaractere]='\0';
126
ODBC
127
ODBC
128
ODBC
129
130
Chap. VIII - DF
Rgles
Axiomes de Amstrong :
Rflexivit : si Y X alors X Y
Augmentation : Si X Y alors Z XZ YZ
Transitivit :
Si X Y et Y Z alors X Z
On dduit :
Union : {X Y, X Z} |= {X YZ}
Pseudo-transitivit :
{X Y,WY Z} |= {XW Z}
Dcomposition :
Si X Y et Z Y alors X Z
Maude Manouvrier - Univ. Paris Dauphine
131
Chap. VIII - DF
Fermeture
132
Chap. VIII - DF
Equivalence et Couverture
2.
133
Chap. VIII - DF
Cl
134
Chap. IX - Dcomposition
Dcomposition SPI
n
i 1
n
i 1
(
r
)
?
R
i
(
r
)
?
R
t 2 R ( r )
2
...
Est - ce - que t r ?
t n R ( r )
n
136
Chap. IX - Dcomposition
Dcomposition SPD
Association dune famille Fi chaque sousrelation Ri
Calcul des Fi partir de F+ :
X Y F+ et XY Ri X Y Fi
Perte de dpendances
X Y F tq X Y [ X ]
Fi
137
X A DF non triviale, A X :
X est une (sur)cl et A nest pas un attribut de cl
La forme normale BCNF vite la redondance dinformation
La dcomposition de schma BCNF sans perte dinformation ne
prserve pas les dpendances fonctionnelles
Maude Manouvrier - Univ. Paris Dauphine
138
X A, DF non triviale de F :
X est une surcl ou A appartient une cl
Maude Manouvrier - Univ. Paris Dauphine
139
140
141