Professional Documents
Culture Documents
INTRODUCTION
Dupont
Symptomes : y Turlututu : sqj Symptomes : y Turlututu : sdd Analyses : xxx
Dupond
Turlututusqjsk Symptom: yyyy Analyses xxxx Turlututudhjsd Analyses :xx
Duhpon
Symptomes : yy Analyses : xxxx Symptomes : yy
Duipont
Turlututu : sq Symptomyyyy Analysesxxxx Turlututudhjsd
Caractristiques
Plusieurs applications
plusieurs formats plusieurs langages
Problmes
Difficults de gestion Incohrence des donnes Cots levs Maintenance difficile Gestion de pannes ??? Partage des donnes ??? Confidentialit ???
Redondance de code
IX - Gestion de la confidentialit VIII - Concurrence daccs VII - Gestion des pannes VI - Gestion de la cohrence
BD
Modlisation du rel
Rel Modle conceptuel Modle logique Modle Physique
Indpendant du modle de donnes Indpendant du SGBD Dpendant du modle de donnes Indpendant du SGBD
IMPLEMENTATION
Mdecin
effectue
Visite
Codasyl
Relationnel Objet
XML
Organisation physique des donnes Structures de stockage des donnes Structures acclratrices (index)
Syntaxe (aperu !) Select Nom, Description From Mdicaments Where Type = Aspirine
1970 : bases thoriques au modle relationnel : Algbre de Codd 1980 : Logiciel de SGBDR commercialiss : ORACLE, SYBASE, SQL SERVER et Access Logiciels libres : mysql; postgresl Actuellement, en germe, SGBDO (Oracle 8 : SGBDOR), Multimdia, Data Mining
10
11
Schma interne :
description des donnes dune base en termes de reprsentation physique en machine, correspondant une spcification des structures de mmorisation et des mthodes de stockage et daccs utilises pour ranger et retrouver les donnes sur disque -> INDEX -> Administrateur BD
Schma externe :
description dune partie de la base de donnes, extraite ou calcule partir de la base physique, correspondant la vision dun programme ou dun utilisateur, donc un arrangement particulier de certaines donnes -> VUES -> Administrateur Applications 12
5 tapes pour llaboration des schmas conceptuels et internes (coeur de la BDR) 1. Perception du monde rel et capture des besoins
Entretiens -> ensemble de vues ou schmas externes
MODELE CONCEPTUEL
Modliser conceptuellement la BD
14
15
Plusieurs noms dans le cadre dun SGBDR : Modles Entits-Associations, Schma ER, MCD Ncessit dune mthodologie et dun cadre de conception : MERISE, UML
Mdecin
effectue
Visite
Codasyl
Relationnel Objet
XML
Organisation physique des donnes Structures de stockage des donnes Structures acclratrices (index)
16
Id-D 1 2 3 .
Entit = objet du monde rel, modle dobjet, classe. Ex :un client pour une socit. Attributs (caractristiques ou proprits)= ils dcrivent les entits;
17
Identifiant = ensemble dattributs permettant de dterminer une et une seule occurence dune entit;
Docteurs
Id-D 1 2 3 . Nom Dupont Durand Masse .. Prnom Pierre Paul Jean Id-V
Prescriptions
Ligne 1 2 1 2 3 . Id-M 12 5 8 12 3 . Posologie 1 par jour 10 gouttes 2 par jour 1 par jour 2 gouttes
Visites
Id-D 1 1 2 2 Id-P 2 1 2 3 Id-V 1 2 3 4 Date 15 juin 12 aot 13 juillet 1 mars Prix 250 180 350 250
1 1 2 2 2 .
Patients
Id-P 1 2 3 4 . Nom Lebeau Troger Doe Perry . Prnom Jacques Zoe John Paule . Ville Paris Evry Paris Valenton . Id-M 1 2 3 .
Mdicaments
Nom Aspegic 1000 Fluisdal Mucomyst .. Description .. .. .. ..
18
Relation = reprsente les liens entre les entits; contrairement aux entits, les relations nont pas
dexistence propre; mais comme les entits, elles sont caractrises par un nom et dventuels attributs.
Reprsentation graphique de ces schmas: entits par rectangles; relations par ellipses; les attributs identifiants sont souligns;
EMPLOYE Code_emp Nom Prenom Date_nais CAMION Immatriculation Poids_vide Annee_mec
Conduire
19
Dimension (ou degr) = nombre dentits impliques dans la relation; Cardinalit (maximale) = nombre de participations maximal dune entit une relation (une relation
binaire peut tre de cardinalit I-I, I-N ou M-N);
-> traduit les rgles et contraintes propres un processus mtier -> approche franaise (MERISE) : nombre de participations dune entit une relation -> approche anglosaxone : nombre de correspondants dune entit au sein dune relation Cette distinction a une importance pratique dans le cas de relation n-aire (avec n>2)
EMPLOYE Code_emp Nom Prenom Date_nais 1 N
travaille
20
Conduire
Conduire
1-N
Poids_vide Annee_mec
ADMINISTRATIF Service
21
CLIENT Code_client
1-N
Commande
quantite derniere_date
1-N
nom adresse
1-N
FOURNISSEUR Code_fournisseur nom adresse
Certains principes peuvent indiquer quune relation ternaire 1-N-N manque de cohrence et que lon ne devrait trouver dans un MCD que des relations ternaires N-N-N (valable pour toutes relations n-aire avec n>2). Ce principe permet de simplifier la suite du processus, et indique quune telle relation devrait pouvoir tre dcouper en deux relations binaires par exemple.
22
. Dterminer la liste des entits; . Pour chaque entit: a) Etablir la liste de ses attributs; b) Parmi ceux-ci, dterminer un identifiant; . Dterminer les relations entre les entits; . Pour chaque relation: a) Dresser la liste des attributs propres la relation; b) Vrifier la dimension (binaire, ternaire); c) Dfinir les cardinalits (I-I, I-N, M-N); . Vrifier le schma obtenu, notamment: a) Supprimer les transitivits; b) Sassurer que le schma est connexe;
23
A toute situation modliser, peuvent correspondre plusieurs schmas diffrents, avec leurs avantages et leurs inconvnients.
24
1-N
Commande
quantite derniere_date
1-N
nom adresse
ternaire ou quaternaire ?
Commande
quantite
1-N
FOURNISSEUR Code_fournisseur nom adresse date
DATE
25
Ne pas attribuer une relation les attributs des entits participantes ou inversement !
PRODUIT code_produit designation prix PRODUIT code_produit designation
1
PROVIENT
N
PROVIENT prix
N
FOURNISSEUR Code_fournisseur nom adresse
N
FOURNISSEUR Code_fournisseur nom adresse
26
PROJET
1
RATTACHER GERER DEPARTEMENT
27
0-1
MARIER
?
MARIAGE
0-1
FEMME FEMME
FEMME
28
Cas pratique: gestion des hpitaux dun dpartement; Enonc: La direction dpartementale dIlde de France souhaite informatiser la gestion des hpitaux du dpartement. Chaque hpital a des activits de soin dans les services mdicaux et des activits de recherche dans les laboratoires. Les mdecins employs sont obligatoirement rattachs un seul hpital. Ils ont le choix entre trois types de fonctions: consultant indpendant, mdecin praticien, mdecin chercheur. Les consultants indpendants ne sont rattachs aucune structure interne de laboratoire ou de service. Les praticiens sont rattachs un seul service. Les chercheurs sont rattachs un laboratoire unique. Les fonctions de praticien et de chercheur peuvent tre cumules. Lorsquun mdecin est consultant indpendant ou mdecin praticien, il se voit confier la responsabilit dun ou plusieurs patients. Dans certains cas ncessitant des traitements complexes, un mme patient peut tre suivi par plusieurs mdecins. Vous devez concevoir le schma de la base de donnes dIle de France en tenant compte de ces hypothses. Les hpitaux, en plus de leurs nom et adresse, sont identifis au moyen dun code. De mme, chaque service hospitalier et chaque laboratoire sont dcrits par un code didentification et un nom. On connat, pour chaque mdecin, son numro matricule, ses coordonnes (nom, prnom, sexe, adresse, date de naissance) et sa spcialit (urologie, gyncologie, griatrie, pdiatrie, etc.). Enfin, chaque patient possde un numro de scurit sociale, un nom, un prnom, une adresse, une date de naissance. Les fonctions que le systme devra effectuer sont: - La gestion dactivit des mdecins; - La gestion du suivi des patients; - Les statistiques dpartementales (nombre de laboratoires par domaine, nombre de mdecins, etc.). Construire le schma ER modlisant cette situation, le justifier en fonction de vos hypothses et indiquer le contenu des entits et relations. Constater les insuffisances du modle ER pour reprsenter ces informations. Proposer plusieurs modlisations EER de cette situation et les justifier. Analyser leurs qualits compares. 29
Schma EER
30
32
33
Bibliographie
1. Bases de Donnes, Georges Gardarin, Ed. Eyrolles, Best Of Eyrolles, 19 euros en 2004 :
ouvrage de rfrence en France, complet mais trs orient vers la thorie et finalement peu pdagogique.
3.
Conception des bases de donnes relationnelles en pratique, J. AKOKA et I. COMYN, Ed. Vuibert Informatique :
ouvrage trs pratique avec exercices et corrigs.
34
MODELE RELATIONNEL
Modliser mathmatiquement la BD
35
36
Mdecin
effectue
Visite
Codasyl
Relationnel Objet
XML
Organisation physique des donnes Structures de stockage des donnes Structures acclratrices (index)
37
Ncessit de rendre oprationnel le schma conceptuel laide dune reprsentation logique, par exemple relationnelle Conue par E.F. Codd (1970s): dfinition rigoureuse des concepts fonde sur la thorie mathmatique des relations, lie celle des ensembles : , ,
38
Domaine =
ensemble de valeurs dfini en extension (par exemple lensemble des grades dun Salari) ou en intention ( par exemple le salaire dun Salari).
Exemples:
ENTIER REEL CHAINES DE CARACTERES EUROS SALAIRE = {4 000..100 000} COULEUR= {BLEU, BLANC, ROUGE} POINT = {(X:REEL,Y:REEL)} TRIANGLE = {(P1:POINT,P2:POINT,P3:POINT)}
Produit cartsien =
Le produit cartsien de plusieurs domaines D1x D2x ... x Dn est lensemble des tuples (N-UPLETS) <V1,V2,....Vn> tels que Vi Di
Exemple: D1 = {Bleu,Blanc,Rouge} D2 = {Vrai, Faux} D1xD2 = {(Bleu,Vrai),(Bleu,Faux),(Blanc,Vrai),}
40
Relation ou Table =
sousensemble du produit cartsien dune liste de domaines, non ncessairement tous distincts = tableau deux dimensions
CoulVins
Une relation est une table deux dimensions Une ligne est un tuple
Un nom est associ chaque colonne afin de la reprer indpendamment de son numro d'ordre
Attribut ou Colonne =
sous-ensemble de valeurs dun domaine
ou le plus souvent
SALARIE(matricule, nom, grade, salaire)
Schma relationnel =
ensemble des schmas des relations dune base de donnesou ensemble des tables
43
Intgrit Logique ou Cohrence des donnes ->assure par la vrification par le SGBD dun ensemble de
contraintes dintgrit ->Objectif : Dtecter les mises jour errone -> Avantages :
simplification du code des applications scurit renforce par l'automatisation mise en commun des contraintes
-> Ncessite :
un langage de dfinition de contraintes d'intgrit la vrification automatique de ces contraintes
44
Contrainte dintgrit =
expression logique qui doit tre vraie, tout moment, dans une base de donnes, par exemple deux employs ne peuvent avoir le mme matricule; Exemples
Contrle sur les donnes lmentaires
Contrle de types: Nom alphabtique Contrle de valeurs: Salaire mensuel entre 1 et 10kEuros
Contrainte de domaine
restriction de lensemble des valeurs possibles dun domaine
Contrainte obligatoire
un attribut doit toujours avoir une valeur
46
Cl
Groupe dattributs minimum qui dtermine de faon unique un tuple dans une relation
Exemples: NumScuSociale pour une PERSONNE
Contrainte dentit
Toute relation doit possder au moins une cl documente
47
Cl Etrangre
Groupe dattributs devant apparatre comme cl dans une autre relation
Exemples:
SALARIE(matricule, nom, grade, salaire, Code_Filiale) FILIALE(Code_Filiale, nom, adresse)
Les cls trangres dfinissent les contraintes d'intgrit rfrentielles Lors d'une insertion, la valeur des attributs doit exister dans la relation rfrence Lors d'une suppression dans la relation rfrence les tuples rfrenant doivent disparatre Elles correspondent aux liens entit-association obligatoires
48
Docteurs
Id-D 1 2 3 . Nom Dupont Durand Masse .. Prnom Pierre Paul Jean Id-V
Prescriptions
Ligne 1 2 1 2 3 . Id-M 12 5 8 12 3 . Posologie 1 par jour 10 gouttes 2 par jour 1 par jour 2 gouttes
Visites
Id-D 1 1 2 2 Id-P 2 1 2 3 Id-V 1 2 3 4 Date 15 juin 12 aot 13 juillet 1 mars Prix 250 180 350 250
1 1 2 2 2 .
Patients
Id-P 1 2 3 4 . Nom Lebeau Troger Doe Perry . Prnom Jacques Zoe John Paule . Ville Paris Evry Paris Valenton . Id-M 1 2 3 .
Mdicaments
Nom Aspegic 1000 Fluisdal Mucomyst .. Description .. .. .. ..
49
ou le plus souvent
SALARIE(matricule, nom, grade, salaire, Code_Filiale) FILIALE(Code_Filiale, nom, adresse) SALARIE[Code_Filiale]
FILIALE[Code_Filiale]
50
FILIALE
CODE_FILIALE NOM
ADRESSE
51
Questions ?
INTENTION ET EXTENSION
Un schma de relation dfinit l'intention de la relation Une instance de table reprsente une extension de la relation
Thorie de la normalisation =
dfinition formelle de la qualit des tables au regard du problme pos par la redondance des donnes et au moyen de la notion de dpendance fonctionnelle
53
Dpendance fonctionnelle =
soit une table relationnelle T(A1,A2,,An), soient X et Y deux sous-ensembles de colonnes de T, on dit que X dtermine fonctionnellement Y (on note X->Y) si, un n-uplet de valeurs de X, correspond au plus un n-uplet de valeurs de Y
Forme Normale =
plus une table est normalise, moins elle comporte de redondances et donc de risques dincohrence:
1FN: la table ne contient que des attributs atomiques(code postal et ville); 2FN: 1FN + il nexiste pas de dpendance fonctionnelle entre une partie dune cl et une colonne non cl de la table. Autrement dit toute colonne dpend de toute la cl. 3FN: 2FN + il nexiste aucune dpendance fonctionnelle entre les colonnes non cl
Algorithme de Bernstein=
algorithme permettant partir de la seule connaissance des dpendances fonctionnelles entre attributs reprsentatives dune situation de gnrer automatiquement un schma relationnel en troisime forme normale
55
HOPITAL(code_hopital, nom_hopital,adresse_hopital)
CREATE TABLE HOPITAL( code_hopital INT PRIMARY KEY, nom_hopital CHAR(10), adresse_hopital CHAR(30)) 56
Rgle 2. Toute relation binaire M-N est traduite en une table relationnelle dont les caractristiques sont les suivantes : Le nom de la table est le nom de la relation ; La cl de la table est forme par la concatnation des identifiants des entits participants la relation ; Les attributs spcifiques de la relation forment les autre colonnes de la table ; Une contrainte dintgrit rfrentielle est gnre entre chaque colonne cl de la nouvelle table et la table dorigine ;
CONSULTE[num_secu] MEDECIN[num_secu_sociale]
57
Rgle 3. toute relation binaire I-N est traduite : soit par un report de cl : lidentifiant de lentit participant la relation ct N est ajout comme colonne supplmentaire la table reprsentant lautre entit. Cette colonne est parfois appele cl trangre. Le cas chant, les attributs spcifiques la relation sont eux aussi ajouts la mme table ; soit par une table spcifique dont les caractristiques sont les suivantes : 1. le nom de la table est le nom de la relation ; 2. la cl de la table est lidentifiant de lentit participant la relation ct 1 ; 3. les attributs spcifiques de la relation forment les autres colonnes de la table ; de plus, une contrainte dintgrit est gnre ;
CREATE TABLE LABORATOIRE( code_labo INT PRIMARY KEY, nom_labo CHAR(10), 58 code_hopital INT REFERENCES HOPITAL(code_hopital))
Rgle 4. Toute relation binaire I-I est traduite, au choix, par lune des trois solutions suivantes : Fusion des tables des entits quelle relie ; Report de cl dune table dans lautre ; Cration dune table spcifique reliant les cls des deux entits ; De plus, deux contraintes dintgrit rfrentielle sont gnres ; Rgle 5. Toute relation ternaire ou plus est traduite par une table spcifique ;
Rgle 6. Toute relation rcursive est considre comme une relation binaire. Sa traduction dpend donc du type de cette relation binaire (I-I, I-N ou MN) et obit lune des rgles 2,3 ou 4 ;
59
Rgle 7. Toute gnralisation E de n entits E1, E2, , En peut tre traduite au choix par lune des trois solutions suivantes : La cration dune seule table reprsentant lentit gnrique E et intgrant tous les attributs des entits spcifiques ; La cration de n tables reprsentant les entits E1, E2, En qui hritent de lensemble des attributs et des relations de lentit gnrique E; La cration conjointe des tables E, E1, E2, En relies par des relations I-I (voir rgle 4) ; Rgle 8. Vrifier le schma relationnel obtenu au regard des dpendances fonctionnelles existant entre les attributs pour vrifier que lensemble des relations sont de type 3FN ;
60
61
Ceci est une mthode, il en existe beaucoup dautres qui parfois entreront en contradiction apparente avec celle-ci, notamment sur la gestion des cardinalits minimales pour le passage Conceptuel-> Relationnel. Constituer un bon schma conceptuel est une affaire avant tout de bons sens. Si le schma conceptuel est cohrent, on obtient sans aucun doute un schma relationnel au niveau minimum de la troisime forme normale. La thorie de la normalisation est surtout utile quand on reprend une base qui existe dj et quil faut essayer de la rparer. Dans ce cas, faire la liste des dpendances fonctionnelles et appliquer lalgorithme de type Bernstein peut tre une solution pour retrouver la cohrence. Essayer de retrouver le modle conceptuel est aussi une faon de procder (rtroengineering). Dans tous les cas, ce nest pas une tache facile. Dautant plus, que pour des raisons doptimisation (en temps de rponse essentiellement), on est parfois amen dnormaliser un schma en crant des redondances et au prix dun code un peu plus lourd.
62
0-1
1-N
Conduire
A cause de la cardinalit 0-1, deux possibilits : On la traite comme une relation 1-N :
EMPLOYE(Code_emp,Nom,Prenom,Date_nais,Immatriculation) CAMION(Immatriculation, Poids_vide,Annee_mec)
On la traite comme une relation N-N, pour viter les valeurs nulles dans EMPLOYE pour le champ Immatriculation
EMPLOYE(Code_emp,Nom,Prenom,Date_nais) CAMION(Immatriculation, Poids_vide,Annee_mec) CONDUIRE(Code_emp,Immatriculation)
Du coup, en analysant les dpendances fonctionnelles dans CONDUIRE on saperoit que Code_emp -> Immatriculation, et pour tre en troisime forme normale il faut crire CONDUIRE (Code_emp, Immatriculation). Vous vous apercevez ici que passer du MR au MCD nest pas une tache ais, tant donn que les mthodes de passage du MCD au MR peuvent lgrement diffrer en fonction des pratiques de chaque concepteur.
63
o on a supprim le schma de la relation DATE car il ne contient quun attribut (sa cl)
64
ALGEBRE RELATIONNELLE
65
Langage de requtes
Fondement mathmatique la base de SQL : le langage des Bases de Donnes Traduction automatique des questions dclaratives (qui sont les employs habitant Paris ?) en programmes procduraux. Optimisation automatique des questions
Langage oprationnel, trs utile pour reprsenter les plans dexcution.
66
Oprations Ensemblistes
Ensemble : une dfinition mathmatique pour une collection dobjets ne possdant pas dlments dupliqus. Oprations pour des relations de mme schma
UNION note INTERSECTION note DIFFERENCE note
67
Projection
Elimination des attributs non dsirs VINS et suppression des tuples en double; Algorithme de tris !! donc trs coteux en temps de calcul; Relation -> Relation note: A1,A2,...Ap (R) Avec Ai pour i de 1 n une liste de domaines
Cru Mill Rgion Qualit
A B A C
JULIENAS 1986
(VINS)
Cru,Rgion
Cru,Rgion
JULIENAS BEAUJOLAIS
68
Projection
Patients
Id-P 1 2 3 4 Nom Lebeau Troger Doe Perry Prnom Jacques Zoe John Paule Ville Paris Evry Paris Valenton
Patients
Patients
Id-P 1 2 3 4
Nom, Prnom
69
Restriction
Obtention des tuples de R satisfaisant un critre Q Relation ->Relation, note Q(R) Q est le critre de qualification de la forme :
(Ai Op Valeur) avec Op ={ =, <, >=, >, <=, !=} Il est possible de raliser des "ou" (union) et des "et" (intersection) de critres simples
VINS Cru Mill Rgion BOURGOGNE BOURGOGNE BEAUJOLAIS BEAUJOLAIS Qualit A B A C
MILL>1983
VINS
Rgion BEAUJOLAIS
Qualit C
70
Patients
Patients
Id-P 1 2 3 4
Ville='Paris'
71
Produit cartsien
Composition de deux relations sur un domaine commun; = Cross Produit Relation2 ->Relation, note R1xR2
72
Jointure
Composition de deux relations sur un domaine commun AVEC UNE CONDITION de jointure !
Relation2 ->Relation,
VINS Cru VOLNAY VOLNAY CHABLIS JULIENAS
LOCALISATION Cru
Qualit A B A C
QualMoy
note R1
R2
Critre de jointure Q, Attributs gaux : Attribut1 = Attribut2 Equi-jointure Comparaison d'attributs : Attribut1 Attribut2 Thta-jointure Sous-ensemble du produit cartsien des deux relations
A A B
V. Cru = VINSREG
A B A A
A A A B
73
Jointure
Patients
Id-P 1 2 3 4 Nom Lebeau Troger Doe Perry Prnom Jacques Zoe John Paule Ville Paris Evry Paris Valenton
P.ID_P=V.ID_P
Visites
Id-D 1 1 2 2 Id-P 2 1 2 3 Id-V 1 2 3 4 Date 15 juin 12 aot 13 juillet 1 mars Prix 250 180 350 250
Id-P 1 2 2 3
Id-D 1 2 2
Id-P 1 2 2 3
Id-V 2 1 3 4
Paris ID_P 1
Patients
Visites
En fait cest une qui-jointure
Patients
Visites
P.ID_P=V.ID_P
ID_P
ID_P
74
Jointure :
Une jointure est une composition dun PRODUIT CARTESIEN et dune RESTRICTION. Attention : R S = RxS !! Trs dangeureux !
En consquence, cest assez coteux en place mmoire et en temps de calcul mais R S QRxS.
Condition
Condition
x
Visites Patients Visites
75
Patients
OUTER JOINs
Remarquez que la plupart des infos sont perdues en appliquant une jointure deux relations. Les jointures externes sont utilises pour afficher tous les nuplets, y compris ceux n'ayant pas de correspondance dans l'une ou l'autre des relations concernes. Une jointure externe conserve les informations qui auraient t perdues, en remplaant les valeurs manquantes avec la valeur NULL. Il existe 3 formes de jointure externe, dpendant des donnes que lon veut conserver. LEFT OUTER JOIN - keep data from the left-hand table RIGHT OUTER JOIN - keep data from the right-hand table 76 FULL OUTER JOIN - keep data from both tables
Symbole ?
78
Union
Union ensembliste de deux relations de MEME SCHEMA ! Relation2 ->Relation, note R1 R2
79
UNION
Patients
Nom Lebeau Troger Doe Perry Pr nom Jacques Zoe John Paule Ville Paris Evry Paris Valenton
Malades
Lebeau Troger Doe Perry Ducq Foch Jacques Paris Zoe John Paule Pierre Didier Evry Paris Valenton Paris Paris
80
Intersection
Intersection ensembliste de deux relations de MEME SCHEMA ! Relation2 ->Relation, note R1 R2
81
INTERSECTION
Patients
Id-P 1 2 3 4 Nom Lebeau Troger Doe Perry Pr nom Jacques Zoe John Paule Ville Paris Evry Paris Valenton
Malades
1 Lebeau
IdM 1 2 3
Jacques Paris
82
DIFFERENCE
Diffrence ensembliste de deux relations de MEME SCHEMA ! Relation2 ->Relation, note R1 - R2 Attention R1-R2 R2-R1
83
DIFFERENCE
Patients
Nom Lebeau Troger Doe Perry Pr nom Jacques Zoe John Paule Ville Paris Evry Paris Valenton
Malades
84
Division
R = R1 / R2 R(X) est la division de R1 (X, Y) par R2 (Y) ssi R contient tous les tuples ( x ) tels que (y) R2, ( x, y ) R1
S# S1 S1 S2 P# P1 P2 P1 P# P1 P2 R2
85
S# S1 R
R1
Rsum
Oprations de base:
Slection ( ) : RESTRICT(Critre, Relation) ou SELECT
Slectionne un sous-ensemble des lignes dune relation.
Produit Cartsien ( X )
Permet de combiner deux relations : PRODUIT(Relation1, Relation2)
Diffrence ( - )
Elimine les tuples de R1 contenus dans R2
Union ( )
Constitue une relation R avec les tuples de R1 et ceux de R2
Oprations additionnelles:
Jointure ( | |) : JOIN(Critre, Relation1, Relation2)
Combinaison de produit cartsien et slection sur colonne comparables (=, <, >, ...)
Intersection
Constitue une relation R avec les tuples appartenant la fois R1 et R2
Division
86
Rsum (bis)
Il y a deux types doprateurs de requtes : Fonds sur la thorie des ensembles :
UNION, INTERSECTION, DIFFERENCE, et CARTESIAN PRODUCT (ou
CROSS PRODUCT ou JOIN PRODUCT)
87
Chaque opration retournant une relation, les oprations peuvent tre composes ! Lalgbre relationnelle est ferme. L'algbre relationnelle est complte
Les cinq oprations de base permettent de formaliser sous forme d'expressions toutes les questions que l'on peut poser avec la logique du premier ordre (sans fonction).
Exemple :
Nom et prnom des buveurs de volnay 1988 ? PROJECT (NOM, PRENOM, RESTRICT(CRU="VOLNAY" et MILL =1988, JOIN(VINS, ABUS, BUVEURS)))
88
SQL
Une requte SQL est une paraphrase d'une expression de l'algbre relationnelle en anglais; Requte lmentaire : SELECT A1, A2, Ap FROM R1, R2, Rk WHERE Q [{UNION |INTERSECT | EXCEPT } ] Smantique du bloc select : PROJECT (A1,A2,Ap, ( RESTRICT (Q, PRODUIT ( R1, R2, , Rk) ) ) )
89
Le SELECT relationnel SELECT is used to obtain a subset of the tuples of a relation that satisfy a select condition.
For example, find all employees born after 1st Jan 1950:
SELECT
dob>'01/JAN/1950'
(employee)
Le PROJECT relationnel
The PROJECT operation is used to select a subset of the attributes of a relation by specifying the names of the required attributes.
For example, to get a list of all employees surnames and employee numbers: PROJECT surname,empno(employee)
90
Mapping this back to SQL gives: SELECT empno FROM employee WHERE depno = 1;
91
Select From Where and and Patients.Nom, Patients.Prnom Patients, Visites Patients.Id-P = Visites.Id-P Patients.Ville = Paris Visites.Date = 15 juin
Patients
Visites
92
Patients Visites Patients
Visites
93
LANGAGE SQL
94
Origines et Evolutions
SQL est driv de l'algbre relationnelle et de SEQUEL (1975) Il a t intgr SQL/DS, DB2, puis ORACLE, INGRES, Il existe trois versions normalises de base, du simple au complexe :
SQL1 86 version minimale SQL1 89 addendum (intgrit) SQL2 (92) langage relationnel complet
Une version SQL3 (99) tendue (objets, rgles) est en intgration La plupart des systmes supportent SQL2 complet
95
Oprations
Oprations de base SELECT, INSERT, UPDATE, DELETE Oprations additionnelles dfinition et modification de schmas dfinition de contraintes d'intgrit dfinition de vues accord des autorisations gestion de transactions
96
SQL1 - 86
LANGAGE DE DEFINITIONS DE DONNEES CREATE TABLE CREATE VIEW LANGAGE DE MANIPULATION DE DONNEES SELECT - OPEN INSERT - FETCH UPDATE - CLOSE DELETE LANGAGE DE CONTROLE DE DONNEES GRANT et REVOKE BEGIN et END TRANSACTION COMMIT et ROLLBACK
97
Conventions mta-syntaxiques A::=B se lit A est redfini par B A|B se lit A ou B [A] se lit A est optionnel A+ est quivalent A[,..,A] Les symboles ::=, | , [, ], + ne figurent jamais dans les expressions SQL
98
Restriction : arithmtique (=, <, >, , ,) textuelle (LIKE) sur intervalle (BETWEEN) sur liste (ou ensembles issus de SELECT par exemple) (IN) Possibilit de blocs SELECT imbriqus par : IN, EXISTS, NOT EXISTS, ALL, SOME, ANY
99
Fonction et Agrgat
FONCTION et ATTRIBUT CALCULE :
Fonction de calcul en ligne applique sur un ou plusieurs attributs Exemple : SELECT TVA, HT, (1+TVA) *TTC FROM ACHATS
Exemples d'agrgats
VINS CRU CHABLIS CHABLIS VOLNAY VOLNAY MEDOC MILL 1977 1987 1977 1986 1985 DEGRE 10.9 11.9 10.8 11.2 11.2 QUANTITE 100 250 400 300 200
SUM
On regroupe sur la colonne CRU mais on fait des statistiques sur la colonne QUANTITE !
101
103
Q6 : Calculer le degr moyen et le degr minimum pour tous les crus de 94 dont le degr minimum est suprieur 12.
SELECT CRU, AVG(DEGRE), MIN(DEGRE) FROM VINS WHERE MILLESIME = 1994 GROUP BY CRU HAVING MIN(DEGRE) > 12;
106
107
Q8bis : Donner le nom des vins qui ont t bu par tous les108 buveur ?
Requte Union
Q10 :Donner le numro et le cru des vins bus plus de 100 fois ou bien jamais bus
( SELECT V.NV, V.CRU FROM VINS V, ABU A WHERE V.NV = A.NV GROUP BY V.NV HAVING COUNT(A.NV) > 100 ) UNION ( SELECT NV, CRU FROM VINS WHERE NV NOT IN (SELECT NV FROM ABU) );
110
Create Table
CREATE TABLE <relation name> (<attribute definition>+) [{PRIMARY KEY | UNIQUE} (<attribute name>+)] avec : <attribute definition> ::= <attribute name> <data type> [NOT NULL [{UNIQUE | PRIMARY KEY}] ] Exemple : CREATE TABLE VINS ( NV INTEGER PRIMARY KEY CRU CHAR VARYING MILL INTEGER NOT NULL, DEGRE FIXED 5.2 );
111
Commande INSERT
INSERT INTO <relation name> [( attribute [,attribute] )] {VALUES (<value spec.> [, <value spec.>]) |<query spec.>} Exemples
INSERT INTO VINS (NV, CRU, MILLESIME) VALUES (112, (JULIENAS, NULL); INSERT INTO BUVEURS (NB,NOM,PRENOM) SELECT NVT, NOM, PRENOM FROM VITICULTEURS WHERE VILLE LIKE '%DIJON%;
112
Commande UPDATE
UPDATE <relation name> SET <attribute = {value expression | NULL} [<attribute> = {value expression | NULL}] [WHERE <search condition>] EXEMPLE
UPDATE ABUS SET QTE = QTE * 1.1 WHERE ABUS.NV IN SELECT NV FROM VINS WHERE CRU = 'VOLNAY' AND MILLESIME = 1990;
113
Commande DELETE
DELETE FROM <relation name> [WHERE <search condition>] EXEMPLE DELETE FROM ABUS WHERE NV IN SELECT NV FROM VINS WHERE DEGRE IS NULL
114
SQL1 - 89 : Intgrit
Valeurs par dfaut : CREATE TABLE VINS ( NV INT UNIQUE, CRU CHAR(10), ANNEE INT, DEGRE FIXED (5,2) , NVT INT, PRIX INT DEFAULT 40 ); Contraintes de domaine : SALAIRE INT CHECK BETWEEN 6000 AND 100000
115
< def_colonne > ::= <nom_colonne> < type nom_domaine > [CONSTRAINT nom_contrainte < NOT NULL UNIQUE PRIMARY KEY CHECK (condition) REFERENCES nom_table (liste_colonnes) > ] < def_contrainte_table > ::= CONSTRAINT nom_contrainte < UNIQUE (liste_colonnes) PRIMARY KEY (liste_colonnes) CHECK (condition) FOREIGN KEY (liste_colonnes) REFERENCES nom_table (liste_colonnes) > [NOT] DEFERRABLE
117
CREATE TABLE EXPEDITIONS ( numExp INTEGER PRIMARY KEY date_exp DATE, qte QUANTITE, CONSTRAINT refCom FOREIGN KEY numExp REFERENCES COMMANDES (numCom) DEFERRABLE ); L'association d'un nom une contrainte est optionnelle. Ce nom peut tre utilis pour rfrencer la contrainte (ex: messages d'erreurs). DEFERRABLE : vrification de contrainte diffrable ( la fin dune transaction par exemple)
SQL2 (1992)
Trois niveaux distingus :
Entry SQL2 = SQL89 + manques Intermediate SQL2 =Complments relationnels Full SQL2 = Gadgets en plus
119
Entry SQL2
Codes rponses SQLSTATE Renommage des colonnes rsultats Mots cls utilisables entre " " Mta-base normalise (schmas)
120
Exemples de domaine
CREATE DOMAIN cru VARCHAR(20) ; CREATE DOMAIN couleur_vins CHAR(10) DEFAULT 'rouge' ; CREATE DOMAIN date_commande DATE DEFAULT CURRENT_DATE ; CREATE DOMAIN quantite SMALLINT ; Possibilit de crer des domaines avec contraintes : CREATE DOMAINE MONEY IS DECIMAL (5,2) DEFAULT (-1) CHECK (VALUE = -1 OR VALUE > 0) NOT NULL;
SQL2 : Types
Types de donnes date avec oprations :
DATE, TIME et TIMESTAMP Intervalles de temps
SQL2 : Oprateurs
128
Jointure Naturelle
La jointure naturelle est une quijointure dont la condition porte sur l'galit de valeurs entre tous les attributs de mme nom, des relations concernes. Le schma de la relation rsultante correspond une concatnation de l'ensemble des attributs des deux relations dont elle est issue, autour du ou des attributs communs.
129
Sur quelles colonnes faire porter un index ? Sur celles qui sont le plus souvent utilises dans les critres de recherche Quel index utiliser ? Arbres B (B-tree) : index par dfaut et mthode la plus puissante Arbres R (R-tree) : index pour les oprations sur les donnes gomtriques CREATE INDEX geo_ids ON polygones USING RTREE (forme)
PostgreSQL : ->INSERT INTO test values (4, fff); ->ANALYSE test; \\pour mettre jour les stat de la table) ->EXPLAIN select * from test where i<34; ->CREATE INDEX testindex on test(i); ->EXPLAIN select * from test where i=34;
132
Exemple: CREATE DATABASE VIGNOBLES // non normalis CREATE SCHEMA COOPERATIVE CREATE DOMAIN ... CREATE TABLE ...
SQL2 Full
Extension des dates et temps Expressions tendues avec correspondances de colonnes (ASSERTION) Possibilit de SELECT en argument d'un FROM Vues concrtes Contraintes d'intgrit multi-tables Contrles d'intgrit diffrs (DEFERRABLE)
136
Composants multiples
Framework, Foundation, Binding CLI, PSM Transactions, temporal, real-time Multimdia
Procdures stockes
Persistent Stored Modules (PSM)
138
139
Conclusion
Un standard de plus en plus complet et de plus en plus suivi :
Attention aux approximations et imitations incompltes Tout ou presque existe dans les propositions SQL2 ou SQL3 Une rfrence pour implmenter et utiliser chaque aspect des BD
http://sqlpro.developpez.com/cours/sqlaz/ddl/?page=sommaire
140
VUES et DROITS
141
Indpendance Logique
Les applications peuvent dfinir des vues logiques de la BD
Gestion des mdicaments
Nombre_Mdicaments
IdM 1 2 3 . Nom Aspegic 1000 Fluisdal Mucomyst .. Description .. .. .. .. Nombre 30 20 230 ..
Patie nts
Id- P 1 2 . No m Leb eau Tro ger . Prno m Jacq u es Zo e . Id -M 1 2 3 .
M dicam e nt
No m Asp eg ic 1 0 0 0 Flu isd al Mu co my st .. Descriptio n .. .. .. ..
Docteur
Id-D 1 2 3 . Nom Dupont Durand Masse .. Prnom Pierre Paul Jean Id-V
Prescription
Ligne 1 2 1 2 3 . Id-M 12 5 8 12 3 . Posologie 1 par jour 10 gouttes 2 par jour 1 par jour 2 gouttes
Visites
Id-D 1 1 2 2 Id-P 2 1 2 3 Id-V 1 2 3 4 Date 15 juin 12 aot 13 juillet 1 mars Prix 250 180 350 250
1 1 2 2 2 .
Patients
Id-P 1 2 3 4 . Nom Lebeau Troger Doe Perry . Prnom Jacques Zoe John Paule . Id-M 1 2 3 .
Mdicament
Nom Aspegic 1000 Fluisdal Mucomyst .. Description .. .. .. ..
143
Possibilit d'intgrer des applications existantes sans modifier les autres. Possibilit de limiter les consquences du partage : Donnes confidentielles.
144
145
Relation d'un schma externe dduite des relations de la base par une question Exemple : GrosBuveurs
CREATE VIEW GrosBuveurs AS SELECT NB, Nom, Prnom, FROM Buveurs, Abus WHERE Buveurs.NB = Abus.NB and Abus.Quantit > 100
Calcul de la vue
Une vue est une fentre dynamique sur la BD et est recalcule chaque accs. Une vue peut tre matrialise (vue concrte).
146
Le SGBD transforme la question sur les vues en question sur les relations de base
Question Q sur des vues
Gestionnaire de Vues
Dfinition des vues Question Q sur les relations de base
147
Schma conceptuel : VINS (NV, CRU, ANNEE, DEGRE, NVIT) VITICULTEURS (NVIT, NOM, PRENOM, VILLE) BUVEURS (NB, NOM, PRENOM, VILLE) COMMANDE (NB, NV, QTE, DATE) On peut dfinir de nombreuses applications particulires qui n'utilisent qu'une partie des donnes du schma.
Exemple
APPLICATION = INFLUENCE GEOGRAPHIQUE SUR LA CONSOMMATION DE L'ANNEE 1996
VUES = RESTRICTION-PROJECTION DES RELATIONS DE BASE BUVEURS-1 (NB, VILLE) ACHETE-1 (NB, NV, QTE, DATE) // restreint aux dates de l'anne 96 VINS-1 (NV, CRU) VUE = RESTRUCTURATION DU SCHEMA CONCEPTUEL ACHAT-2 (NB, VILLE, CRU, QTE, DATE) VUE = RESTRUCTURATION et AGREGATION CONSOMMATION-PAR-VILLE CPV (VILLE, CRU, QTE)
CREATE VIEW <nom_vue> [(liste_attributs)] AS <expression_de_slection> [WITH CHECK OPTION] L'expression de slection peut porter sur des tables de base et/ou des vues Dans le cas de vues modifiables, la clause WITH CHECK OPTION garantit que les tuples insrs (ou modifis) dans la vue vrifient bien le critre de la vue
Date
Ville = Paris
Cru, Qte
Rsultat
Group By CPV
Group By CPV
Ville = Paris
Cru, Qte
Rsultat
VINS
Ville = Paris
Date
Group By CPV
Cru, Qte
Rsultat
Pour rendre le report de mises jour possible, la dfinition de la vue doit respecter certaines contraintes:
la clause SELECT doit conserver les cls de toutes les relations de base la clause SELECT ne doit pas contenir de calcul d'agrgat la dfinition ne doit pas contenir de clause GROUP BY ni HAVING
Dans SQL2, en plus des conditions prcdentes, seules les vue dfinies partir d'une relation unique seront considres comme modifiables
Vues concrtes
Vue concrte :
Vue dont on a demande l'implantation dans la base de donnes (virtuel ---> rel)
Intrts :
interrogations frquentes, systmes rpartis
Problmes :
Maj des donnes de base rpercuter sur la vue
BD
BD
Le SGBD gre les accs concurrents Chacun limpression dtre seul (Isolation) Cohrence conserve (Verrouillage)
159
Confidentialit et
Usagers : Usager ou groupe dusagers Objets : Relation, Vue, autres objets (procdures, triggers, etc.)
160
Id-E Nom Prnom Poste 1 Ricks Jim 5485 2 Trock Jack 1254 3 Lerich Zoe 5489 4 Doe Joe 4049
Id-E Nom Prnom Poste Adresse 1 Ricks Jim 5485 . 2 Trock Jack 1254 . 3 Lerich Zoe 5489 . 4 Doe Joe 4049 .
Ville Salaire Paris 230 Versailles 120 Chartres 380 Paris 160
161
TRANSACTIONS et INTEGRITE
167
Intgrit Logique
Objectif : Dtecter les mises jour errones Contrle sur les donnes lmentaires
Contrle de types: ex: Nom alphabtique Contrle de valeurs: ex: Salaire mensuel entre 5 et 50kf
168
Contraintes dintgrit
Avantages :
simplification du code des applications scurit renforce par l'automatisation mise en commun des contraintes
Ncessite :
un langage de dfinition de contraintes d'intgrit la vrification automatique de ces contraintes
169
Exemples de contrainte
Contraintes dintgrit rfrentielles
Docteurs
Id-D 1 2 3 . Nom
Dupont Durand Masse
Prescriptions Visites
Id-D Id-P 1 1 2 2 2 1 2 3 IdV 1 2 3 4 Date
15 juin 12 aot 13 juillet 1 mars
Lign e 1 2 1 2 3 .
IdM 12 5 8 12 3 .
Posologi e
1 par jour 10 gouttes 2 par jour 1 par jour 2 gouttes
..
170
Dissocie
Spcifie au travers de la clause CREATE ASSERTION
Exemple: CREATE DOMAIN couleur_vins CHAR(5) DEFAULT 'rouge' CONSTRAINT couleurs_possibles CHECK (VALUE IN ('rouge', 'blanc', 'ros'))
Contraintes rfrentielles
FOREIGN KEY (liste_colonnes) REFERENCES nom_table (liste_colonnes) [ON DELETE {CASCADE SET DEFAULT SET NULL}] [ON UPDATE {CASCADE SET DEFAULT SET NULL}] [NOT] DEFERRABLE Les contraintes rfrentielles caractrisent toutes les associations Problme des contraintes rfrentielles croises ==> mode DEFERRABLE En cas de violation de la contrainte, la mise jour peut tre rejete ou bien une action de correction est dclenche ==> ON DELETE spcifie l'action effectuer en cas de suppression d'un tuple rfrenc ON UPDATE spcifie l'action effectuer en cas de mise jour de la cl d'un tuple rfrenc
CREATE TABLE ABUS ( NB INTEGER NOT NULL, NV INTEGER NOT NULL, date DATE, qte QUANTITE,
176
Contraintes dissocies
CREATE ASSERTION nom_contrainte CHECK (condition)
Remarque: les contraintes dissocies peuvent tre multi-tables Exemple: CREATE ASSERTION quantite_produite
CHECK ( (SELECT SUM(quantite) FROM VINS) > ( SELECT SUM(quantite) FROM ABUS) )
Intgrit Physique
Motivations : Tolrance aux fautes
Transaction Failure : Contraintes d'intgrit, Annulation System Failure : Panne de courant, Crash serveur ... Media Failure : Perte du disque Communication Failure : Dfaillance du rseau
Objectifs :
Assurer l'atomicit des transactions Garantir la durabilit des effets des transactions commises
Moyens :
Journalisation : Mmorisation des tats successifs des donnes Mcanismes de reprise
178
Transaction
Etat cohrent Begin Transaction Incohrence possible... Etat cohrent Commit
Begin T1 CCourant = CCourant - 2000 CEpargne = CEpargne - 3000 CCourant = CCourant + 3000 Commit T1
Faire le lien avec la clause DEFERRABLE : contrainte CCourant > 0
179
Atomicit et Durabilit
ATOMICITE Begin CEpargne = CEpargne 3000 CCourant = CCourant + 3000 Commit T1 Annuler le dbit !!
Panne
DURABILITE Begin CEpargne = CEpargne 3000 CCourant = CCourant + Crash disque 3000 Commit T1
Cohrence
La transaction doit faire passer la base de donne d'un tat cohrent un autre.
Isolation
Les rsultats d'une transaction ne sont visibles aux autres transactions qu'une fois la transaction valide.
Durabilit
Les modifications dune transaction valide ne seront jamais perdue
181
Commit et Abort
INTRODUCTION DACTIONS ATOMIQUES
Commit (fin avec succes) et Abort (fin avec echec) Ces actions s'effectuent en fin de transaction
COMMIT
Validation de la transaction Rend effectives toutes les mises jour de la transaction
ABORT
Annulation de la transaction Dfait toutes les mises jour de la transaction
182
Effet logique
Mmoire de la transaction Update Update
Commit
Abort
Bases de donnes
Poubelle
183
Interface applicative
API pour transaction simple
Trid Begin (context*) Commit () Abort()
JAVA
import java.sql.*; public class TransactionPairs { public static void main(String args[]) {
String url = "jdbc:mySubprotocol:myDataSource"; Connection con = null; Statement stmt; PreparedStatement updateSales; PreparedStatement updateTotal; String updateString = "update COFFEES " + "set SALES = ? where COF_NAME like ?"; String updateStatement = "update COFFEES " + "set TOTAL = TOTAL + ? where COF_NAME like ?"; String query = "select COF_NAME, SALES, TOTAL from COFFEES"; try { Class.forName("myDriver.ClassName"); } catch(java.lang.ClassNotFoundException e) { System.err.print("ClassNotFoundException: "); System.err.println(e.getMessage()); }
185
try { con = DriverManager.getConnection(url, "myLogin", "myPassword"); updateSales = con.prepareStatement(updateString); updateTotal = con.prepareStatement(updateStatement); int [] salesForWeek = {175, 150, 60, 155, 90}; String [] coffees = {"Colombian", "French_Roast", "Espresso", "Colombian_Decaf","French_Roast_Decaf"}; int len = coffees.length; con.setAutoCommit(false); for (int i = 0; i < len; i++) { updateSales.setInt(1, salesForWeek[i]); updateSales.setString(2, coffees[i]); updateSales.executeUpdate(); updateTotal.setInt(1, salesForWeek[i]); updateTotal.setString(2, coffees[i]); updateTotal.executeUpdate(); con.commit(); } con.setAutoCommit(true); updateSales.close(); updateTotal.close(); stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(query); while (rs.next()) { String c = rs.getString("COF_NAME"); int s = rs.getInt("SALES"); int t = rs.getInt("TOTAL"); System.out.println(c + " " + s + " } stmt.close(); con.close();
" + t);
186
catch(SQLException ex) { System.err.println("SQLException: " + ex.getMessage()); if (con != null) { try { System.err.print("Transaction is being "); System.err.println("rolled back"); con.rollback(); } catch(SQLException excep) { System.err.print("SQLException: "); System.err.println(excep.getMessage()); } } } } }
187
Dclencheurs (Triggers)
Dclencheur :
action ou ensemble d'actions dclenche(s) automatiquement lorsqu'une condition se trouve satisfaite aprs l'apparition d'un vnement
Exemples de trigger
CREATE TRIGGER degr_croissant BEFORE UPDATE OF degre ON VINS REFERENCING OLD AS old_vin NEW AS new_vin WHEN (new_vin.degre < old_vin.degre) ROLLBACK FOR EACH ROW CREATE TRIGGER rfrence_vins BEFORE DELETE ON VINS DELETE FROM ABUS WHERE ABUS.NV = VINS.NV FOR EACH ROW
Equivalent ON DELETE CASCADE sur la table VINS ?
PostgreSQL : CREATE TRIGGER {BEFORE|AFTER} {vnement } ON nom_table FOR EACH {ROW|STATEMENT} EXECUTE PROCEDURE nom_fonction (paramtres) La fonction nom_fonction est dveloppe en PL/pgSQL par exemple
Bilan transactions
Des techniques complexes Un problme bien matris dans les SGBDR La concurrence complique la gestion de transactions Les transactions longues restent problmatiques Enjeu essentiel pour le commerce lectronique Toutes ces vrifications de contraintes se font par programmation : TRIGGER associ des fonctions crites en PL/pgSQL pour postresql, dans le code 191 Java directement par exemple
CONCLUSION
Le modle relationnel offre
des contraintes d'intgrits riches des droits d'accs intgrs un concept de vue trs puissant des methodes d'interrogation simples et efficaces
Problmes difficiles :
maj au travers des vues vues concrtes
Interfaage BD/Applications
C + curseurs Java + JDBC
JDBC : Java Database Connectivity est une API (Interface Applicative) calque sur ODBC (Object Database Connectivity) Classes du package java.sql (SQL3 ++) Exportations des interfaces des classes par le JDBC Driver Manager
// Connexion Connection con = DriverManager.getConnection(url); // Cration d'une instruction Statement statement = con.createStatement(); // Excution d'une requete String query = "SELECT * FROM Employs"; ResultSet resultset = statement.executeQuery(query); // Traitement des rsultats while(resultset.next()) { System.out.println(resultset.getString(2) + " " + resultset.getString(3)); } // fermeture de la connexion statement.close(); con.close();
SQL
Base de donnes
194
Interfaage BD/Web
php/mysql ou postgresl Tomcat/Java/Servlet XML
Serveur
extraction de donnes
Script PHP
excution
Document Html
<HTML> <HEAD> <TITLE>HOPITAL ACCUEIL</TITLE> </HEAD> <BODY LINK="#0000ff" BGCOLOR="White"> <CENTER> <P> <?php $link=mysql_connect("diamant","login", $Password) or die ("impossible de se connecter"); mysql_select_db ("login") or die ("Impossible d'acceder a la base de donnees"); $query = "SELECT * FROM hopital"; $result = mysql_query($query) or die ("La requete a echoue"); ?> <table border="1"> <tr> <td>Nom</td> <td>Arrondissement</td> </tr> <?php while ($line = mysql_fetch_array($result)){ print "\t <tr>\n"; echo "\t\t<td>".$line["nom_hopital"]."</td>\n"; echo "\t\t<td>".$line["arrondissement"]."</td>\n"; print "\t</tr>\n"; } print "</table>\n"; mysql_close($link); ?> <P> </BODY> </HTML>
197
Bibliographie :
Les cahiers du programmeur, PostgreSQL, Services Web avec PostreSQL et PHP/XML, Stephane Mariel, Edition Eyrolles PostgreSQL par la pratique, John C. Worsley, Ed. OReilly
198
postgreSQL
Types et fonctions spcifiques Trs utiles
Si le champ position est de type point, on peut chercher les partenaires proches dun client : SELECT partenaires.id,partenaires.nom from partenaires, clients WHERE (clients.position<->partenaires.position)<0.2
199
Les Triggers :
CREATE TRIGGER {BERORE|AFTER} {vnement } ON nom_table FOR EACH {ROW|STATEMENT} EXECUTE PROCEDURE nom_fonction (paramtres)
Les fonctions C
$gcc -shared est-nul.c -o est_nul.so ->CREATE FUNCTION est_nul(int4) RETURNS Boolean AS /home/master/est_nul.so LANGUAGE C; 200
201
Transactions et curseurs Nutilise pas la technique des verrous -> effet nfaste sur les performances (consultation bloque par exemple tant que la transaction na pas t valide (COMMIT) Utilise la technique de MVCC (Multi-Version Concurrency Control) : tant que les modifications nont pas t valides, chaque connexion postgreSQL maintient un instantan temporaire de la base de donnes pour les objets modifis dans un bloc transactionnel (BEGIN COMMIT) Utilisateur 1 : ->BEGIN; ->UPDATE sujets SET emplacement = NULL WHERE id =132; Utilisateur 2 : -> SELECT emplacement FROM sujets WHERE id=12; Paris Utilisateur 1 : -> SELECT emplacement FROM sujets WHERE id=12; NULL -> COMMIT; Utilisateur 2 : -> SELECT emplacement FROM sujets WHERE id=12; NULL
202
Un curseur est un pointeur en lecture seule vers lensemble rsultat dune instruction SELECT compltement excute : utilis pour les applications qui maintiennent une connexion persistante vers un serveur PostgreSQL. En excutant un curseur et en grant une rfrence vers lensemble rsultat quil produit, une application peut grer plus efficacement les lignes quelle souhaite rcuprer diffrents instants sans devoir excuter nouveau la requte avec les clauses LIMIT et OFFSET diffrentes. Les curseurs sont souvent encapsuls dans une API bien que lon puisse galement les manipuler directement via les commandes SQL standard. Noter quils sont toujours encapsuls lintrieur dune transaction (normal). -> BEGIN; -> DECLARE tous_livres CURSOR FOR SELECT * FROM livres; -> FETCH 4 FROM tous_livres; -> FETCH NEXT FROM tous_livres; -> FETCH PRIOR FROM tous_livres; -> MOVE FORWARD 10 IN tous_livres; -> CLOSE tous_livres; -> COMMIT;
203
En C : Pr-processeur SQL :
$ecpg -o nom.c nom.sql -I /usr/include/psql/
Compilation :
$cc nom.c -o nom -I /usr/include/pgsql -lecpg -lpq
Excution du programme :
$./nom |more
En Java :
La classe java.sql.ResultSet et ses mthodes
204