Professional Documents
Culture Documents
CONCEPTION
DE BASES
DE DONNES
STPHANE CROZAT
Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique : http://creativecommons.org/licenses/by-nc-sa/2.0/fr/
9 11
II - Le niveau conceptuel
23
C. Le modle E-A.......................................................................................................................................37
1. Le modle E-A en bref.................................................................................................................................................37
2. Entit............................................................................................................................................................................37 3. Association...................................................................................................................................................................39 4. Cardinalit d'une association......................................................................................................................................39 5. Modle E-A tendu.......................................................................................................................................................40 6. Entit de type faible.....................................................................................................................................................41 7. Illustration d'entits faibles.........................................................................................................................................41
: la modlisation relationnelle
45
D. Algbre relationnelle.............................................................................................................................67
1. Concepts manipulatoires.............................................................................................................................................67 2. Oprateurs ensemblistes..............................................................................................................................................68 3. Projection.....................................................................................................................................................................69 4. Restriction....................................................................................................................................................................69 5. Produit.........................................................................................................................................................................70 6. Jointure........................................................................................................................................................................70 7. Jointure naturelle.........................................................................................................................................................71 8. Jointure externe...........................................................................................................................................................71 9. Division........................................................................................................................................................................72 10. Proposition de notations............................................................................................................................................73 11. Exercice de synthse : Oprateurs de base et additionnels.......................................................................................73
IV - Le langage SQL
75
97
3. Premire forme normale............................................................................................................................................104 4. Deuxime forme normale...........................................................................................................................................104 5. Troisime forme normale...........................................................................................................................................105 6. Forme normale de Boyce-Codd.................................................................................................................................106
VI - Le relationnel-objet
109
B. Le modle relationnel-objet.................................................................................................................111
1. Les SGBDRO.............................................................................................................................................................111 2. Le modle imbriqu...................................................................................................................................................111 3. Les types utilisateurs..................................................................................................................................................112 4. Les collections............................................................................................................................................................113 5. Comparaison relationnel et relationnel-objet...........................................................................................................113 6. Tables d'objets...........................................................................................................................................................114 7. Hritage et rutilisation de types...............................................................................................................................114 8. Identification d'objets et rfrences...........................................................................................................................115
E. Exemples RO.......................................................................................................................................124
1. Exemple : Gestion de cours.......................................................................................................................................124 2. Exemple : Gestion de cours simplifie (version avec OID).......................................................................................127
131
C. Fiabilit et transactions........................................................................................................................135
1. Les pannes..................................................................................................................................................................135 2. Point de contrle........................................................................................................................................................135
D. Concurrence et transactions.................................................................................................................139
1. Trois problmes soulevs par la concurrence...........................................................................................................139 2. Le verrouillage...........................................................................................................................................................141 3. Le dverrouillage.......................................................................................................................................................142 4. Protocole d'accs aux donnes..................................................................................................................................142 5. Solution aux trois problmes soulevs par la concurrence.......................................................................................143 6. Inter-blocage..............................................................................................................................................................144
147
IX - Ouvrage de rfrence conseill Questions de synthse Solution des exercices de TD Glossaire Signification des abrviations Bibliographie Index
INTRODUCTION
Les BD sont nes vers la fin des annes 1960 pour combler les limites des systmes de fichiers. Les BD relationnelles, issues de la recherche de Codd, sont celles qui ont connu le plus grand essor depuis plus de 20 ans, et qui reste encore aujourd'hui les plus utilises. Le langage SQL est une couche technologique, idalement indpendante des implmentations des SGBDR, qui permet de crer et manipuler des BD relationnelles. Les usages de BD se sont aujourd'hui gnraliss pour entrer dans tous les secteurs de l'entreprise, depuis les "petites" BD utilises par quelques personnes dans un service pour des besoins de gestion de donnes locales, jusqu'aux "grosses" BD qui grent de faon centralise des donnes partages par tous les acteurs de l'entreprise. Paralllement l'accroissement de l'utilisation du numrique comme outil de manipulation de toutes donnes (bureautique, informatique applicative, etc.) et comme outil d'extension des moyens de communication (rseaux) d'une part et les volutions technologiques (puissance des PC, Internet, etc.) d'autre part ont la fois rendu indispensable et complexifi la problmatique des BD. Les consquences de cette gnralisation et de cette diversification des usages se retrouvent dans l'mergence de solutions conceptuelles et technologiques nouvelles et sans cesse renouveles.
I -
DONNES
I
11 14 19 24
Les BD ont t cres pour faciliter la gestion qualitative et quantitative des donnes informatiques. Les SGBD sont des applications informatiques permettant de crer et de grer des BD (comme Oracle ou MySQL par exemple). Les BD relationnelles sont les plus rpandues et l'on utilise des SGBDR pour les implmenter. Le langage SQL est le langage commun tous les SGBDR, ce qui permet de concevoir des BD relativement indpendamment des systmes utiliss.
1. Qu'est ce qu'une BD ?
Dfinition : Base de donnes
Une BD est un ensemble volumineux, structur et minimalement redondant de donnes, relies entre elles, stockes sur supports numriques centraliss ou distribus, servant pour les besoins d'une ou plusieurs applications, interrogeables et modifiables par un ou plusieurs utilisateurs travaillant potentiellement en parallle.
11
maintenance d'une base de donnes. Il est l'unique interface entre les informaticiens et les donnes (dfinition des schmas, programmation des applications), ainsi qu'entre les utilisateurs et les donnes (consultation et mise jour).
Oracle est un SGBD relationnel (et Relationnel-Objet dans ses dernires versions) trs reconnu pour les applications professionnelles. MySQL est un SGBD relationnel libre (licence GPL et commerciale), simple d'accs et trs utilis pour la ralisation de sites Web dynamiques. Depuis la version 4 MySQL implmente la plupart des fonctions attendues d'un SGBD relationnel. PosgreSQL est un SGBD relationnel et relationnel-objet trs puissant qui offre une alternative open-source aux solutions commerciales comme Oracle ou IBM. Access est un SGBD relationnel Microsoft, qui offre une interface conviviale permettant de concevoir rapidement des applications de petite envergure ou de raliser des prototypes moindre frais.
b) Consquences...
L'existence conjointe et croissante de ces applications indpendantes a des effets ngatifs, tels que : La multiplication des tches de saisie, de dveloppement et de support informatique La redondance anarchique des informations dans les fichiers L'incohrence des versions simultanes de fichiers La non-portabilit des traitements en raison des diffrences dans les formats et langages. La multiplication des cots de dveloppement et de maintenance des applications.
c) Problmes...
Les consquences prcdemment cites se rpercutent sur l'entreprise en gnrant des problmes humains et matriels. Cots en personnels qualifis et en formations Remise des pouvoirs de dcision entre les mains de spcialistes informatiques Tout changement matriel ou logiciel a un impact sur les applications Tout changement de la structure des donnes ncessite de modifier les programmes
d) Or...
En ralit les applications ne sont jamais totalement disjointes, des donnes similaires (le coeur de l'information d'entreprise) sont toujours la base des traitements. On peut citer typiquement : Les donnes comptables Les donnes clients et fournisseurs Les donnes relatives la gestion des stocks Les donnes relatives aux livraisons Les donnes marketting et commerciales
S. Crozat - UTC 2009
12
13
1. Notion de donnes
Dfinition : Donnes
Elment effectif, rel, correspondant une type de donnes. Synonymes : Occurence, Instance
Exemple : Donnes
Le modle Entit-Association (cf. The entity-Relationsheep Model - Towards a Unified View of Data [Chen76]) a t le plus rpendu dans le cadre de la conception de bases de donnes. Le modle UML, qui se gnralise pour la conception en informatique, se fonde sur une approche objet.
Le modle relationnel est le modle dominant. Le modle relationnel-objet (adaptation des modles relationnel et objet au cadre des SGBD) est actuellement en pleine croissance. Le modle objet "pur" reste majoritairement au stade exprimental et de la recherche.
14
Des modles plus anciens (hirarchique, rseau, etc.) ne sont plus gure utiliss aujourd'hui.
Remarque : ANSI/X3/SPARC
Les trois niveaux, conceptuel, externe et interne, sont les trois niveaux distingus par le groupe de normalisation ANSI/X3/SPARC en 1975.
15
Exemple : SQL
SQL est le langage orient donnes consacr aux SGBD relationnels et relationnels-objet. Un langage de donnes peut tre dcompos en trois sous langages : Le Langage de Dfinition de Donnes Le LDD permet d'implmenter le schma conceptuel (notion de table en SQL) et les schmas externes (notion de vue en SQL). Le Langage de Contrle de Donnes Le LCD permet d'implmenter les droits que les utilisateurs ont sur les donnes et participe donc la dfinition des schmas externes. Le Langage de Manipulation de Donnes Le LMD permet l'interrogation et la mise jour des donnes. C'est la partie du langage
S. Crozat - UTC 2009
16
17
18
conceptuel d'appliquer des algorithmes de traduction qui permettent d'obtenir directement le modle logique, puis les instructions pour la cration de la base de donnes dans un langage orient donnes tel que SQL. L'existence de tels algorithmes de traduction montre que les tapes de traduction logique et d'implmentation sont moins complexes que les prcdentes, car plus systmatiques. Nanmoins ces tapes exigent tout de mme des comptences techniques pour optimiser les modles logiques (normalisation), puis les implmentations en fonction d'un contexte de mise en oeuvre matriel, logiciel et humain.
L'analyse selon MERISE La mthode MERISE a pour fondement le modle E-A, qui a fait son succs. Les principales caractristiques du modle E-A sont : Une reprsentation graphique simple et naturelle Une puissance d'expression leve pour un nombre de symboles raisonnables Une lecture accessible tous et donc un bon outil de dialogue entre les acteurs techniques et non techniques Une formalisation non ambige et donc un bon outil de spcification dtaille
19
La phase d'analyse de l'existant et des besoins est une phase essentielle et complexe. Elle doit aboutir des spcifications gnrales qui dcrivent en langage naturel les donnes manipules, et les traitements effectuer sur ces donnes. On se propose de donner une liste non exhaustive d'actions mener pour rdiger de telles spcifications.
Fichiers papiers de stockage des donnes (personnel, produits, etc.) Formulaires papiers d'enregistrement des donnes (fiche d'identification d'un salari, fiche de description d'un produit, bon de commande, etc.) Documents lectroniques de type traitement de texte (lettres, mailing, procdures, etc.) Documents lectroniques de type tableurs (bilans, statistiques, calculs, etc.) Bases de donnes existantes, remplacer ou avec lesquelles s'accorder (gestion des salaires, de la production, etc.) Intranet d'entreprise (information, tlchargement de documents, etc.) etc.
Praticiens (secrtaires, ouvrier, contrleurs, etc.) Cadres (responsables de service, contre-matres, etc.) Experts externes (clients, fournisseurs, etc.) etc.
Personnes qui vont effectuer les saisies d'information ( partir de quelles sources ? Quelle est leur responsabilit ? etc.) Personnes qui vont consulter les informations saisies (pour quel usage ? pour quel destinataire ? etc.) Personnes qui vont mettre jour les informations (pour quelles raisons ? comment le processus est enclench ? etc.) etc.
20
d'analyser ces systmes, afin de mieux comprendre les mcanismes existants, leurs forces et leurs lacunes, et de prparer l'intgration de la base avec ces autres systmes. Une partie de ces systmes seront d'ailleurs souvent galement des utilisateurs de la base de donnes, tandis que la base de donnes sera elle mme utilisatrice d'autre systmes.
Autres bases de donnes (les donnes sont elle disjointes ou partiellement communes avec celles de la base concevoir ? quelles sont les technologies logicielles sur lesquelles reposent ces BD ? etc.) Systmes de fichiers classiques (certains fichiers ont-ils vocations tre supplants par la base ? tre gnrs par la base ? alimenter la base ? etc.) Applications (ces applications ont elles besoins de donnes de la base ? peuvent-elles lui en fournir ? etc.) etc.
5. Le MCD
Dfinition : MCD
Le MCD est l'lment le plus connu de MERISE et certainement le plus utile. Il permet d'tablir une reprsentation claire des donnes du SI et dfinit les dpendances des donnes entre elles.
Exemple
Le modle E-A est un formalisme de MCD, le diagramme de classe UML en est un autre.
Remarque
Un MCD est indpendant de l'tat de l'art technologique. A ce titre il peut donc tre mis en oeuvre dans n'importe quel environnement logiciel et matriel, et il devra tre traduit pour mener une implmentation effective.
6. Le MLD
Introduction
On ne sait pas implmenter directement un modle conceptuel de donnes dans une machine et il existe diffrentes sortes de SGBD qui ont chacun leur propre modle : SGF (qui ne sont pas vraiment des SGBD), SGBD hirarchiques (organiss selon une arborescence), SGBD rseau (encore appels CODASYL), SGBDR, SGBDOO, SGBDRO, etc.
Dfinition : MLD
Un MLD est une reprsentation du systme tel qu'il sera implment dans un ordinateur.
Exemple
Le modle relationnel est un formalisme de MLD.
Remarque
Il ne faut pas confondre le MLD (relationnel par exemple) avec le MCD (E-A par exemple). Il ne faut pas confondre le MLD avec son implmentation logicielle en machine (avec Oracle par exemple)
21
Modle Conceptuel Schma conceptuel canonique et schmas externes Exemples E-A UML Modle Logique Schma interne indpendant d'un SGBD Exemples Relationnel Objet Relationnel-Objet Rseau Hirarchique Modle Physique Schma interne pour un SGBD particulier Exemples Oracle MySQL PostgreSQL DB2 Access SQLServer
* * *
Les SGBD assurent la gestion efficace et structure des donnes partages. Leur conception repose sur une approche trois niveaux : conceptuel et externe, logique, physique.
22
II -
LE NIVEAU CONCEPTUEL : LA
Bases du diagramme de classes UML Diagramme de classes UML avanc Le modle E-A En rsum : Schma conceptuel Bibliographie commente sur la modlisation UML
II
27 36 46 52 52
La modlisation est l'tape fondatrice du processus de conception de BD. Elle consiste abstraire le problme rel pos pour en faire une reformulation qui trouvera une solution dans le cadre technologique d'un SGBD. Aprs avoir rappel succinctement les fondements et objectifs des SGBD, ce chapitre proposera les outils mthodologiques ncessaires la modlisation, travers les formalismes E-A et UML.
Si le modle dominant en conception de bases de donnes a longtemps t le modle E-A, le modle UML se gnralise de plus en plus. Nous ne donnons ici qu'une introduction au diagramme de classes (parmi l'ensemble des outils d'UML), limit aux aspects particulirement utiliss en modlisation de bases de donnes.
1. Prsentation d'UML
UML est un langage de reprsentation destin en particulier la modlisation objet. UML est devenu une norme OMG en 1997. UML propose un formalisme qui impose de "penser objet" et permet de rester indpendant d'un langage de programmation donn. Pour ce faire, UML normalise les concepts de l'objet (numration et dfinition exhaustive des concepts) ainsi que leur notation graphique. Il peut donc tre utilis comme un moyen de communication entre les tapes de spcification conceptuelle et les tapes de spcifications techniques. Dans le domaine des bases de donnes, UML peut tre utilis la place du modle E-A pour modliser le domaine. De la mme faon, un schma conceptuel UML peut alors tre traduit en schma logique
23
2. Classes
Dfinition : Classe
Une classe est un type abstrait caractris par des proprits (attributs et mthodes) communes un ensemble d'objets et permettant de crer des instances de ces objets, ayant ces proprits.
Syntaxe
Remarque : Cl
Le reprage des cls n'est pas systmatique en UML (la dfinition des cls se fera alors au niveau logique). On conseillera nanmoins de les reprsenter (en les soulignant dans le dessin). On vitera par contre d'ajouter des cls artificielles lorsqu'aucune cl n'est vidente.
Remarque
La modlisation sous forme de diagramme de classes est une modlisation statique, qui met en exergue la structure d'un modle, mais ne rend pas compte de son volution temporelle. UML propose d'autres types de diagrammes pour traiter, notamment, de ces aspects.
3. Attributs
S. Crozat - UTC 2009
24
Dfinition : Attribut
Un attribut est une information lmentaire qui caractrise une classe et dont la valeur dpend de l'objet instanci.
Remarque
Un attribut est typ : Le domaine des valeurs que peut prendre l'attribut est fix a priori. Un attribut peut tre multivalu : Il peut prendre plusieurs valeurs distinctes dans son domaine. Un attribut peut tre driv : Sa valeur alors est une fonction sur d'autres attributs de la classe (il peut donc aussi tre reprsent comme une mthode, et c'est en gnral prfrable). Un attribut peut tre compos : Il joue alors le rle d'un groupe d'attributs (par exemple une adresse peut tre un attribut compos des attributs numro, type de voie, nom de la voie). Cette notion renvoie la notion de variable de type Record dans les langages de programmation classiques.
Syntaxe
attribut:type attribut_multivalu[nbMinValeurs..nbMaxValeurs]:type /attribut_driv:type attribut_compos - sous-attribut1:type - sous-attribut2:type - ...
Reprsentation d'attributs en UML Dans cet exemple, les attributs Nom, Prnom sont de type string, l'un de 20 caractres et l'autre de 10, tandis que DateNaissance est de type date et Age de type integer. Prnom est un attribut multivalu, ici une personne peut avoir de 1 3 prnoms. Age est un attribut driv, il peut tre calcul par une fonction sur DateNaissance.
4. Mthodes
Dfinition : Mthode
Une mthode (ou opration) est une fonction associe une classe d'objet qui permet d'agir sur les objets de la classe ou qui permet ces objets de renvoyer des valeurs (calcules en fonction de paramtres).
25
Syntaxe
methode(paramtres):type
5. Associations
Dfinition : Association
Une association est une relation logique entre deux classes (association binaire) ou plus (association naire) qui dfinit un ensemble de liens entre les objets de ces classes. Une association est nomme, gnralement par un verbe. Une association peut avoir des proprits ( l'instar d'une classe). Une association dfinit le nombre minimum et maximum d'instances autorise dans la relation (on parle de cardinalit).
Syntaxe
Remarque
Une association est gnralement bidirectionnelle (c'est dire qu'elle peut se lire dans les deux sens). Les associations qui ne respectent pas cette proprit sont dites unidirectionnelles ou navigation restreinte.
Reprsentation d'association en UML L'association Conduit entre les classes Conducteur et Voiture exprime que les conducteurs conduisent des voitures.
26
6. Cardinalit
Dfinition : Cardinalit d'une association
La cardinalit d'une association permet de reprsenter le nombre minimum et maximum d'instances qui sont autorises participer la relation. La cardinalit est dfinie pour les deux sens de la relation.
Syntaxe
Si mina (resp. maxa) est le nombre minimum (resp. maximum) d'instances de la classe A autorises participer l'association, on note sur la relation, ct de la classe A : mina..maxa. Si le nombre maximum est indtermin, on note n ou *.
Attention
La notation de la cardinalit en UML est oppose celle adopt en E-A. En UML on note gauche (resp. droite) le nombre d'instances de la classe de gauche (resp. de droite) autorises dans l'association. En EA, on note gauche (resp. droite) le nombre d'instances de la classe de droite (resp. de gauche) autorises dans l'association.
Remarque
Les cardinalit les plus courantes sont : 0..1 (optionnel) 1..1 ou 1 (un) 0..n ou 0..* ou * (plusieurs) 1..n ou 1..* (obligatoire)
Reprsentation de cardinalit en UML Ici un conducteur peut possder plusieurs voitures (y compris aucune) et une voiture n'est possde que par un seul conducteur.
7. Hritage
Dfinition : Hritage
L'hritage est l'association entre deux classes permettant d'exprimer que l'une est plus gnrale que l'autre. L'hritage implique une transmission automatique des proprits (attributs et mthodes) d'une classe A une classe A'. Dire que A' hrite de A quivaut dire que A' est une sous-classe de A. On peut galement dire que A est une gnralisation de A' et que A' est une spcialisation de A.
Syntaxe
27
Remarque
L'hritage permet de reprsenter la relation "est-un" entre deux objets.
Remarque
Outre qu'il permet de reprsenter une relation courante dans le monde rel, l'hritage a un avantage pratique, celui de factoriser la dfinition de proprits identiques pour des classes proches.
Reprsentation d'hritage en UML Dans cet exemple la classe Conducteur hrite de la classe Personne, ce qui signifie qu'un objet de la classe conducteur aura les attributs de la classe Conducteur (TypePermis et DatePermis) mais aussi ceux de la classe Personne (Nom, Prnom, DateNaissance et Age). Si la classe Personne avait des mthodes, la classe Conducteur en hriterait de la mme faon.
28
Exemple trs simple de diagramme de classes Les relations de ce diagramme expriment que les conducteurs sont des personnes qui ont un permis ; que toute voiture est possde par une unique personne (qui peut en possder plusieurs) ; que les voitures peuvent tre conduites par des conducteurs et que les conducteurs peuvent conduire plusieurs voitures.
Remarque
Les mots cls in, out et in/out devant un paramtre de mthode permettent de spcifier si le paramtre est une donne d'entre, de sortie, ou bien les deux.
Remarque
Le but d'une modlisation UML n'est pas de reprsenter la ralit dans l'absolu, mais plutt de proposer une vision d'une situation rduite aux lments ncessaires pour rpondre au problme pos. Donc une modlisation s'inscrit toujours dans un contexte, et en cela l'exemple prcdent reste limit car son contexte d'application est indfini.
Les lments de modlisation suivant compltent les notations basiques du diagramme de classe : classe, attribut, association, cardinalit et hritage.
29
Syntaxe : Rle
Il est possible de prciser le rle jou par une ou plusieurs des classes composant une association afin d'en faciliter la comprhension. On ajoute pour cela ce rle ct de la classe concerne (parfois prcd d'un "+" ou bien dans un petit encadr coll au trait de l'association.
Exemple
2. Classe d'association
Dfinition : Classe d'association
On utilise la notation des classes d'association lorsque l'on souhaite ajouter des proprits une association.
30
Emplois
3. Associations ternaires
Syntaxe
4. Composition
Dfinition : Association de composition
On appelle composition une association particulire qui possde les proprits suivantes :
31
La composition associe une classe composite et des classes parties, tel que tout objet partie appartient un et un seul objet composite. C'est donc une association 1:N. La composition n'est pas partageable, donc un objet partie ne peut appartenir qu' un seul objet composite la fois. Le cycle de vie des objets parties est li celui de l'objet composite, donc un objet partie disparat quand l'objet composite auquel il est associ disparait.
Remarque
La composition est une association particulire.
Un livre On voit bien ici qu'un chapitre n'a de sens que faisant partie d'un livre, qu'il ne peut exister dans deux livres diffrents et que si le livre n'existe plus, les chapitres le composant non plus.
5. Classes abstraites
32
Des chiens et des hommes Dans la reprsentation prcdente on a pos que les hommes, les femmes et les chiens taient des objets instanciables, gnraliss respectivement par les classes mammifre et humain, et mammifre. Selon cette reprsentation, il ne peut donc exister de mammifres qui ne soient ni des hommes, ni des femmes ni des chiens, ni d'humains qui ne soient ni des hommes ni des femmes.
33
6. Contraintes
Ajout de contraintes dynamiques sur le diagramme de classe
Il est possible en UML d'exprimer des contraintes dynamiques sur le diagramme de classe, par annotation de ce dernier.
Commandes
34
Syntaxe
Dfinition : Inclusion
Si l'association inclue est instancie, l'autre doit l'tre aussi (la contrainte d'inclusion a un sens, reprsent par une flche).
Syntaxe
{IN}, galement note {Subset} ou {I}.
Syntaxe
{AND}, galement note {=} ou {S} pour simultanit.
Dfinition : Exclusion
Les deux associations ne peuvent tre instancis en mme temps.
Syntaxe
{X}
35
Syntaxe
{OR}, galement not {T} pour totalit.
Syntaxe
{XOR}, galement note {+} ou {XT} ou {Partition}.
8. Paquetages
Dfinition : Package
Les paquetages (plus communment appels package) sont des lments servant organiser un modle. Ils sont particulirement utile ds que le modle comporte de nombreuses classes et que celles-ci peuvent tre tries selon plusieurs aspects structurants.
Syntaxe
Exemple
Mthode
On reprsente chaque classe au sein d'un package. Il est alors possible de faire une prsentation globale du modle (tous les packages), partielle (1 package) ou centre sur un package : l'on reprsente alors le
S. Crozat - UTC 2009
36
package avec ses classes, ainsi que toutes les classes lies des autres packages.
C. Le modle E-A
Objectifs
Savoir-faire un modle E-A tendu. Savoir interprter un modle E-A tendu.
2. Entit
Dfinition : Entit
Une entit est un objet du monde rel avec une existence indpendante. Une entit (ou type dentit) est une chose (concrte ou abstraite) qui existe et est distinguable des autres entits. L'occurrence dune entit est un lment particulier correspondant lentit et associ un lment du rel. Chaque entit a des proprits (ou attributs) qui la dcrivent. Chaque attribut est associ un domaine de valeur. Une occurence a des valeurs pour chacun de ses attributs, dans le domaine correspondant.
Syntaxe
37
38
Remarque
Un attribut est atomique, c'est dire qu'il ne peut prendre qu'une seule valeur pour une occurence. Un attribut est lmentaire, c'est dire qu'il ne peut tre exprim par (ou driv) d'autres attributs. Un attribut qui identifie de faon unique une occurence est appel attribut cl.
3. Association
Dfinition : Association
Une association (ou type dassociation) reprsente un lien quelconque entre diffrentes entits. Une occurrence dune association est un lment particulier de lassociation constitu dune et une seule occurrence des objets participants lassociation. On peut dfinir des attributs sur les associations. Le degr d'une association est le nombre d'entits y participant (on parlera notamment d'association binaire lorsque deux entits sont concernes).
Syntaxe
Remarque
On peut avoir plusieurs associations diffrentes dfinies sur les mmes entits.
Syntaxe
39
Notation de la cardinalit
Exemple
Livre-Auteur Le diagramme E-A prcdent exprime qu'un auteur peut avoir crit plusieurs livres (mais au moins un), et que tout livre ne peut avoir t crit que par un et un seul auteur.
a) Attributs composites
Un attribut peut tre compos hirarchiquement de plusieurs autres attributs.
Exemple
Un attribut Adresse est compos des attributs Numro, Rue, No_Appartement, Ville, Code_Postal, Pays.
Remarque
Le domaine d'un attribut composite n'est donc plus un domaine simple (entier, caractres, etc.).
b) Attributs multivalus
Tout attribut peut tre monovalu ou multivalu.
Exemple
Les ges des enfants dun employ.
Remarque
Un attribut multivalu n'est donc plus atomique.
40
c) Attributs driv
La valeur d'un attribut peut tre drive d'une ou plusieurs autres valeurs d'attributs.
Exemple
L'ge d'une personne peut tre driv de la date du jour et de celle de sa naissance.
Remarque
Un attribut driv n'est donc plus lmentaire.
d) Sous-type d'entit
Une entit peut-tre dfinie comme sous-type d'une entit plus gnrale.
Exemple
Les entits Cadre et Technicien sont des sous-types de l'entit Employ.
Remarque
La notion de sous-type est quivalente la notion d'hritage en modlisation objet.
Exemple
Association identifiante L'entit Tche est compltement dpendante de l'entit Projet et sa cl locale (No_tche) n'est pas suffisante l'identifier de faon absolue.
Attention
Le reprage des entits de type faible est trs important dans le processus de modlisation, il permet de rflchir la meilleure faon d'identifier de faon unique les entits et donc de trouver les meilleures cls. Notons de plus que le reprage d'entits faibles aura une influence importante sur le modle relationnel rsultant.
41
Villes Dans le schma ci-avant, on remarque que l'entit "ville" est faible par rapport l'entit "dpartement", qui est faible par rapport "rgion", qui est faible par rapport "pays". Cela signifie que la cl de ville, son nom, est une cl locale et donc que l'on considre qu'il ne peut pas y avoir deux villes diffrentes avec le mme nom, dans un mme dpartement. Il est par contre possible de rencontrer deux villes diffrentes avec le mme nom, dans deux dpartements diffrents. De la mme faon chaque dpartement possde un nom qui l'identifie de faon unique dans une rgion, et chaque rgion possde un nom qui l'identifie de faon unique dans un pays. Si les entits n'taient pas faibles, l'unicit d'un nom de ville serait valable pour l'ensemble du modle, et donc, concrtement, cela signifierai qu'il ne peut exister deux villes avec le mme nom au monde (ni deux dpartements, ni deux rgions).
Remarque
Notons pour terminer que, puisque "pays" n'est pas une entit faible, sa cl "nom" est bien unique pour l'ensemble du modle, et donc cela signifie qu'il ne peut exister deux pays avec le mme nom au monde.
42
Complment : Conseils
Cinq petits conseils pour un schma UML efficace [w_journaldunet.com(2)]
1 - http://argouml.tigris.org/ 2 - http://www.eclipsedownload.com/ S. Crozat - UTC 2009
43
III -
LE NIVEAU LOGIQUE : LA
Description du modle relationnel Le passage UML vers Relationnel Le passage E-A vers Relationnel Algbre relationnelle En rsum : Schma relationnel Bibliographie commente sur le modle relationnel
MODLISATION RELATIONNELLE
III
55 68 80 85 92 93
Le modle relationnel est aux fondements des SGBDR. Il a t - et continue d'tre - le modle thorique dominant pour la reprsentation logique des BD. Le modle relationnel permet de reformuler le modle conceptuel dans un formalisme beaucoup plus proche de l'implmentation informatique, bien que encore indpendant d'une solution technologique particulire. Le modle relationnel, et en particulier l'algbre relationnelle qui lui est associe, est aussi le fondement thorique du langage standard SQL, qui est utilis pour manipuler les donnes stockes dans une BD.
1. Le niveau logique
Le niveau logique est le lien entre le niveau conceptuel et l'implmentation effective de l'application. Le modle conceptuel tant un modle formel, le modle logique a pour vocation d'tre galement un modle formel, mais spcifiant non plus la ralit existante ou recherche comme le modle conceptuel, mais les donnes telles qu'elles vont exister dans l'application informatique. Pour assumer cette fonction, le modle relationnel [Codd70] s'est impos en raction aux insuffisances des modles prcdents, les modles hirarchique et rseau, et de part la puissance de ses fondements mathmatiques. Encore aujourd'hui dominant le modle relationnel est un fondement indispensable la conception de bases de donnes. De plus le modle mergeant actuellement est le modle relationnel-objet, et ce dernier est bien une extension du modle relationnel qui le renforce et s'y appuie.
45
2. Le modle relationnel
Introduction
Le modle relationnel a t introduit par Codd [Codd70], en 1970 au laboratoire de recherche d'IBM de San Jos. Il s'agit d'un modle simple et puissant la base de la majorit des bases de donnes aujourd'hui.
3. Domaine
Dfinition : Domaine
Ensemble, caractris par un nom, dans lequel des donnes peuvent prendre leurs valeurs.
Remarque
Un domaine peut-tre dfini en intention (c'est dire en dfinissant une proprit caractristique des valeurs du domaine) ou en extension (c'est dire en numrant toutes les valeurs du domaine)
Entier Rel Boolen Chane de caractres Montaire : rel avec deux chiffres aprs la virgule Date : chane de 10 caractres comprenant des chiffres et des tirets selon le patron "00-00-0000" Salaire : Montaire compris entre 15.000 et 100.000
Couleur : {Bleu, Vert, Rouge, Jaune, Blanc, Noir} SGBD : {Hirarchique, Rseau, Relationnel, Objet, Relationnel-Objet}
4. Produit cartsien
Dfinition : Produit cartsien
Le produit cartsien, not "X", des domaines D1, D2, ... , Dn, not "D1 X D2 X ... X Dn" est l'ensemble des tuples (ou n-uplets ou vecteurs) <V1,V2,...,Vn> tel que Vi est une valeur de Di et tel que toutes les
S. Crozat - UTC 2009
46
Exemple
D1 = {A, B, C} D2 = {1, 2, 3} D1 X D2 = {<A,1>, <A,2>, <A,3>, <B,1>, <B,2>, <B,3>, <C,1>, <C,2>, <C,3>,}
5. Relation
Dfinition : Relation
Une relation sur les domaines D1, D2, ..., Dn est un sous-ensemble du produit cartsien "D1 X D2 X ... X Dn". Une relation est caractrise par un nom. Synonymes : Table, tableau
Syntaxe
On peut reprsenter la relation R sur les domaine D1, ... , Dn par une table comportant une colonne pour chaque domaine et une ligne pour chaque tuple de la relation.
D1 V1 ... V1 ... ... ... ... Vn ... Vn Dn
Tableau 1 Relation R
Remarque
Une relation est toujours dfinie en extension, par l'numration des tuples la composant.
6. Attribut et enregistrement
Dfinition : Attribut
On appelle attribut d'une relation, une colonne de cette relation. Un attribut est caractris par un nom et un domaine dans lequel il prend ses valeurs. Synonymes : Champs, Proprit, Colonne
Dfinition : Enregistrement
On appelle enregistrement d'une relation, une ligne de cette relation. Un enregistrement prend une valeur pour chaque attribut de la relation. Synonymes : Tuple, N-uplet, Vecteur, Ligne
Exemple
A 1 1 2 1 2 2 B
Tableau 2 Relation R La relation R comporte les deux attributs A et B et les trois enregistrements <1,1>, <1,2> et <2,2>
47
7. La relation Vol
Exemple
Numero AF3245 AF6767 KLM234 Compagnie AirFrance AirFrance KML 747 A320 727 Avion Dpart Paris Paris Paris Arriv e OulanBator Toulouse Amsterdam Date 01082002 30072002 31072002
8. Cl
Dfinition : Cl
Une cl est un groupe d'attributs minimum qui dtermine un tuple unique dans une relation.
Dfinition : Cl primaire
Toute relation doit comporter au moins une cl, ce qui implique qu'une relation ne peut contenir deux tuples identiques. Si plusieurs cls existent dans une relation, on en choisit une parmi celles-ci. Cette cl est appele cl primaire. La cl primaire est gnralement choisie de faon ce qu'elle soit la plus simple, c'est dire portant sur le moins d'attributs et sur les attributs de domaine les plus basiques (entiers ou chanes courtes typiquement).
Exemple
L'attribut numro de scurit sociale d'une relation personne est une bonne cl car son unicit est assure smantiquement.
48
Le groupe d'attributs nom, prnom d'une relation personne est en gnral une mauvaise cl, car les homonymes existent.
9. Cl artificielle
Dfinition : Cl artificielle
S'il est impossible de trouver une cl primaire, ou que les cls candidates sont trop complexes, il est possible de faire appel une cl artificielle. Une cl artificielle est un attribut supplmentaire ajout au schma de la relation, qui n'est li aucune signification, et qui sert uniquement identifier de faon unique les enregistrements et/ou simplifier les rfrences de cls trangres.
Dfinition : Cl signifiante
Une cl est signifiante si elle n'est pas artificielle.
49
informations de T2 ainsi que du numro de scurit sociale de T1, alors il faudra faire une jointure, tandis que si ce numro signifiant avait t choisi comme cl primaire, cela n'aurait pas t ncessaire.
Mthode : Lien
Le lien entre deux tuples A=>B de deux relations diffrentes est matrialisable par une rfrence depuis l'un des tuples, A, la cl primaire de l'autre tuple, B.
Exemple
Principe des liens entre relations L'attribut "Attribut2" de la relation "Relation1" rfrence l'attribut "Attribut1" de la relation "Relation2" ("Attribut1" est la cl primaire de "Relation2").
Date
Gare1
Gare2
Lyon Limoges Madrid Limoges
Train
TG V TER TG V TER
Vitesse
450 200 450 200
Nom
Dupont Durand Dupont Dupont
Prnom
Jolle JeanPierre Jolle JeanPierre
Dans la reprsentation prcdente, les voyages en train sont reprsents dans une unique relation, qui contient des informations relatives au voyage lui mme (numro, date, dpart, arrive), mais aussi au train utilis pour le voyage (type de train et vitesse maximale), et au conducteur du train (nom et prnom). Cette reprsentation, bien que trs simplifie par rapport la ralit (on imagine facilement plusieurs
50
dizaines d'attibuts possibles) est redondante. En effet chaque fois qu'un voyage mobilisera un train TGV, la vitesse maximale de 450 km/h devra aussi tre rappele. De mme pour chaque conducteur, il faudra rappeler le nom et le prnom. Cette redondance pose un certain nombre de problmes : Incohrence Imaginons qu'une faute de saisie se glisse dans l'orthographe du nom de Dupont (un "d" la place du "t") pour le voyage 1010, il sera impossible de savoir que c'est la mme personne qui conduit le train pour le voyage 1012 (car Jolle Dupond peut exister et tre conductrice de train). Mise jour Imaginons que Jolle Dupont se marie et change de nom, il faudra changer cette information pour tous les voyages auxquels participe cette conductrice. Ceci est galement un risque d'erreur, qui renvoie au risque d'incohrence prcdemment mis en exergue. Perte d'information Imaginons que temporairement plus aucun voyage n'existe pour des TGV. Tous les enregistrements portant sur les TGV disparaitront. On perdra alors l'information comme quoi la vitesse d'un TGV est de 450 km/h, car cette information n'existera plus dans la base. Or l'information intrinsque au TGV, qui est sa vitesse maximale, n'est pas lie un voyage en particulier, et donc il est dommage de ne pas conserver cette information indpendamment du fait que les TGV sont ou non utiliss un instant t. Dpendance des insertions Imaginons que nous souhaitions reprsenter dans la base de donnes un nouveau conducteur, qui n'est encore affect aucun voyage. Il est impossible d'ajouter une telle information, car l'insertion d'une personne est dpendant de l'insertion d'un tuple complet portant galement sur un voyage. Il est videmment trs mauvais d'imaginer des solutions de contournement, telles que par exemple un tuple avec des valeurs nulles sur toutes les proprits sauf les nom et prnom.
b) Relation clate
Le bon usage du modle relationnel consiste donc clater les informations dans de multiples relations, afin de ne pas conserver de redondance. Dans le cas prcdent, on prfrera donc un dcoupage de la relation VoyageEnTrain en trois relations, Voyage, Modele et Conducteur, chacune reprsentant des informations correspondant des objets diffrents (notons l'ajout d'une cl artificielle numro pour la nouvelle relation conducteur, non identifiable de faon unique par les attributs nom et prnom).
Numero 1010 1011 1012 1013 Date 01012001 02012001 03012001 03012001 Paris Paris Paris Lyon Gare1 Lyon Limoges Madrid Limoges Gare2
51
12. Cl trangre
Dfinition : Cl trangre
Groupe d'attributs d'une relation R1 devant apparatre comme cl dans une autre relation R2 afin de matrialiser un lien entre les tuples de R1 et les tuples de R2. La cl trangre d'un tuple rfrence la cl primaire d'un autre tuple.
52
liste de ses attributs avec les domaines respectifs dans lesquels ils prennent leurs valeurs, de la cl primaire, et des cls trangres.
Syntaxe : Relation
Relation (Attribut1:Domaine1, Attribut2:Domaine2, ... , AttributN:DomaineN) La relation "Relation" contient N attributs chacun dfini sur son domaine.
Syntaxe : Cl primaire
Relation (#Attribut1:Domaine1, ... , #AttributM:DomaineM, ... , AttributN:DomaineN) La cl de la relation "Relation" est compose des attributs "Attribut1" "AttributM" (attribut prcds de # ou bien souligns) En gnral on note la cl primaire en premier dans la relation.
Syntaxe : Cl trangre
Relation1 (..., AttributM=>Relation2, ... , AttributN=>Relation2) La relation "Relation1" comporte une cl trangre (compose des attributs "AttributM" "AttributN") rfrenant la cl primaire de "Relation2". Bien sr il peut exister plusieurs cls trangres vers plusieurs relations distinctes. Une cl trangre et sa cl primaire rfrence sont toujours composes du mme nombre d'attributs. Il n'est pas ncessaire de prciser les domaines des attributs appartenant la cl trangre car ce sont forcment les mmes que ceux de la cl primaire rfrence. Il n'est pas non plus en gnral ncessaire de prciser dans le schma relationnel quels attributs de la cl trangre rfrencent quels attributs de la cl primaire (cela est gnralement vident) mais il est possible de la faire on notant "Attribut=>Relation.Attribut". En gnral on note les cls trangres en dernier dans la relation, sauf pour les cls trangres qui font partie de la cl primaire (cls identifiantes).
53
Rgion=>Rgion.Nom, Dirigeant=>Personne) Le schma relationnel prcdent dcrit : Des personnes Elles sont identifies par un numro qui est en fait une cl artificielle. En effet, mme une cl compose de tous les attributs (Nom, Prnom, LieuNaissance) laisse une possibilit de doublons (homonymes ns dans la mme ville). La cl trangre LieuNaissance fait rfrence la relation Ville, et plus prcisment sa cl primaire CodePostal, ce qui est est laiss implicite car vident. Des pays Ils sont identifis par leur nom, puisque deux pays ne peuvent avoir le mme nom. Les pays sont dirigs par des personnes, et ce lien est matrialis par la cl trangre Dirigeant. Des rgions Elles font partie d'un pays et ont un nom. Deux rgions de pays diffrents pouvant avoir le mme nom, il faut utiliser une cl primaire compose la fois du nom de la rgion et du nom du pays, qui est une cl trangre (le nom est appel cl locale car il n'est pas suffisant pour identifier un tuple de la relation Rgion, et la cl trangre vers la relation Pays est appele cl identifiante). Des villes Elles sont identifi par un code postal qui est unique dans le monde (en utilisant le prfixe de pays de type "F-60200"). Ce code postal pour domaine CP qui est une chane compose d'une ou deux lettres, d'un tiret, puis d'une srie de chiffres. Le lien d'appartenance entre une ville et une rgion est matrialis par la cl trangre compose des deux attributs Pays et Rgion. Cette cl rfrence la cl primaire de la relation Rgion, galement compose de deux attributs. Pour clairement expliciter les rfrences (bien que smantiquement la dnomination des attributs ne laisse pas de place au doute) on utilise la syntaxe Rgion.Pays et Rgion.Nom.
Afin de pouvoir implmenter une base de donnes, il faut pouvoir traduire le modle conceptuel en modle logique. Cela signifie qu'il faut pouvoir convertir un modle UML en modle relationnel. Les modles conceptuels sont suffisamment formels pour ce passage soit systmatis.
54
Remarque
Les classes abstraites sont ignores ce stade, et n'tant pas instanciables, ne donnent gnralement pas lieu la cration de relation.
55
homme (#nom) femme (#nomMariage=>homme, nomJeuneFille) avec nomJeuneFille cl Si l'association avait t de cardinalit 0..1:0..1 (certains hommes et femmes ne sont pas maris), le mme choix se serait impos et l'on aurait abouti au rsultat suivant: homme (#nom) femme (#nomJeuneFille, nomMariage=>homme) avec nomMariage unique
56
Mthode : Compositions
Soit la composition entre la classe composite C et la classe partie P (reprsents par les relations RC et RP respectivement) on inclut dans la dfinition de RP comme cl trangre la cl de RC. La cl de RP est redfinie comme la concatnation de la cl de P (cl locale) avec la cl trangre vers RC.
57
Modedetrans formation
Limite
Casd'usage
Exemple
Vue
Parrfrence
EtudiantetEm ployehritentde Personne(un Adapttousles tudiantpeut tre Lourdeurli ela casd'hritageni employ etles ncessitdere exclusif,nicom propritsdes prsenterles pletpar tudiantsetdes donnesdes ticulirementad employ ssont classesfillessur aptlorsquela diffrentes,de deuxrelations classemren'est plusdesper pasabstraite. sonnespeuvent existerquine sontniemploy s nitudiants). Hommeet Femmehritent dePersonne(un tupledeHomme Adaptl'hrit Redondanceli e nepeutpas tre ageexclusifpar l'existancesim untuplede ticulirementad ultanedetuples FemmeetPer aptlorsquela dansplusieurs sonneestab classemreest classesfilles straite,iln'existe abstraite. pasdePersonne quinesoitniun Homme,niune Femme). ResponsableetS alarihritent deEmploy (un Nullitsys responsableest tmatiquepour salarietaucun lesattributsd'une Adaptl'hrit attributn'estsp classe agecompletpar cifiqueni Re fillen'existantpas ticulirementad sponsable,ni pouruneautre aptlorsquela Salari,deplusil classefille(et classemren'est existedesstagi pourlaclasse pasabstraite. airesparexemple mresicelleci quisontjuste n'estpasab employ s,mais straite) nonsalari set nonrespons ables)
Parlesclasses filles
Unevuedoit tre cre,unique mentdanslecas olaclassem re n'estpasab straite,pourunir lestuplesdes classesfilles avecceuxsp ci fiques laclasse mre.
Parlaclasse mre
Unevuedoit tre systmatique mentcrepour chaqueclasse fille(ralisantla restrictionetla projectiondepuis larelationunique cre).
58
Modede transform ation Par rfrence Parles classes filles Parla classe mre
Hritage exclusif
Hritage complet
+ +
= ++ +
= =
= ++
= = =
= =
59
Si une classe fille a une cl primaire propre, cette cl n'est pas retenue, et c'est bien la cl hrite de la classe mre qui devient la cl primaire (mais la cl est bien entendu maintenue comme cl candidate) Si la classe mre n'est pas abstraite, elle est galement reprsente par une relation qui ne contiendra que les tuples qui ne sont pas aussi des instances de classes filles. La classe mre est alors reprsente par une vue qui unit ses propres tuples avec les tuples de toutes ses classes filles et en les projetant sur les attributs hrits uniquement.
60
Reprsentation de documents Il existe trois faons de traduire la relation d'hritage : par rfrence, par absorption par les classes filles, par absorption par la classe mre.
61
62
d) En conclusion Conseil
L'hritage est toujours dlicat traduire en relationnel, ce qui est dommage car son pouvoir de reprsentation conceptuel est fort. Un conseil pour assumer une gestion correcte de la traduction de la relation d'hritage serait d'appliquer la lettre les rgles de transformation (ce qui conduira le plus souvent un hritage par rfrence) et, l'exprience aidant, de tolrer dans des cas bien matriss des digressions cette rgle.
Exemple
Ainsi si C hrite de B qui hrite de A, c'est la cl de A qui permettra d'identifier les classes A, B et C, et ce quelque soit le mode de transformation retenu.
63
ModleUML Classeinstanciable Classeabstraite Objet Attributsimple Attributcomposite Attributmultivalu Attributdriv Mthode Association1:N AssociationN:M Associationdedegr 3ousuprieur Composition Classed'association Occurenced'uneassociation Hritage Relation Rien Nuplet
Modlerelationnel
Attributatomique Ensembled'attributs Relation Procdurestock eoucontraintedynamique Procdurestock e Attributs Relation Relation Attributs Attributs Nuplet Vues
Le passage E-A vers relationnel est trs similaire au passage UML vers relationnel. Les rgles dcrites ciaprs sont donc complter avec celles prescrites dans la partie prcdente.
64
cre une nouvelle relation RA pour reprsenter A. On met dans RA comme cl trangre, les cls de toutes les relations correspondant aux entits participant A et dont la concatnation formera sa cl. On ajoute galement RA (et ventuellement dans sa cl pour les attributs cls) les attributs dfinis sur A.
65
Exemple
66
Occurenced'uneassociation
Occurenced'uneassociation
D. Algbre relationnelle
Objectifs
Connatre les oprateurs relationnels. Matriser l'algbre relationnelle.
1. Concepts manipulatoires
La reprsentation d'information sous forme relationnelle est intressante car les fondements mathmatiques du relationnel, outre qu'ils permettent une modlisation logique simple et puissante, fournissent galement un ensemble de concepts pour manipuler formellement l'information ainsi modlise. Ainsi une algbre relationnelle, sous forme d'un ensemble d'oprations formelles, permet d'exprimer des questions, ou requtes, poses une reprsentation relationnelle, sous forme d'expressions algbriques. L'algbre relationnelle est compose par les cinq oprateurs de base et les trois oprateurs additionnels suivants : Oprateurs de base Union Diffrence Projection Restriction Produit cartsien Oprateurs additionels Intersection Jointure Division
S. Crozat - UTC 2009
67
2. Oprateurs ensemblistes
Attention
Les oprateurs ensemblistes sont des relations binaires (c'est dire entre deux relations) portant sur des relations de mme schma.
Dfinition : Union
L'union de deux relations R1 et R2 de mme schma produit une relation R3 de mme schma constitue de l'ensemble des tuples appartenant R1 et/ou R2.
Dfinition : Diffrence
La diffrence entre deux relations R1 et R2 de mme schma produit une relation R3 de mme schma constitue de l'ensemble des tuples de R1 n'appartenant pas R2. Notons que la diffrence entre R1 et R2 n'est pas gale la diffrence entre R2 et R1.
Dfinition : Intersection
L'intersection de deux relations R1 et R2 de mme schma produit une relation R3 de mme schma constitue de l'ensemble des tuples appartenant la fois R1 et R2. Notons que l'intersection n'est pas une opration de base, car elle est quivalent deux oprations de diffrence successives.
Exemple
Soit les deux relations suivantes : Homme (Nom, Prnom, Age) Femme (Nom, Prnom, Age) Soit les tuples suivants pour ces deux relations respectivement : (Dupont, Pierre, 20) (Durand, Jean, 30) (Martin, Isabelle, 20) (Tintin, Hlne, 30) Soit l'opration suivante : R = Union (Homme, Femme) On obtient alors la relation R compose des tuples suivants : (Dupont, (Durand, (Martin, (Tintin, Pierre, 20) Jean, 30) Isabelle, 20) Hlne, 30)
La diffrence entre Homme et Femme (respectivement entre Femme et Homme) renvoie la relation Homme (respectivement Femme), car aucun tuple n'est commun aux deux relations. L'intersection entre
68
3. Projection
Dfinition : Projection
La projection est une opration unaire (c'est dire portant sur une seule relation). La projection de R1 sur une partie de ses attributs {A1, A2, ...} produit une relation R2 dont le schma est restreint aux attributs mentionns en oprande, comportant les mmes tuples que R1, et dont les doublons sont limins.
Exemple
Soit la relation suivante : Personne (Nom, Prnom, Age) Soit les tuples suivants : (Dupont, Pierre, 20) (Durand, Jean, 30) Soit l'opration suivante : R = Projection (Personne, Nom, Age) On obtient alors la relation R compose des tuples suivants : (Dupont, 20) (Durand, 30)
4. Restriction
Dfinition : Restriction
La restriction est une opration unaire (c'est dire portant sur une seule relation). La restriction de R1, tant donne une condition C, produit une relation R2 de mme schma que R1 et dont les tuples sont les tuples de R1 vrifiant la condition C.
Exemple
Soit la relation suivante : Personne (Nom, Prnom, Age) Soit les tuples suivants : (Dupont, Pierre, 20) (Durand, Jean, 30) Soit l'opration suivante :
69
R = Restriction (Personne, Age>25) On obtient alors la relation R compose de l'unique tuple restant suivant : (Durand, Jean, 30)
5. Produit
Dfinition : Produit cartsien
Le produit cartsien est une opration binaire (c'est dire portant sur deux relations). Le produit de R1 par R2 (quivalent au produit de R2 par R1) produit une relation R3 ayant pour schma la juxtaposition de ceux des relations R1 et R2 et pour tuples l'ensemble des combinaisons possibles entre les tuples de R1 et ceux de R2. Synonymes : Produit
Remarque
Le nombre de tuples rsultant du produit de R1 par R2 est gal au nombre de tuples de R1 multipli par le nombre de tuples de R2.
Exemple
Soit les deux relations suivantes : Homme (Nom, Prnom, Age) Femme (Nom, Prnom, Age) Soit les tuples suivants pour ces deux relations respectivement : (Dupont, Pierre, 20) (Durand, Jean, 30) (Martin, Isabelle, 15) (Tintin, Hlne, 40) Soit l'opration suivante : R = Produit (Homme, Femme) On obtient alors la relation R compose des tuples suivants : (Dupont, (Durand, (Dupont, (Durand, Pierre, 20, Martin, Isabelle, 15) Jean, 30, Martin, Isabelle, 15) Pierre, 20, Tintin, Hlne, 40) Jean, 30, Tintin, Hlne, 40)
6. Jointure
Dfinition : Jointure
La jointure est une opration binaire (c'est dire portant sur deux relations). La jointure de R1 et R2, tant donn une condition C portant sur des attributs de R1 et de R2, de mme domaine, produit une relation R3 ayant pour schma la juxtaposition de ceux des relations R1 et R2 et pour tuples l'ensemble de ceux obtenus par concatnation des tuples de R1 et de R2, et qui vrifient la condition C.
Exemple
Soit les deux relations suivantes : Homme (Nom, Prnom, Age)
70
Enfant (Nom, Prnom, Age) Soit les tuples suivants pour ces deux relations respectivement : (Dupont, Pierre, 20) (Durand, Jean, 30) (Dupont, Georges, 1) (Dupont, Jacques, 3) Soit l'opration suivante : R = Jointure (Homme, Enfant, Homme.Nom=Enfant.Nom) On obtient alors la relation R compose des tuples suivants : (Dupont, Pierre, 20, Dupont, Georges, 1) (Dupont, Pierre, 20, Dupont, Jacques, 3)
7. Jointure naturelle
Dfinition : Jointure naturelle
La jointure naturelle entre R1 et R2 est une jointure pour laquelle la condition est l'galit entre les attributs de mme nom de R1 et de R2. Il est donc inutile de spcifier la condition dans une jointure naturelle, elle reste toujours implicite.
Exemple
Soit deux relations R1 (A, B, C) et R2 (A, D), l'opration Jointure(R1,R2,R1.A=R2.A) est quivalente l'opration JointureNaturelle(R1,R2).
Remarque
Pour appliquer une jointure naturelle, il faut que les deux relations oprandes aient au moins un attribut ayant le mme nom en commun.
8. Jointure externe
Introduction
La jointure est une opration qui entrane la perte de certains tuples : ceux qui appartiennent une des deux relations oprandes et qui n'ont pas de correspondance dans l'autre relation. Il est ncessaire dans certains cas de palier cette lacune, et l'on introduit pour cela la notion de jointure externe.
71
Exemple
Soit les deux relations suivantes : Homme (Nom, Prnom, Age) Enfant (Nom, Prnom, Age) Soit les tuples suivants pour ces deux relations respectivement : (Dupont, Pierre, 20) (Durand, Jean, 30) (Dupont, Georges, 1) (Martin, Isabelle, 15) Soit l'opration suivante : R = JointureExterne (Homme, Enfant, Homme.Nom=Enfant.Nom) On obtient alors la relation R compose des tuples suivants : (Dupont, Pierre, 20, Dupont, Georges, 1) (Durand, Jean, 30, Null, Null, Null) (Null, Null, Null, Martin, Isabelle, 15) Une jointure externe gauche n'aurait renvoy que les deux premiers tuples et une jointure externe droite n'aurait renvoye que le premier et le troisime tuple.
9. Division
Dfinition : Division
La division est une opration binaire (c'est dire portant sur deux relations). La division de R1 par R2, sachant que R1 et R2 ont au moins un attribut commun (c'est dire de mme nom et de mme domaine), produit une relation R3 qui comporte les attributs appartenant R1 mais n'appartenant pas R2 et l'ensemble des tuples qui concatns ceux de R2 donnent toujours un tuple de R1.
Exemple
Soit les deux relations suivantes : Homme (Nom, Prnom, Mtier) Mtier (Metier) Soit les tuples suivants pour ces deux relations respectivement : (Dupont, Pierre, Ingnieur) (Dupont, Pierre, Professeur) (Durand, Jean, Ingnieur) (Ingnieur) (Professeur) Soit l'opration suivante : R = Division (Homme, Mtier)
72
Syntaxe
R R R R R R R R R R R R = = = = = = = = = = = = Union (R1, R2) Diffrence (R1, R2) Intersection (R1, R2) Projection (R1, A1, A2, ...) Restriction (R1, condition) Produit (R1, R2) Jointure (R1, R2, condition) JointureNaturelle (R1, R2) JointureExterne (R1, R2, condition) JointureGauche (R1, R2, condition) JointureDroite (R1, R2, condition) Division (R1, R2)
73
Question 3
[Solution n3 p 173]
74
IV -
LE LANGAGE SQL
Qu'appelle-t-on SQL? Le Langage de Dfinition de Donnes de SQL
IV
95 96 103 105 115 119 122 123
Gestion avec le Langage de Manipulation de Donnes de SQL Questions avec le Langage de Manipulation de Donnes de SQL Instructions avances pour le LMD de SQL Le Langage de Contrle de Donnes de SQL En rsum : SQL Bibliographie commente sur le SQL
SQL est un langage standardis, implment par tous les SGBDR, qui permet, indpendamment de la plate-forme technologique et de faon dclarative, de dfinir le modle de donnes, de le contrler et enfin de le manipuler.
A. Qu'appelle-t-on SQL?
Dfinition : SQL
SQL (pour langage de requtes structur) est un langage dclaratif destin la manipulation de bases de donnes au sein des SGBD et plus particulirement des SGBDR. SQL est un langage dclaratif, il n'est donc pas a proprement parl un langage de programmation, mais plutt une interface standard pour accder aux bases de donnes. Il est compos de trois sous ensembles : Le Langage de Dfinition de Donnes (LDD, ou en anglais DDL Data Definition Language) pour crer et supprimer des objets dans la base de donnes (tables, contraintes d'intgrit, vues, etc.). Le Langage de Contrle de Donnes (LCD, ou en anglais DCL, Data Control Language) pour grer les droits sur les objets de la base (cration des utilisateurs et affectation de leurs droits). Le Langage de Manipulation de Donnes (LMD, ou en anglais DML, Data Manipulation Language) pour la recherche, l'insertion, la mise jour et la suppression de donnes. Le LMD est bas sur les oprateurs relationnels, auxquels sont ajouts des fonctions de calcul d'agrgats et des instructions pour raliser les oprations d'insertion, mise jour et suppression.
75
Le langage SQL
IBM Sequel/2 IBM System/R IBM DB2 Ce sont ces langages qui ont donn naissance au standard SQL, normalis en 1986 au tats-Unis par l'ANSI pour donner SQL/86 (puis au niveau international par l'ISO en 1987).
SQL-86 (ou SQL-87) : Version d'origine SQL-89 (ou SQL-1) : Amliorations mineures SQL-92 (ou SQL-2) : Extensions fonctionnelles majeures (types de donnes, oprations relationnelles, instruction LDD, transactions, etc. SQL-99 (ou SQL-3) : Introduction du PSM (couche procdurale sous forme de procdure stockes) et du RO SQL-2003 : Extensions XML SQL-2006 : Amliorations mineures (pour XML notamment) SQl-2008 : Amliorations mineures (pour le RO notamment)
Le LDD permet de crer les objets composant une BD de faon dclarative. Il permet notamment la dfinition des schmas des relations, la dfinition des contraintes d'intgrit, la dfinition de vues relationnelles.
1. Types de donnes
Introduction
Un attribut d'une relation est dfini pour un certain domaine. On peut galement dire qu'il est d'un type particulier. Les types de donnes disponibles en SQL varient d'un SGBD l'autre, on peut nanmoins citer un certain nombre de types standards que l'on retrouve dans tous les SGBD.
Les nombres entiers INTEGER(X), o X est optionnel et dsigne le nombre de chiffres maximum pouvant composer le nombre. Il existe galement un certain nombre de variantes permettant de dfinir des entiers plus ou moins volumineux, tels que TINYINT, SMALLINT ou LONGINT. Les nombres dcimaux DECIMAL(X,Y), o X et Y sont optionnels et dsignent respectivement le nombre de chiffres
S. Crozat - UTC 2009
76
Le langage SQL
maximum pouvant composer le nombre avant et aprs la virgule. NUMERIC est galement utilis de faon quivalente. Les nombres virgule flottante REAL(X,Y), avec X et Y optionnels et dfinissant le nombre de chiffres avant et aprs la virgule. Il existe galement un certain nombre de variantes permettant de dfinir une prcision plus grande, telles que DOUBLE.
2. Cration de tables
Introduction
La cration de table est le fondement de la cration d'une base de donnes en SQL.
Syntaxe
CREATE TABLE <nom de table> ( <nom colonne1> <type colonne1>, <nom colonne2> <type colonne2>, ... <nom colonneN> <type colonneN>, );
77
Le langage SQL
Exemple
CREATE TABLE Personne ( Nom VARCHAR(25), Prenom VARCHAR(25), Age INTEGER(3) );
3. Contraintes d'intgrit
Dfinition : Contraintes d'intgrit
Une contrainte d'intgrit est une rgle qui dfinit la cohrence d'une donne ou d'un ensemble de donnes de la BD. Il existe deux types de contraintes : sur une colonne unique, ou sur une table lorsque la contrainte porte sur une ou plusieurs colonnes. Les contraintes sont dfinies au moment de la cration des tables. Les contraintes d'intgrit sur une colonne sont : PRIMARY KEY : dfinit l'attribut comme la cl primaire NOT NULL : interdit l'absence de valeur pour l'attribut UNIQUE : interdit que deux tuples de la relation aient la mme valeur pour l'attribut. REFERENCES <nom table> (<nom colonnes>) : contrle l'intgrit rfrentielle entre l'attribut et la table et ses colonnes spcifies CHECK (<condition>) : contrle la validit de la valeur de l'attribut spcifi dans la condition dans le cadre d'une restriction de domaine Les contraintes d'intgrit sur une table sont : PRIMARY KEY (<liste d'attibuts>) : dfinit les attributs de la liste comme la cl primaire UNIQUE (<liste d'attibuts>) : interdit que deux tuples de la relation aient les mmes valeurs pour l'ensemble des attributs de la liste. FOREIGN KEY (<liste d'attibuts>) REFERENCES <nom table>(<nom colonnes>) : contrle l'intgrit rfrentielle entre les attributs de la liste et la table et ses colonnes spcifies CHECK (<condition>) : contrle la validit de la valeur des attributs spcifis dans la condition dans le cadre d'une restriction de domaine
Syntaxe
CREATE TABLE <nom de table> ( <nom colonne1> <type colonne1> <contraintes colonne1>, <nom colonne2> <type colonne2> <contraintes colonne2>, ... <nom colonneN> <type colonneN> <contraintes colonneN>, <contraintes de table> );
Remarque : Cl candidate
La contrainte UNIQUE NOT NULL sur un attribut ou un groupe d'attributs dfinit une cl candidate non primaire.
S. Crozat - UTC 2009
78
Le langage SQL
Remarque
Les contraintes sur une colonne et sur une table peuvent tre combines dans la dfinition d'un mme schma de relation. Une contrainte sur une colonne peut toujours tre remplace par une contrainte sur une table.
Exemple
CREATE TABLE Personne ( NSS CHAR(13) PRIMARY KEY, Nom VARCHAR(25) NOT NULL, Prenom VARCHAR(25) NOT NULL, Age INTEGER(3) CHECK (Age BETWEEN 18 AND 65), Mariage CHAR(13) REFERENCES Personne(NSS), Codepostal INTEGER(5), Pays VARCHAR(50), UNIQUE (Nom, Prenom), FOREIGN KEY (Codepostal, Pays) REFERENCES Adresse (CP, Pays) ); CREATE TABLE Adresse ( CP INTEGER(5) NOT NULL, Pays VARCHAR(50) NOT NULL, Initiale CHAR(1) CHECK (Initiale = LEFT(Pays, 1)), PRIMARY KEY (CP, Pays) ); Dans la dfinition de schma prcdente on a pos les contraintes suivantes : La cl primaire de Personne est NSS et la cl primaire de Adresse est (CP, Pays). Nom, Prnom ne peuvent pas tre null et (Nom, Prnom) est une cl. Age doit tre compris entre 18 et 65 et Initiale doit tre la premire lettre de Pays (avec la fonction LEFT qui renvoie la sous chane gauche de la chane passe en premier argument, sur le nombre de caractres passs en second argument) Mariage est cl trangre vers Personne et (Codepostal, Pays) est une cl trangre vers Adresse.
4. Cration de vues
Dfinition : Vue
Une vue est une dfinition logique d'une relation, sans stockage de donnes, obtenue par interrogation d'une ou plusieurs tables de la BD. Une vue peut donc tre perue comme une fentre dynamique sur les donnes, ou encore une requte stocke (mais dont seule la dfinition est stocke, pas le rsultat, qui reste calcul dynamiquement). Une vue permet d'implmenter le concept de schma externe d'un modle conceptuel. Synonymes : Relation drive, Table virtuelle calcule
Syntaxe
CREATE VIEW <nom de vue> <nom des colonnes> AS <spcification de question> La spcification d'une question se fait en utilisant le LMD. Le nombre de colonnes nommes doit tre gal au nombre de colonnes renvoyes par la question spcifie. Le nom des colonnes est optionnel, s'il n'est pas spcifi, c'est le nom des colonnes telle qu'elles sont renvoyes par la question, qui sera utilis.
79
Le langage SQL
Exemple
CREATE VIEW Employe (Id, Nom) AS SELECT NSS, Nom FROM Personne La vue Employe est ici une projection de la relation Personne sur les attributs NSS et Nom, renomms respectivement Id et Nom.
5. Suppression d'objets
Il est possible de supprimer des objets de la BD, tels que les tables ou les vues.
Syntaxe
DROP <type objet> <nom objet>
Exemple
DROP TABLE Personne; DROP VIEW Employe;
6. Modification de tables
Introduction
L'instruction ALTER TABLE permet de modifier la dfinition d'une table (colonnes ou contraintes) pralablement cre. Cette commande absente de SQL-89 est normalise dans SQL-92
80
Le langage SQL
b) Modifications
On dcide d'apporter les amnagements suivants la table : on passe la taille du champ "nom" de 50 255 caractres maximum, on dfinit "nom" comme UNIQUE et on supprime le champ "prenom". alter table t_personnes modify (nom varchar(255)); alter table t_personnes add (UNIQUE (nom)); alter table t_personnes
81
Le langage SQL
drop (prenom);
c) Table finale
La table obtenue aprs modification est identique la table qui aurait t dfinie directement telle que ciaprs. create table t_personnes ( pk_n number (4), nom varchar(255), PRIMARY KEY (pk_n), UNIQUE (nom) );
1. Insertion de donnes
Le langage SQL fournit galement des instructions pour ajouter des nouveaux tuples une relation. Il offre ainsi une interface standard galement pour ajouter des information dans une base de donnes. Il existe deux moyens d'ajouter des donnes, soit par fourniture directe des valeurs des proprits du tuple ajouter, soit par slection des tuples ajouter dans une autre relation.
82
Le langage SQL
SELECT Date, Montant, 'Annulation de dbit' FROM Debit WHERE Debit.Date = 25-12-2001; Dans cet exemple tous les dbits effectus le 25 dcembre 2001, sont recrdits pour le mme montant (et la mme date), avec la mention annulation dans l'objet du crdit. Ceci pourrait typiquement ralis en cas de dbits errrons ce jour l.
Remarque
Les proprits non valorises sont affectes la valeur null. Il est possible de ne pas spcifier les proprits valoriser, dans ce cas, toutes les proprits de la relation seront considres, dans leur ordre de dfinition dans la relation ( n'utiliser que dans les cas les plus simples).
3. Suppression de donnes
Le langage SQL fournit une instruction pour supprimer des tuples existants dans une relation.
Syntaxe
DELETE FROM <Nom de la relation> WHERE <Condition pour filtrer les tuples supprimer>
83
Le langage SQL
1. Slection
Introduction
La requte de slection ou question est la base de la recherche de donnes en SQL.
Dfinition : Slection
La selection est la composition d'un produit cartsien, d'une restriction et d'une projection (ou encore la composition d'une jointure et d'une projection).
Syntaxe
SELECT <liste d'attributs projets> FROM <liste de relations> WHERE <condition> La partie SELECT indique le sous-ensemble des attributs qui doivent apparatre dans la rponse (c'est le schma de la relation rsultat). La partie FROM dcrit les relations qui sont utilisables dans la requte (c'est dire l'ensemble des attributs que l'on peut utiliser). La partie WHERE exprime les conditions que doivent respecter les attributs d'un tuple pour pouvoir tre dans la rponse. Une condition est un prdicat et par consquent renvoie un boolen. Cette partie est optionnelle. Afin de dcrire un attribut d'une relation dans le cas d'une requte portant sur plusieurs relations, on utilise la notation "RELATION.ATTRIBUT".
Exemple
SELECT Nom, Prenom FROM Personne WHERE Age>18 Cette requte slectionne les attributs Nom et Prenom des tuples de la relation Personne, ayant un attribut Age suprieur 18.
Exemple
SELECT Parent.Prenom, Enfant.Prenom FROM Parent, Enfant WHERE Enfant.Nom=Parent.Nom Cette requte slectionne les prnoms des enfants et des parents ayant le mme nom. On remarque la notation Parent.Nom et Enfant.Nom pour distinguer les attributs Prenom des relations Parent et Enfant. On notera que cette slection effectue une jointure sur les proprits Nom des relations Parent et Enfant.
Remarque : SELECT *
Pour projeter l'ensemble des attributs d'une relation, on peut utiliser le caractre "*" la place de la liste des attributs projeter.
84
Le langage SQL
Exemple
SELECT * FROM Avion Cette requte slectionne tous les attributs de la relation Avion. Notons que dans cet exemple, la relation rsultat est exactement la relation Avion
Exemple
SELECT DISTINCT Avion FROM Vol WHERE Date=31-12-2000 Cette requte slectionne l'attribut Avion de la relation Vol, concernant uniquement les vols du 31 dcembre 2000 et renvoie les tuples dans doublons.
Dfinition : Condition
Condition Elmentaire ::= Proprit <Oprateur de comparaison> Constante Condition ::= Condition <Oprateur logique> Condition | Condition Elmentaire Les oprateurs de comparaison sont : P=C P <> C P<C P>C P <= C P >= C P BETWEEN C1 AND C2 P LIKE 'chane'
85
Le langage SQL
P IN (C1, C2, ...) P IS NULL Les oprateur logique sont : OR AND NOT
86
Le langage SQL
ON <condition> Et pour plusieurs relations : SELECT * FROM (R1 INNER JOIN R2 ON <condition>) INNER JOIN Ri ON <condition>
Remarque : Auto-jointure
Pour raliser une auto-jointure, c'est dire la jointure d'une relation avec elle-mme, on doit utiliser le renommage des relations. Pour renommer une relation, on note dans la clause FROM le nom de renommage aprs le nom de la relation : "FROM NOM_ORIGINAL NOUVEAU_NOM".
Exemple : Auto-jointure
SELECT E1.Nom FROM Employe E1, Employe E2 WHERE E1.Nom= E2.Nom
Remarque
Remarquons que "Avion LEFT OUTER JOIN Vol" est quivalent "Vol RIGHT OUTER JOIN Avion" en terme de rsultat. Intuitivement, on prfre utiliser la jointure gauche pour slectionner tous les tuple du ct N d'une relation 1:N, mme si il ne sont pas rfrencs ; et la jointure droite pour pour slectionner tous les tuples d'une relation 0:N, y compris ceux qui ne font pas de rfrence. Cette approche revient toujours garder gauche de l'expression "JOIN" la relation "principale", i.e. celle dont on veut tous les tuples, mme s'ils ne rfrencent pas (ou ne sont pas rfrencs par) la relation "secondaire".
7. Oprateurs ensemblistes
Introduction
Les oprateurs ensemblistes ne peuvent tre exprims l'aide de l'instruction de slection seule.
Syntaxe : Union
SELECT * FROM R1
87
Le langage SQL
Syntaxe : Intersection
SELECT * FROM R1 INTERSECT SELECT * FROM R2
Syntaxe : Diffrence
SELECT * FROM R1 EXCEPT SELECT * FROM R2
Remarque
Les oprations INTERSECT et EXCEPT n'existe que dans la norme SQL2, et non dans la norme SQL1. Certain SGBD sont susceptibles de ne pas les implmenter.
8. Tri
Introduction
On veut souvent que le rsultat d'une requte soit tri en fonction des valeurs des proprits des tuples de ce rsultat.
Syntaxe : ORDER BY
SELECT <liste d'attributs projets> FROM <liste de relations> WHERE <condition> ORDER BY <liste ordonne d'attributs> Les tuples sont tris d'abord par le premier attribut spcifi dans la clause ORDER BY, puis en cas de doublons par le second, etc.
Exemple
SELECT * FROM Personne ORDER BY Nom, Age DESC
9. Fonctions de calcul
Dfinition : Fonction de calcul
Une fonction de calcul s'applique l'ensemble des valeurs d'une proprit d'une relation avec pour rsultat la production d'une valeur atomique unique (entier, chane, date, etc). Les cinq fonctions prdfinies sont : Count(Relation.Proprit) Renvoie le nombre de valeurs non nulles d'une proprit pour tous les tuples d'une relation ; Sum(Relation.Proprit)
88
Le langage SQL
Renvoie la somme des valeurs d'une proprit des tuples (numriques) d'une relation ; Avg(Relation.Proprit) Renvoie la moyenne des valeurs d'une proprit des tuples (numriques) d'une relation ; Min(Relation.Proprit) Renvoie la plus petite valeur d'une proprit parmi les tuples d'une relation . Max(Relation.Proprit) Renvoie la plus grande valeur d'une proprit parmi les tuples d'une relation.
Syntaxe
SELECT <liste de fonctions de calcul> FROM <liste de relations> WHERE <condition appliquer avant calcul>
Exemple
SELECT Min(Age), Max(Age), Avg(Age) FROM Personne WHERE Qualification='Ingnieur'
10. Agrgats
Dfinition : Agrgat
Un agrgat est un partitionnement horizontal d'une table en sous-tables, en fonction des valeurs d'un ou plusieurs attributs de partitionnement, suivi de l'application d'une fonction de calcul chaque attribut des sous-tables obtenues.
Syntaxe
SELECT <liste d'attributs de partionnement projeter et de fonctions de calcul> FROM <liste de relations> WHERE <condition appliquer avant calcul de l'agrgat> GROUP BY <liste ordonne d'attributs de partitionnement> HAVING <condition sur les fonctions de calcul>
Exemple
SELECT Societe.Nom, AVG(Personne.Age) FROM Personne, Societe WHERE Personne.NomSoc = Societe.Nom GROUP BY Societe.Nom HAVING Count(Personne.NumSS) > 10 Cette requte calcul l'ge moyen du personnel pour chaque socit comportant plus de 10 salaris.
89
Le langage SQL
Remarque : Restriction
Une restriction peut tre applique avant calcul de l'agrgat, au niveau de la clause WHERE, portant ainsi sur la relation de dpart, mais aussi aprs calcul de l'agrgat sur les rsultats de ce dernier, au niveau de la clause HAVING.
Remarque : Projection
Si dans la clause SELECT, un attribut est projet directement, sans qu'une fonction lui soit applique, alors il faut imprativement que cet attribut apparaisse dans la clause GROUP BY (car ce ne peut tre qu'un attribut de partitionnement).
1. Requtes imbriques
Introduction
Il est possible d'imbriquer des requtes les unes dans les autres pour procduraliser les questions, et ainsi rpondre des questions plus complexes, voire impossibles, crire en algbre relationnel classique.
Dfinition : Sous-requte
Requte incluse dans la clause WHERE ou FROM d'une autre requte. Synonymes : Sous-question, Requte imbrique
90
Le langage SQL
Exemple
SELECT Nom FROM Chercheur WHERE Nom IN (SELECT Nom FROM Enseignant)
2. Sous-requte d'existence IN
Introduction
Cette sous-requte permet de vrifier que la projection d'un tuple de la requte principale est prsent dans la sous-requte.
Syntaxe
SELECT <projections> FROM <relations> WHERE (<projection d'un tuple>) IN (<requte imbrique>) La projection du tuple de la requte principale doit conduire un schma relationnel identique celui de la requte imbrique.
91
Le langage SQL
Remarque : NOT IN
On peut tester la non existence du tuple dans la sous requte en utilisant la clause NOT IN la place de la clause IN.
Syntaxe
SELECT <projections> FROM <relations> WHERE EXISTS (<requte imbrique>) La requte imbrique faisant rfrence des proprits (ventuellement non projetes) de la requte principale.
Exemple
SELECT Chercheur.Nom FROM Chercheur WHERE EXISTS (SELECT * FROM Universite WHERE Universite.Nom=Chercheur.Universite)
Syntaxe
SELECT <projections> FROM <relations> WHERE <proprit> <oprateur de comparaison> ALL (<requte imbrique>) La requte imbrique renvoyant un tuple ne comportant qu'une proprit de mme domaine que la proprit teste de la requte principale.
92
Le langage SQL
Exemple
SELECT Nom FROM Chercheur WHERE Age > ALL (SELECT Age FROM Etudiant)
Syntaxe
SELECT <projections> FROM <relations> WHERE <proprit> <oprateur de comparaison> ANY (<requte imbrique>) La requte imbrique renvoyant un tuple ne comportant qu'une proprit de mme domaine que la proprit teste de la requte principale.
Exemple
SELECT Nom FROM Chercheur WHERE Age < ANY (SELECT Age FROM Etudiant)
Remarque : SOME
SOME peut tre utilis comme un synonyme de ANY.
Syntaxe
SELECT ... FROM (SELECT ... FROM ... WHERE ...) WHERE ...)
Remarque
Il est possible d'enchaner rcursivement N questions.
Mthode
Cette extension est particulirement utile pour les calculs d'agggat aprs filtrage ou pour enchaner les calculs d'aggrgat (par exemple pour faire la moyenne de sommes aprs regroupement).
93
Le langage SQL
Le LCD permet de crer les utilisateurs et de dfinir leurs droits sur les objets de la BD de faon dclarative. Il permet notamment l'attribution et la rvocation de droits des utilisateurs, sur l'ensemble des bases du SGBD, sur une BD en particulier, sur des relations d'une BD, voire sur certains attributs seulement d'une relation.
1. Attribution de droits
SQL propose une commande pour attribuer des droits des utilisateurs sur des tables.
Syntaxe
GRANT <liste de droits> ON <nom table> TO <utilisateur> [WITH GRANT OPTION] Les droits disponibles renvoient directement aux instructions SQL que l'utilisateur peut excuter : SELECT INSERT DELETE UPDATE ALTER De plus il est possible de spcifier le droit ALL PRIVILEGES qui donne tous les droits l'utilisateur (sauf celui de transmettre ses droits). La clause WITH GRANT OPTION est optionnelle, elle permet de prciser que l'utilisateur a le droit de transfrer ses propres droits sur la table d'autres utilisateur. Une telle clause permet une gestion dcentralise de l'attribution des droits et non reposant uniquement dans les mains d'un administrateur unique. La spcification PUBLIC la place d'un nom d'utilisateur permet de donner les droits spcifis tous les utilisateurs de la BD.
Exemple
GRANT SELECT, UPDATE ON Personne TO Pierre; GRANT ALL PRIVILEGES ON Adresse TO PUBLIC;
94
Le langage SQL
de cette base de donnes. La syntaxe dans le cas de MySQL est "nom_bd.*" la place du nom de la table. Dans ce cas les droits CREATE et DROP sont gnralement ajouts pour permettre ou non aux utilisateurs de crer et supprimer des tables sur cette BD.
2. Rvocation de droits
SQL propose une commande pour rvoquer les droits attribus des utilisateurs.
Syntaxe
REVOKE <liste de droits> ON <nom table> FROM <utilisateur>
Exemple
REVOKE SELECT, UPDATE ON Personne TO Pierre; REVOKE ALL PRIVILEGES ON Adresse TO PUBLIC;
G. En rsum : SQL
Langage SQL
Le langage SQL permet la cration, le contrle et la manipulation d'une BD. LDD Permet de crer, modifier et supprimer les objets d'une BD CREATE TABLE CREATE VIEW LCD Permet de dfinir les droits des utilisateurs sur les objets de la BD
95
Le langage SQL
GRANT REVOKE LMD Permet d'entrer et sortir des donnes dans la BD INSERT, UPDATE, DELETE SELECT
-
Complment : Pratique
Comprendre les jointures dans Access [w_mhubiche.developpez.com] Un tutoriel trs pdagogique sur l'expression de jointures sous Access qui aide comprendre l'opration de jointure en gnral.
96
V-
LA THORIE DE LA
Les dpendances fonctionnelles Les formes normales Bibliographie commente sur la normalisation
NORMALISATION RELATIONNELLE
V
125 134 139
La thorie de la normalisation relationnelle est trs importante pour la conception de BD, dans la mesure o elle donne le cadre thorique pour la gestion de la redondance, et dans la mesure o une bonne matrise de la redondance est un aspect majeur de cette conception.
97
Question 2
[Solution n5 p 174]
Cette relation contient-elle des redondances ? Si oui lesquelles ? Justifiez brivement. Question 3
[Solution n6 p 174] Si la relation contient des redondances, proposez une solution contenant exactement la mme information, mais sans redondance.
Tableau 14 Relation redondante On peut alors se rendre compte que des redondances sont prsentes, et l'on sait que ces redondances conduiront des problmes de contrle de la cohrence de l'information (erreur dans la saisie d'un numro de scurit sociale), de mise jour (changement de nom reporter dans de multiples tuples), de perte d'information lors de la suppression de donnes (disparition des informations concernant un type de vhicule) et de difficult reprsenter certaines informations (un type de vhicule sans propritaire).
Complment
On conseillera de lire le chapitre 2 de SQL2 SQL3, applications Oracle [Delmal01] (pages 42 49) qui propose une trs bonne dmonstration par l'exemple des problmes poss par une mauvaise modlisation relationnelle.
S. Crozat - UTC 2009
98
3. Principes de la normalisation
Fondamental
La thorie de la normalisation est une thorie destine concevoir un bon schma dune BD sans redondance dinformation et sans risques d'anomalie de mise jour. Elle a t introduite ds l'origine dans le modle relationnel. La thorie de la normalisation est fonde sur deux concepts principaux : Les dpendances fonctionnelles Elles traduisent des contraintes sur les donnes. Les formes normales Elles dfinissent des relations bien conues. La mise en oeuvre de la normalisation est fonde sur la dcomposition progressive des relations jusqu' obtenir des relations normalises.
4. Dpendance fonctionnelle
Dfinition : Dpendance fonctionnelle
Soient R(A1, A2, ... , An) un schma de relation, X et Y des sous-ensembles de A1, A2, ... , An. On dit que X dtermine Y, ou que Y dpend fonctionnellement de X, si est seulement s'il existe une fonction qui partir de toute valeur de X dtermine une valeur unique de Y. Plus formellement on pose que X dtermine Y pour une relation R ssi quelle que soit l'instance r de R, alors pour tous tuples t1 et t2 de r on a : Projection (t1,X) = Projection (t2,X) Projection (t1,Y) = Projection (t2,Y)
Syntaxe
Si X dtermine Y, on note : XY
Exemple
Soit la relation R suivante : Personne(NSS, Nom, Prnom, Marque, Type, Puiss, Date, Prix) On peut poser les exemples de DF suivants : NSSNom NSSPrnom TypeMarque TypePuiss (NSS, Type, Date)Prix etc.
99
administrateurs de la BD et tre contrles par le SGBD. De plus l'identification des DF est la base indispensable pour dterminer dans quelle forme normale est une relation et comment en diminuer la redondance.
Dfinition : Rflexivit
Tout groupe d'attributs se dtermine lui mme et dtermine chacun de ses attributs (ou sous groupe de ses attributs). Soient X et Y des attributs : XYXY et XYX et XYY
Dfinition : Augmentation
Si un attribut X dtermine un attribut Y, alors tout groupe compos de X enrichi avec d'autres attributs dtermine un groupe compos de Y et enrichi des mmes autres attributs. Soient X, Y et Z des attributs : XY XZYZ
Dfinition : Transitivit
Si un attribut X dtermine un attribut Y et que cet attribut Y dtermine un autre attribut Z, alors X dtermine Z. Soient X, Y et Z des attributs : XY et YZ XZ
Dfinition : Pseudo-transitivit
Si un attribut X dtermine un autre attribut Y, et que Y appartient un groupe G qui dtermine un troisime attribut Z, alors le groupe G' obtenu en substituant Y par X dans G dtermine galement Z. Soient, W, X, Y et Z des attributs : XY et WYZ WXZ Cette proprit est dduite de l'augmentation et de la rflexivit : XY et WYZ WXWY et WYZ WXZ
Dfinition : Union
Si un attribut dtermine plusieurs autres attributs, alors il dtermine tout groupe compos de ces attributs. Soient X, Y et Z des attributs : XY et XZ XYZ Cette proprit est dduite de la rflexivit, de l'augmentation et de la transitivit : XY et XZ XXX et XXXY et YXYZ XYZ
Dfinition : Dcomposition
Si un attribut dtermine un groupe d'attribut, alors il dtermine chacun des attributs de ce groupe pris
S. Crozat - UTC 2009
100
individuellement. Soient X, Y et Z des attributs : XYZ XZ et XY Cette proprit est dduite de la rflexivit et de la transitivit : XYZ XYZ et YZZ XZ
7. DF lmentaire
Dfinition : Dpendance fonctionnelle lmentaire
Soit G un groupe d'attributs et A un attribut, une DF GA est lmentaire si A n'est pas inclu dans G et qu'il n'existe pas d'attribut A' de G qui dtermine A.
Exemple : DF lmentaires
ABC est lmentaire si ni A, ni B pris individuellement ne dterminent C. Nom, DateNaissance, LieuNaissancePrnom est lmentaire.
ABA n'est pas lmentaire car A est inclu dans AB. ABCB n'est pas lmentaire car CB n'est pas un attribut, mais un groupe d'attributs. NSSNom, Prnom n'est pas lmentaire.
Remarque
On peut toujours rcrire un ensemble de DF en un ensemble de DFE, en supprimant les DF triviales obtenues par rflexivit et en dcomposant les DF partie droite non atomique en plusieurs DFE.
Exemple
Soit l'ensemble F = {AB, BC, BD, AE}. La fermeture transitive de F est F+ = { AB, BC, BD, AE, AC, AD }
101
Remarque
Tout ensemble de DFE (et donc tout ensemble de DF) admet au moins une couverture minimale (et en pratique souvent plusieurs).
Exemple
L'ensemble F = {AB, AC, BC, CB} admet les deux couvertures minimales : CM1 = {AC, BC, CB} et CM2 = {AB, BC, CB}
102
Remarque
Toute cl candidate dtermine les autres cls candidates, puisque qu'une cl dtermine tous les attributs de la relation.
1. Principe de la dcomposition
Dfinition : Dcomposition
L'objectif de la dcomposition est de "casser" une relation en relations plus petites afin d'en liminer les redondances et sans perdre d'information. La dcomposition d'un schma de relation R(A1,A2,...,An) est le processus de remplacement de ce schma par une collection de schmas R1,R2,...,Rn telle qu'il est possible de reconstruire R par des oprations relationnelles de jointure sur R1,R2,...,Rn.
2. Formes normales
Les formes normales ont pour objectif de dfinir la dcomposition des schmas relationnels, tout en prservant les DF et sans perdre d'informations, afin de reprsenter les objets et associations canoniques du monde rel de faon non redondante. On peut recenser les 6 formes normales suivantes, de moins en moins redondantes : la premire forme normale la deuxime forme normale la troisime forme normale
S. Crozat - UTC 2009
103
la forme normale de Boyce-Codd la quatrime forme normale la cinquime forme normale La troisime forme normale est gnralement reconnue comme tant la plus importante respecter.
Dfinition : 2NF
Une relation est en 2NF si elle est en 1NF et si tout attribut qui n'est pas dans une cl ne dpend pas d'une partie seulement d'une cl. C'est dire encore que toutes les DF issues d'une cl sont lmentaires.
104
Remarque
La dfinition de la 2NF doit tre vrifie pour toutes les cls candidates et non seulement la cl primaire (dans le cas o il y a plusieurs cls).
Remarque
Si toutes les cls d'une relation ne contiennent qu'un unique attribut, et que la relation est en 1NF, alors la relation est en 2NF.
Dfinition : 3NF
Une relation est en 3NF si elle est en 2NF et si tout attribut n'appartenant pas une cl ne dpend pas d'un autre attribut n'appartenant pas une cl. C'est dire encore que toutes les DFE vers des attributs n'appartenant pas une cl, sont issues d'une cl.
Attention : Cl candidate
La dfinition concerne toutes les cls candidates et non uniquement la cl primaireSQL avanc : Programmation et techniques avances. [Celko00] (p.27).
105
SalairePrime Cette relation n'est pas en 3NF car Salaire, qui n'est pas une cl, dtermine Prime. Pour avoir un schma relationnel en 3NF, il faut dcomposer Profession :
Profession(Profession, Salaire) Salaire(Salaire, Prime) Ce schma est en 3NF, car Prime est maintenant dtermin par une cl. On remarque que cette dcomposition prserve les DF, car par transitivit, Profession dtermine Salaire qui dtermine Prime, et donc Profession dtermine toujours Prime.
Fondamental
Il est souhaitable que les relations logiques soient en 3NF. En effet, il existe toujours une dcomposition sans perte d'information et prservant les DF d'un schma en 3NF. Si les formes normales suivantes (BCNF, 4NF et 5NF) assurent un niveau de redondance encore plus faible, la dcomposition permettant de les atteindre ne prserve plus les DF.
Dfinition : BCNF
Une relation est en BCNF si elle est en 3NF et si tout attribut qui n'appartient pas une cl n'est pas source d'une DF vers une partie d'une cl. C'est dire que les seules DFE existantes sont celles dans lesquelles une cl dtermine un attribut.
Exemple : Employs
Soit la relation Personne : Personne(NSS, Pays, Nom, Rgion) Soit les DF suivantes sur cette relation : NSS,PaysNom NSS,PaysRgion RgionPays Il existe une DFE qui n'est pas issue d'une cl et qui dtermine un attribut appartenant une cl. Cette relation est en 3NF, mais pas en BCNF (car en BCNF toutes les DFE sont issues d'une cl).
106
Pour avoir un schma relationnel en BCNF, il faut dcomposer Personne : Personne(NSS, Rgion, Nom) Rgion(Region, Pays) Remarquons que les DF n'ont pas t prserves par la dcomposition puisque NSS et Pays ne dterminent plus Rgion.
Remarque : Simplicit
La BCNF est la forme normale la plus facile apprhender intuitivement et formellement, puisque les seules DFE existantes sont de la forme KA o K est une cl.
* * *
La normalisation permet de dcomposer un schma relationnel afin d'obtenir des relations non redondantes. La 3NF est souhaitable car toujours possible obtenir, sans perte d'information et sans perte de DF. La BCNF est galement indique, car elle est un peu plus puissante, et plutt plus simple que la 3NF. La BCNF n'est pas encore suffisante pour liminer toutes les redondances. Il existe pour cela les 4NF et 5NF qui ne sont pas abordes dans ce cours. Notons galement que les cas de non-4NF et de non-5NF sont assez rares dans la ralit.
107
VI -
LE RELATIONNEL-OBJET
Introduction : R, OO, RO Le modle relationnel-objet Le passage conceptuel vers relationnel-objet SQL3 (implmentation Oracle 9i) Exemples RO En rsum : Le relationnel-objet Bibliographie commente sur le relationnel-objet
VI
141 144 149 151 158 163 164
Si le modle logique relationnel a prouv sa puissance et sa fiabilit au cours des 20 dernires annes, les nouveaux besoins de l'informatique industrielle ont vu l'mergence de structures de donnes complexes mal adaptes une gestion relationnelle. La naissance du courant "orient objet" et des langages associes (Java et C++ par exemple) ont donc galement investi le champ des SGBD afin de proposer des solutions pour tendre les concepts du relationnel et ainsi mieux rpondre aux nouveaux besoins de modlisation.
A. Introduction : R, OO, RO
Objectifs
Comprendre les limites du modle relationnel Comprendre pourquoi et comment le modle relationnel peut tre tendu
Fond sur une thorie rigoureuse et des principes simples Mature, fiable, performant Indpendance programme et donnes SGBDR : les plus utiliss, connus, matriss SQL une implmentation standard du modle relationnel, avec des API pour la plupart des langages de programmation Les SGBDR incluent des outils performants de gestion de requtes, de gnrateurs d'applications, d'administration, d'optimisation, etc, ...
109
Le relationnel-objet
La structure de donne en tables est pauvre d'un point de vue de la modlisation logique Le mapping MCD vers MLD entrane une perte de smantique La manipulation de structures relationnelles par des langages objets entrane une impedance mismatch, c'est dire un dcalage entre les structures de donnes pour le stockage et les structures de donnes pour le traitement (ce qui implique des conversions constantes d'un format l'autre) La 1NF est inapproprie la modlisation d'objets complexes La normalisation entrane la gense de structures de donnes complexes et trs fragmentes, qui peuvent notamment poser des problmes de performance ou d'volutivit Le SQL doit toujours tre combin d'autres langages de programmation pour tre effectivement mis en uvre La notion de mthode ne peut tre intgre au modle logique, elle doit tre gre au niveau de l'implmentation physique Les types de donnes disponibles sont limits et non extensibles
3. Les SGBDOO
Introduction
Les SGBDOO ont t crs pour grer des structures de donnes complexes, en profitant de la puissance de modlisation des modles objets et de la puissance de stockage des BD classiques. Objectifs des SGBDOO : Offrir aux langages de programmation orients objets des modalits de stockage permanent et de partage entre plusieurs utilisateurs Offrir aux BD des types de donnes complexes et extensibles Permettre la reprsentation de structures complexes et/ou taille variable Avantages des SGBDOO : Le schma d'une BD objet est plus facile apprhender que celui d'une BD relationnelle (il contient plus de smantique, il est plus proche des entits relles) L'hritage permet de mieux structurer le schma et de factoriser certains lments de modlisation La cration de ses propres types et l'intgration de mthodes permets une reprsentation plus directe du domaine L'identification des objets permet de supprimer les cls artificielles souvent introduites pour atteindre la 3NF et donc de simplifier le schma Les principes d'encapsulation et d'abstraction du modle objet permettent de mieux sparer les BD de leurs applications (notion d'interface). Inconvnient des SGBDOO : Gestion de la persistance et de la coexistence des objets en mmoire (pour leur manipulation applicative) et sur disque (pour leur persistance) complexe Gestion de la concurrence (transactions) plus difficile mettre en uvre Interdpendance forte des objets entre eux Gestion des pannes Complexit des systmes (problme de fiabilit) Problme de compatibilit avec les SGBDR classiques Les SGBDOO apportent donc des concepts fondamentaux pour l'volution des BD, mais leur ralit est encore en grande partie du domaine de la recherche ou d'applications "de niche". Ils apportent donc une innovation sur des aspects que les SGBDR ne savent pas faire, mais sans tre au
S. Crozat - UTC 2009
110
Le relationnel-objet
4. Les SGBDRO
Introduction
Les SGBDRO sont ns du double constat de la puissance nouvelle promise par les SGBDOO et de l'insuffisance de leur ralit pour rpondre aux exigences de l'industrie des BD classiques. Leur approche est plutt d'introduire dans les SGBDR les concepts apports par les SGBDOO plutt que de concevoir de nouveaux systmes. Objectifs additionnels des SGBDRO : Grer des donnes complexes (temps, go-rfrencement, multimdia, types utilisateurs, etc.) Rapprocher le modle logique du modle conceptuel Rduire l' impedance mismatch
B. Le modle relationnel-objet
Objectifs
Connaitre les caractristiques principales du modle relationnel-objet Comprendre les avantages du modle relationnel-objet
1. Les SGBDRO
Dfinition : Modle relationnel-objet
Modle relationnel tendu avec des principes objet pour en augmenter les potentialits. Synonymes : Modle objet-relationnel Les apports principaux du modle relationnel-objet sont : Les types utilisateurs et l'encapsulation (recours aux mthodes) La gestion de collections L'hritage et la rutilisation L'identit d'objet et les rfrences physiques
2. Le modle imbriqu
nested model La 1NF est relche pour permettre d'affecter des valeurs non atomiques un attribut, pour modliser des objets complexes. Gestion directe des attributs multivalus, sans passer par une nouvelle relation Gestion directe des attributs composs Un attribut ne sera plus seulement value par une valeur simple, mais pourra l'tre par une collection d'objets complexes
Exemple
111
Le relationnel-objet
Syntaxe
Type nom_type : < attribut1 typeattribut1, attribut2 typeattribut2, ... attributN typeattributN, =methode1 (paramtres) typeretourn1, =methode2 (paramtres) typeretourn2, =... =methodeN (paramtres) typeretournN >
Remarque
Les type des attributs ou des mthodes d'un type peuvent galement tre des types utilisateurs.
112
Le relationnel-objet
>
4. Les collections
Dfinition : Collection
Une collection est un type de donnes gnrique dfini afin de supporter les attributs multi-valus. Synonymes : Collection d'objets
Syntaxe
Type nom_type : collection de <type_objet>
Remarque
Les objets d'une collection peuvent tre d'un type utilisateur.
113
Le relationnel-objet
6. Tables d'objets
Une table peut tre dfinie en rfrenant un type de donnes plutt que par des instructions LDD classiques. On parle alors de table d'objets.
Syntaxe
nom_table de nom_type (#attributs_cls)
Remarque : OID
Une telle dfinition de table peut permettre d'identifier les objets par un OID
Remarque : Hritage
Cette modalit de dfinition de schma permet de profiter de l'hritage de type pour permettre l'hritage de schma de table.
114
Le relationnel-objet
Syntaxe
Type sous_type hrite de type : < attributs et mthodes spcifiques >
Caractristiques
L'OID est une rfrence unique pour toute la base de donnes qui permet de rfrencer un enregistrement dans une table d'objets. L'OID est une rfrence physique (adresse disque) construit partir du stockage physique de l'enregistrement dans la base de donnes.
Avantages
Permet de crer des associations entre des objets sans effectuer de jointure (gain de performance). Fournit une identit l'objet indpendamment de ses valeurs (cl artificielle). Fournit un index de performance maximale (un seul accs disque). Permet de garder en mmoire des identificateurs uniques dans le cadre d'une application objet, et ainsi grer la persistance d'objets que l'on ne peut pas garder en mmoire, avec de bonnes performances (alors que sinon il faudrait excuter des requtes SQL pour retrouver l'objet).
Inconvnient
Plus de sparation entre le niveau logique et physique. L'adresse physique peut changer si le schma de la table change (changement de la taille d'un champs par exemple) Manipulation des donnes plus complexes, il faut un langage applicatif au dessus de SQL pour obtenir, stocker et grer des OID dans des variables.
Remarque : Dbat
la communaut des BD est plutt contre les OID, qui rompent avec la sparation entre manipulation logique et stockage physique des donnes. La communaut objet est l'origine de l'intgration des OID dans SQL3, en tant qu'ils sont une rponse
115
Le relationnel-objet
Cette partie permet de traiter la traduction d'un modle conceptuel UML ou E-A en modle relationnel-objet. Le modle E-A tendu est bien plus adapt au relationnel-objet que le modle E-A classique.
1. Classe
Pour chaque classe (ou entit), crer un type d'objet avec les attributs de la classe (ou entit). Crer une table d'objets de ce type pour instancier la classe (ou entit), en ajoutant les contraintes d'intgrit.
2. Attributs
Attributs composites
Pour chaque type d'attribut compos, crer un type d'objet.
Attributs multi-valus
Pour chaque attribut multi-valu crer une collection du type de cet attribut.
116
Le relationnel-objet
Attributs drivs
Pour chaque attribut driv crer une mthode associe au type d'objet de la classe (l'entit).
3. Association 1:N
Les associations 1:N sont gres comme en relationnel. On peut nanmoins favoriser l'usage d'objets pour les cls trangres composes de plusieurs attributs, ainsi que pour les attributs migrants de l'association vers le relation ct N. Il est aussi possible de grer la cl trangre avec un OID la place d'une cl trangre classique.
4. Association N:M
Les associations N:M peuvent tre gres comme en relationnel. Il est aussi possible de grer ces relations, en utilisant une collection de rfrences (une collection de cls trangres) (NB : on favorise ainsi une des deux relations). Il est aussi possible de grer ces relations en utilisant un OID comme cl trangre. Il est aussi possible de grer ces relations en utilisant une collection de rfrence OID.
5. Hritage
L'hritage est gr comme en relationnel classique, avec la possibilit de profiter de l'hritage de type pour liminer la redondance dans la dfinition des schmas.
117
Le relationnel-objet
3. Mthodes et SELF
SELF
Lorsque l'on crit une mthode on a gnralement besoin d'utiliser les attributs propres (voire d'ailleurs les autres mthode), de l'objet particulier que l'on est en train de manipuler. On utilise pour cela la syntaxe SELF qui permet de faire rfrence l'objet en cours.
Syntaxe : SELF
self.nom_attribut self.nom_mthode(...)
118
Le relationnel-objet
4. Nested tables
Implmentation des collections sous forme de tables imbriques.
5. Tables d'objets
Implmentation d'une dfinition de table depuis un type.
Remarque : Mthodes
Si le type sur lequel s'appuie la cration de la table dfinit des mthodes, alors les mthodes seront associes la table.
Remarque : Contraintes
Il est possible, sur une table ainsi dfinie, de spcifier les mmes contraintes que pour une table cre
119
Le relationnel-objet
avec une clause CREATE TABLE (contraintes de table). Ces contraintes doivent tre spcifies au moment de la cration de la table, et non au moment de la cration du type. (bien que la dfinition d'objet permet de spcifier des contraintes du type NOT NULL, etc.)
6. Insertion d'objets
La manipulation de donnes est tendue pour assurer la gestion des objets et des collections.
L'instruction CAST (...) AS <type> permet de renvoyer un type donn partir d'une expression. L'instruction MULTISET (...) permet de renvoyer une collection partir d'une liste de valeurs.
120
Le relationnel-objet
qui est une collection (a_obj). type col : collection de <string> tro(#pk_id:string, a_obj:col) Soit la table tr dfinie par le schma relationnel ci-aprs. tr(a:string, b:string) a1 a1 a1 a2 a2 b1 b2 b3 b4 b5 Tableau 15 Extrait de tr
Si l'on souhaite insrer le contenu de tr dans tro de telle faon que les valeurs de a correspondent pk_id et celles de b obj_a, en insrant une ligne pour chaque valeur ax et que tous les bx correspondant soient stocks dans la mme collection, il faut excuter une requte INSERT ... SELECT qui fait appel aux instructions CAST et MULTISET. INSERT INTO tro (pk_id, a_obj) SELECT a, CAST( MULTISET( SELECT b FROM tr tr1 WHERE tr1.a= tr2.a) AS col) FROM tr tr2; a1 a2 (b1, b2, b3) (b4, b5) Tableau 16 Extrait de tro aprs excution de la requte INSERT
121
Le relationnel-objet
122
Le relationnel-objet
Syntaxe : REF
SELECT REF(alias) FROM nom_table alias
Exemple : OID
0000280209DB703686EF7044A49F8FA67530383B36853DE7106BC74B678 1275ABE5A553A5F01C000340000
123
Le relationnel-objet
FROM table1 t;
E. Exemples RO
1. Exemple : Gestion de cours
a) Modle conceptuel
b) Modle logique
Type Bureau : < poste:entier, centre:chane, btiment:chane, numro:entier, =coordonnes():chane > Type Personne : < nom:chane, prnom:chane > Type Intervenant hrite de Personne : < bureau:Bureau > tIntervenant de Intervenant (#nom, #prnom) Type RefIntervenant : <nom:chane, prnom:chane> Type ListeRefIntervenants: collection de <RefIntervenant> Type Cours(semestre:chane, num:entier, titre:chane, type:enum, contenu:chane,
124
Le relationnel-objet
c) Implmentation
CREATE TYPE Bureau AS OBJECT ( poste number(4), centre char(2), batiment char(1), numero number(3), MEMBER FUNCTION coordonnees RETURN varchar2 ); CREATE TYPE BODY Bureau IS MEMBER FUNCTION coordonnees RETURN varchar2 IS BEGIN RETURN centre||batiment||numero||' - poste '||poste; END; END; CREATE TYPE Personne AS OBJECT( pkNom varchar2(50), pkPrenom varchar2(50) ) NOT FINAL ; CREATE TYPE Intervenant UNDER Personne ( aBureau Bureau ); CREATE TABLE tIntervenant OF Intervenant ( PRIMARY KEY(pkNom,pkPrenom) ); CREATE TYPE RefIntervenant AS OBJECT ( nom varchar2(50), prenom varchar2(50) ); CREATE TYPE ListeRefIntervenants AS TABLE OF RefIntervenant; CREATE TYPE Cours AS OBJECT( pkSemestre char(5), pkNum number(2), aTitre varchar2(50), aType char(2), aContenu varchar2(300), lIntervenant ListeRefIntervenants );
125
Le relationnel-objet
CREATE TABLE tCours OF Cours ( PRIMARY KEY(pkSemestre, pkNum), CHECK (aType='C' or aType='TD' or aType='TP') ) NESTED TABLE lIntervenant STORE AS ntCoursIntervenants;
d) Initialisation
INSERT INTO tIntervenant VALUES ('CROZAT', 'Stphane', Bureau('4287','R','A',108)); INSERT INTO tIntervenant VALUES ('JOUGLET', 'Antoine', Bureau('4423','R','C',100)); INSERT INTO tCours VALUES ('P2003',1,'Conception','C','E-A et UML', ListeRefIntervenants(RefIntervenant('CROZAT','Stphane'))); INSERT INTO tCours VALUES ('P2003',5,'Access','TP','Initiation', ListeRefIntervenants(RefIntervenant('CROZAT','Stphane'), RefIntervenant('JOUGLET','Antoine')));
e) Questions
SET LINESIZE 60 SET PAGESIZE 10 COLUMN Quand FORMAT A5 COLUMN Quoi FORMAT A10 COLUMN Qui FORMAT A20 COLUMN Ou FORMAT A19 SELECT t.pkNom||' '||t.pkPrenom AS Qui, t.aBureau.coordonnees() AS Ou FROM tIntervenant t; QUI OU ------------------------------------CROZAT Stphane R A108 - poste 4287 JOUGLET Antoine R C100 - poste 4423 SELECT c.pkSemestre AS Quand,c.aTitre AS Quoi,ci.Nom AS Qui FROM tCours c, TABLE(c.lIntervenant) ci; QUAND QUOI QUI -----------------------------P2003 Conception CROZAT P2003 Access CROZAT P2003 Access JOUGLET SELECT c.pkSemestre AS Quand,c.aTitre AS Quoi,i.pkNom AS Qui,i.aBureau.coordonnees() AS Ou FROM tCours c, TABLE(lIntervenant) ci, tIntervenant i WHERE ci.nom=i.pkNom AND ci.prenom=i.pkPrenom; QUAND QUOI QUI OU -------------------------------------------------
126
Le relationnel-objet
P2003 Conception CROZAT R A108 - poste 4287 P2003 Access CROZAT R A108 - poste 4287 P2003 Access JOUGLET R C100 - poste 4423
b) Modle logique
Type Intervenant : < nom:chane, prnom:chane > tIntervenant de Intervenant (#nom) Type Cours(num:entier, titre:chane, fkIntervenant REF tIntervenant) tCours de Cours (#num)
c) Implmentation
CREATE TYPE Intervenant AS OBJECT ( pkNom varchar2(50), aPrenom varchar2(50) ); CREATE TABLE tIntervenant OF Intervenant (PRIMARY KEY (pkNom)); CREATE TYPE Cours AS OBJECT ( pkNum number(2), aTitre varchar2(50), fkIntervenant REF Intervenant ); CREATE TABLE tCours OF Cours ( SCOPE FOR (fkIntervenant) IS tIntervenant, PRIMARY KEY(pkNum) );
127
Le relationnel-objet
128
Le relationnel-objet
F. En rsum : Le relationnel-objet
Types
Pr-dfinis Domaines classiques Chane, Entier, Date, Boolen, etc. Domaines avancs CLOB, BLOB, etc. Dfinis par l'utilisateur Relation Comme dans le modle relationnel classique Objets Types utilisateurs Collections Tables imbriques
Modle RO
Modle imbriqu Table d'objets CREATE TYPE CREATE TABLE OF Collection NESTED TABLE Type utilisateur OID REF SCOPE FOR Hritage de type NOT FINAL Mthode MEMBER FUNCTION CREATE TYPE BODY
129
VII -
LA GESTION DES
Problmatique des pannes et de la concurrence Transactions Fiabilit et transactions Concurrence et transactions En rsum : Les transactions Bibliographie commente sur les transactions
TRANSACTIONS
VII
165 166 169 174 181 182
Les transactions sont une rponse gnrale aux problmes de fiabilit et d'accs concurrents dans les BD, et en particulier dans les BD en mode client-serveur. Elles sont le fondement de toute implmentation robuste d'une BD. Des systmes comme Oracle ne fonctionnent nativement qu'en mode transactionnel.
131
B. Transactions
Objectifs
Comprendre les principes et l'intrt des transactions Connatre les syntaxes SQL standard, Oracle et Access pour utiliser des transactions Matriser les modalits d'utilisation des transactions
1. Notion de transaction
Dfinition : Transaction
Une transaction est une unit logique de travail, c'est dire une squence d'instructions, dont l'excution assure le passage de la BD d'un tat cohrent un autre tat cohrent.
Remarque
Tant qu'une transaction n'a pas t termine correctement, elle doit tre assimile une tentative ou une mise jour virtuelle, elle reste incertaine. Une fois termine correctement la transaction ne peut plus tre annule par aucun moyen.
132
cours de l'excution de la transaction respectent cette cohrence) L'isolation Les transactions sont isoles les unes des autres, c'est dire que leur excution est indpendante des autres transactions en cours. Elles accdent donc la BD comme si elles taient seules s'excuter, avec comme corollaire que les rsultats intermdiaires d'une transaction ne sont jamais accessibles aux autres transactions. La durabilit Les transactions assurent que les modifications qu'elles induisent perdurent, mme en cas de dfaillance du systme.
Remarque
Les initiales de Atomicit, Cohrence, Isolation et Durabilit forme le mot mnmotechnique ACID.
4. Transactions en SQL
Introduction
Le langage SQL fournit trois instructions pour grer les transactions.
Remarque : Programme
Un programme est gnralement une squence de plusieurs transactions.
133
BEGIN UPDATE compte SET total=total-1000 WHERE nom="dupont"; SELECT total INTO vTotal FROM compte WHERE nom="dupont"; IF vTotal<0 THEN ROLLBACK; ELSE COMMIT; END IF; END;
134
C. Fiabilit et transactions
Objectifs
Apprhender la gestion des pannes dans les SGBD. Comprendre la rponse apporte par la gestion des transactions.
1. Les pannes
Une BD est parfois soumise des dfaillances qui entranent une perturbation, voire un arrt, de son fonctionnement. On peut distinguer deux types de dfaillances : Les dfaillances systme ou dfaillances douces (soft crash), par exemple une coupure de courant ou une panne rseau. Ces dfaillances affectent toutes les transactions en cours de traitement, mais pas la BD au sens de son espace de stockage physique. Les dfaillances des supports ou dfaillances dures (hard crash), typiquement le disque dur sur lequel est stocke la BD. Ces dfaillances affectent galement les transactions en cours (par rupture des accs aux enregistrements de la BD), mais galement les donnes elles-mmes.
2. Point de contrle
Dfinition : Point de contrle
Un point de contrle est une criture dans le journal positionne automatiquement par le systme qui
S. Crozat - UTC 2009
135
tablit la liste de toutes les transactions en cours (au moment o le point de contrle est pos) et force la sauvegarde des donnes alors en mmoire centrale dans la mmoire secondaire. Le point de contrle est positionn intervalles de temps ou de nombre d'entres dans le journal prdfinis. Le dernier point de contrle est le point de dpart d'une reprise aprs panne, dans la mesure o c'est le dernier instant o toutes les donnes ont t sauvegardes en mmoire non volatile. Synonymes : Syncpoint
Transactions de type T1 Elles ont dbut et se sont termines avant tc. Elles n'interviennent pas dans le processus de reprise. Transactions de type T2 Elles ont dbut avant tc et se sont termines entre tc et tf. Elles devront tre rejoues (il n'est pas sr que les donnes qu'elles manipulaient aient t correctement inscrites en mmoire centrale, puisque aprs tc, or le COMMIT impose la durabilit). Transactions de type T3
S. Crozat - UTC 2009
136
Elles ont dbut avant tc, mais n'tait pas termines tf. Elles devront tre annules (pas de COMMIT). Transactions de type T4 Elles ont dbut aprs tc et se sont termines avant tf. Elles devront tre rejoues. Transactions de type T5 Elles ont dbut aprs tc et ne se sont pas termines. Elles devront tre annules.
Remarque
Les transactions sont des units d'intgrit.
2. FAIRE une recherche en avant dans le journal, partir du point de contrle 2a. SI une transaction T est commence ALORS ajouter T UNDO 2b. SI une transaction T est termine avec succs alors dplacer T de UNDO REDO 3. QUAND la fin du journal est atteinte 3a. Annuler les transactions de la liste UNDO (reprise en arrire) 3b. Rejouer les transactions de la liste REDO (reprise en avant) 4. TERMINER la reprise et redevenir disponible pour de nouvelles instructions
Exemple
137
Transactions de type T1 Non prises en compte par l'algorithme. Transactions de type T2 Ajoutes la liste UNDO (tape 1b) puis dplace vers REDO (tape 2b) puis rejoue (tape 3b). Transactions de type T3 Ajoutes la liste UNDO (tape 1b) puis annule (tape 3a). Transactions de type T4 Ajoutes la liste UNDO (tape 2a) puis dplace vers REDO (tape 2b) puis rejoue (tape 3b). Transactions de type T5 Ajoutes la liste UNDO (tape 2a) puis annule (tape 3a).
138
* * *
On voit que la gestion transactionnelle est un appui important la reprise sur panne, en ce qu'elle assure des tats cohrents qui peuvent tre restaurs.
D. Concurrence et transactions
Objectifs
Apprhender la gestion de la concurrence dans les SGBD. Comprendre la rponse apporte par la gestion des transactions.
Tableau 17 Problme de la perte de mise jour du tuple T par la transaction A Les transaction A et B accdent au mme tuple T ayant la mme valeur respectivement t1 et t2. Ils modifient chacun la valeur de T. Les modifications effectues par A seront perdues puisqu'elle avait lu T avant sa modification par B.
Exemple
139
Tableau 18 Doucle crdit d'un compte bancaire C Dans cet exemple le compte bancaire vaut 1010 la fin des deux transactions la place de 1110.
Tableau 19 Problme de la lecture impropre du tuple T par la transaction A La transaction A accde au tuple T qui a t modifi par la transaction B. B annule sa modification et A a donc accd une valeur qui n'aurait jamais d exister (virtuelle) de T. Pire A pourrait faire une mise jour de T aprs l'annulation par B, cette mise jour inclurait la valeur avant annulation par B (et donc reviendrait annuler l'annulation de B).
Exemple
Temps t1 t2 t3 t4 t5 t6 LIRECOMPTE C=1100 ... UPDATEC C=C+10=1110 COMMIT C=1110 A:Ajouter10 B:Ajouter100(erreur) LIRECOMPTE C=1000 UPDATECOMPTE C=C+100=1100 ... ROLLBACK C=1000
Tableau 20 Annulation de crdit sur le compte bancaire C Dans cet exemple le compte bancaire vaut 1110 la fin des deux transactions la place de 1010.
140
c) Lecture incohrente
Temps t1 t2 t3 t4 LIRET ... ... LIRET UPDATET COMMIT TransactionA TransactionB
Tableau 21 Problme de la lecture non reproductible du tuple T par la transaction A Si au cours d'une mme transaction A accde deux fois la valeur d'un tuple alors que ce dernier est, entre les deux, modifi par une autre transaction B, alors la lecture de A est inconsistente. Ceci peut entraner des incohrences par exemple si un calcul est en train d'tre fait sur des valeurs par ailleurs en train d'tre mises jour par d'autres transactions.
Remarque
Le problme se pose bien que la transaction B ait t valide, il ne s'agit donc pas du problme d'accs des donnes non valides.
Exemple
Temps t1 t2 t3 t4 t5 t6 t7 t8 A:CalculdeS=C1+C2 LIRECOMPTE1 C1=100 ... ... ... ... ... LIRECOMPTE2 C2=110 CALCULS S=C1+C2=210 LIRECOMPTE1 C1=100 LIRECOMPTE2 C2=100 UPDATECOMPTE1 C1=10010=90 UPDATECOMPTE2 C2=100+10=110 COMMIT B:Transfertde10deC1 C2
Tableau 22 Transfert du compte C1 au compte C2 pendant une opration de calcul C1+C2 Dans cet exemple la somme calcule vaut 210 la fin du calcul alors qu'elle devrait valoir 200.
2. Le verrouillage.
Introduction
Une solution gnrale la gestion de la concurrence est une technique trs simple appele verrouillage.
Dfinition : Verrou
Poser un verrou sur un objet (typiquement un tuple) par une transaction signifie rendre cet objet inaccessible aux autres transactions. Synonymes : Lock
141
3. Le dverrouillage.
Dfinition : Dverrouillage
Lorsqu'une transaction se termine (COMMIT ou ROLLBACK) elle libre tous les verrous qu'elle a pos. Synonymes : Unlock
142
3. Sinon A attend le droit de poser son verrou (et donc que les verrous qui l'en empchent soient levs)
Soit la transaction A voulant crire des donnes d'un tuple T : 1. A demande poser un verrou X sur T 2. Si A obtient de poser le verrou alors A crit T 3. Sinon A attend le droit de poser son verrou (et donc que les verrous qui l'en empchent soient levs) Soit la transaction A se terminant (COMMIT ou ROLLBACK) : 1. A libre tous les verrous qu'elle avait pos 2. Certaines transactions en attente obtiennent ventuellement le droit de poser des verrous
Remarque
Le problme de perte de mise jour est rgl, mais soulve ici un autre problme, celui de l'interblocage.
143
c) Lecture incohrente
Temps t1 t2 t3 ... LIRET VerrouS ... LIRET VerrousS ...lib rationdesverrous... UPDATET Attente... ... ...reprisedelatransaction... TransactionA TransactionB
Remarque
La lecture reste cohrente car aucune mise jour ne peut intervenir pendant le processus de lecture d'une mme transaction.
6. Inter-blocage
Dfinition : Inter-blocage
L'inter-blocage est le phnomne qui apparait quand deux transactions (ou plus, mais gnralement deux) se bloquent mutuellement par des verrous poss sur les donnes. Ces verrous empchent chacune des transactions de se terminer et donc de librer les verrous qui bloquent l'autre transaction. Un processus d'attente sans fin s'enclenche alors. Les situations d'inter-blocage sont dtectes par les SGBD et gres, en annulant l'une, l'autre ou les deux transactions, par un ROLLBACK systme. Les mthodes utilises sont la dtection de cycle dans un graphe d'attente et la dtection de dlai d'attente trop long. Synonymes : Deadlock, Blocage, Verrou mortel
144
145
SQL2 SQL3, applications Oracle [Delmal01] Une bonne description des principes des transactions, avec les exemples caractristiques, l'implmentation SQL et une tude de cas sous Oracle 8 (chapitre 5). Tutoriel de bases de donnes relationnelles de l'INT Evry [w_int-evry.fr] (http://www-inf.intevry.fr/COURS/BD/BD_REL/SUPPORT/poly.html#RTFToC30 Un aperu gnral de l'ensemble de la problmatique des transactions, de la concurrence et de la fiabilit. Programmation SQL [Mata03] Un exemple d'excution de transactions (pages 20-23)
146
VIII -
L'OPTIMISATION DU SCHMA
Introduction l'optimisation des BD En rsum : L'optimisation Bibliographie commente sur l'optimisation
INTERNE
VIII
184 189 189
La conception des SGBDR exige qu'une attention particulire soit porte la modlisation conceptuelle, afin de parvenir dfinir des modles logiques relationnels cohrents et manipulables. De tels modles relationnels, grce au langage standard SQL, prsentent la particularit d'tre implmentables sur toute plate-forme technologique indpendamment de considrations physiques. Nanmoins l'on sait que dans la ralit, il est toujours ncessaire de prendre en considration les caractristiques propres de chaque SGBDR, en particulier afin d'optimiser l'implmentation. Les optimisations concernent en particulier la question des performances, question centrale dans les applications de bases de donnes, qui, puisqu'elles manipulent des volumes de donnes importants, risquent de conduire des temps de traitement de ces donnes trop longs par rapport aux besoins d'usage. Chaque SGBDR propose gnralement des mcaniques propres pour optimiser les implmentations, et il est alors ncessaire d'acqurir les comptences particulires propres ces systmes pour en matriser les arcanes. Il existe nanmoins des principes gnraux, que l'on retrouvera dans tous les systmes, comme par exemple les index, les groupements ou les vues matrialises. Nous nous proposerons d'aborder rapidement ces solutions pour en examiner les principes dans le cadre de ce cours. Nous aborderons galement quelques techniques de conception, qui consistent revenir sur la structure propose par l'tape de modlisation logique, pour tablir des modles de donnes plus aptes rpondre correctement des questions de performance. La dnormalisation ou le partitionnement en sont des exemples.
147
particulier, dpend de considrations pratiques lies aux performances des applications. Les possibilits d'optimisation des schmas internes des BD dpendent essentiellement des fonctions offertes par chaque SGBD. On peut nanmoins extraire certains principes d'optimisation des schmas internes suffisamment gnraux pour tre applicables dans la plupart des cas.
c) Proposition de solutions
Une fois certains problmes de performance identifis, des solutions d'optimisation sont proposes, puis values pour vrifier leur impact et leur rponse au problme pos. Parmi les solutions d'optimisation existantes, on pourra citer : L'indexation La dnormalisation Le regroupement (clustering) de tables Le partitionnement vertical et horizontal Les vues concrtes
148
3. Indexation
Dfinition : Index
Un index est une structure de donnes qui permet d'acclrer les recherches dans une table en associant une cl d'index (la liste des attributs indexs) l'emplacement physique de l'enregistrement sur le disque. Les accs effectues sur un index peuvent donc se faire sur une liste trie au lieu de se faire par parcours squentiel des enregistrements.
4. Dnormalisation
La normalisation est le processus qui permet d'optimiser un modle logique afin de le rendre non redondant. Ce processus conduit la fragmentation des donnes dans plusieurs tables.
Dfinition : Dnormalisation
Processus consistant regrouper plusieurs tables lies par des rfrences, en une seule table, en ralisant
149
statiquement les oprations de jointure adquates. L'objectif de la dnormalisation est d'amliorer les performances de la BD en recherche sur les tables considres, en implmentant les jointures plutt qu'en les calculant.
5. Groupement de tables
Dfinition : Groupement de table
Un groupement ou cluster est une structure physique utilise pour stocker des tables sur lesquelles doivent tre effectues de nombreuses requtes comprenant des oprations de jointure. Dans un groupement les enregistrements de plusieurs tables ayant une mme valeur de champs servant une jointure (cl du groupement) sont stockes dans un mme bloc physique de la mmoire permanente. Cette technique optimise donc les oprations de jointure, en permettant de remonter les tuples joints par un seul accs disque.
Dfinition : Cl du groupement
Ensemble d'attributs prcisant la jointure que le groupement doit optimiser.
Remarque
Le clutering diminue les performances des requtes portant sur chaque table prise de faon isole, puisque les enregistrements de chaque table sont stocks de faon clate.
150
6. Partitionnement de table
Dfinition : Partitionnement de table
Le partitionnement d'une table consiste dcouper cette table afin qu'elle soit moins volumineuse, permettant ainsi d'optimiser certains traitements sur cette table. On distingue : Le partitionnement vertical, qui permet de dcouper une table en plusieurs tables, chacune ne possdant qu'une partie des attributs de la table initiale. Le partitionnement horizontal, qui permet de dcouper une table en plusieurs tables, chacune ne possdant qu'une partie des enregistrements de la table initiale.
Remarque
Ce dcoupage quivaut considrer l'entit diviser comme un ensemble d'entits relies par des associations 1:1.
7. Vues concrtes
Un moyen de traiter le problme des requtes dont les temps de calcul sont trs longs et les frquences de mise jour faible est l'utilisation de vues concrtes.
151
B. En rsum : L'optimisation
Optimisation
Modification du schma interne d'une BD pour en amliorer les performances. Techniques au niveau physique Indexation Regroupement physique Vue concrte Techniques de modlisation Dnormalisation Partitionnement Horizontal Vertical
152
SQL2 SQL3, applications Oracle [Delmal01] Cet ouvrage aborde tous les thmes du cours de faon claire et illustre, en dehors de la phase de modlisation.
153
Questions de synthse
En quoi une base de donnes est-elle plus intressante qu'un systme de fichier classique ?
Pourquoi est-ce que l'on distingue trois niveaux de modlisation lors de la conception d'une base de donnes ?
155
156
Enoncer quelques actions mener pour raliser une spcification gnrale de l'existant et des besoins ?
Quelles sont les diffrences et points communs entre la diagramme de classe UML et le modle E-A tendu ?
157
158
159
Le passage UML vers relationnel est-il systmatique ou soumis interprtation ? Pourrait-il tre ralis par un algorithme ?
160
Pourquoi dispose-t-on de trois mthodes pour traduire l'hritage dans un modle relationnel ? Ces trois mthodes sont-elles quivalentes ?
Quels sont les oprateurs algbriques de base ? Quels sont les autres oprateurs ? Qu'est ce qui les diffrencie ?
161
162
163
Pourquoi peut-on dire que la gestion des droits est dcentralise en SQL ?
Pourquoi est-il primordial de reprer les dpendances fonctionnelles sur un schma relationnel ?
164
165
Quels sont les atouts du modle relationnel-objet par rapport au modle relationnel ?
Quels sont les extensions les plus importantes apports par le modle relationnel-objet au modle relationnel ?
En quoi le modle relationnel-objet peut-il tre considr comme plus proche que le modle relationnel du modle conceptuel ?
En quoi le mapping E-A vers relationnel-objet est-il plus fidle que le mapping E-A vers relationnel ?
166
Qu'apporte les OID par rapport aux cls trangres classiquement manipules dans le modle relationnel ?
Quelles solutions de modlisation apporte les instructions de cration de type sous Oracle ?
167
L'utilisation d'OID pour les rfrences est-elle prfrable l'utilisation de cls trangres classique, en particulier dans le cas o la cl trangre est compose ?
168
L'aglorithme de reprise UNDO-REDO terminera-t-il toutes les transactions qui taient commences au moment de la panne ?
169
Laquelle des proprits ACID des transactions est-elle particulirement utile pour grer les accs concurrents ?
Pourquoi peut-on dire que les transactions sont les unit logique de travail, les units d'intgrit, les units de reprise et les units de concurrence ?
Citer des paramtres propres une BD que l'on doit surveiller dans le cadre de la performance ?
170
Peut-on anticiper sur des problmes de performance futurs lors de la conception d'une BD ?
171
172
173
Tableau 27 Relation R1
A 0 1 10 20 D X Y F
Tableau 28 Relation R2
E 5 9 6 7 8 A G S D F G
Tableau 29 Relation R3
174
Glossaire
Constructeur d'objet En programmation oriente objet, un constructeur d'objet est une mthode particulire d'une classe qui permet d'instancier un objet de cette classe. L'appel cette mthode de classe a donc pour consquence la cration d'un nouvel objet de cette classe. Exception Une exception est un vnement gnr par un systme informatique pour signifier une erreur d'excution. La gestion des exceptions est un aspect de la programmation informatique, qui consiste intercepter ces vnements particuliers et les traiter pour, soit les corriger automatiquement, soit en donner une information approprie un utilisateur humain. Impedance mismatch Le terme d'impedance mismatch renvoie au dcalage qui peut exister entre le niveau d'abstraction de deux langages qui ont travailler sur des structures de donnes communes, par exemple un langage applicatif objet et un langage de donnes relationnel. L'impedance mismatch a des consquences ngatives en terme de complexification de l'implmentation et en terme de performance, puisqu'il faut constamment passer d'une structure de donnes l'autre. RAID La technologie RAID permet de repartir de l'information stocker sur plusieurs "petits" disques, au lieu de la concentrer sur un seul "gros" disque. Cette technologie permet donc d'amliorer les performances (les accs disques pouvant tre parallliss) et d'amliorer la sret (en repartissant les risques de crash et en jouant sur une redondance des donnes). Il existe plusieurs types d'architecture RAID, privilgiant ou combinant la paralllisation et la redondance. Serveur Un serveur est un programme informatique qui a pour fonction de recevoir des requtes d'un autre programme, appel client, de traiter ces requtes et de renvoyer en retour une rponse. Notons qu'un programme peut-tre serveur vis vis d'un programme et client vis vis d'un autre. On ne prend pas ici le terme serveur dans son acception matrielle, qui signifie alors un ordinateur qui a pour fonction d'hberger des programmes serveurs.
175
177
Bibliographie
[C el ko00] C ELK JO O E
[C h en 76] C EN P.P . The entity-Relationsheep Model - Towards a Unified View of Data. ACM Transactions H on Database systems. 1976-mars. 1, 1. [C odd70] C D EF O D
, A relational model for large shared data banks, Communications de l'ACM, juin 1970.
[Gar dar i n 99] G D R G R ES AR A IN EO G [M at a03] M ATA-TO LED R O A O AM N . Ediscience, 2003. [M u ll er 98] M LLER P.A U . [Pr at t 01] PR TT PH A ILIP J. 2001.
. Programmation SQL.
[Roqu es 04] R Q ES PAS AL O U C , VA LLE FR C AN K . UML 2 en action : De l'analyse des besoins la conception J2EE. ISBN 2-212-11462-1 (3me dition). Paris : Eyrolles, 2004. 385 p. architecte logiciel. [S ou t ou 02] SO TO C R TIAN U U H IS
[Tar di eu 83] TA D R IEU H . , R C FELD A O H . , C LLETI R O . outils. Paris : Les Editions d'Organisation, 1983.
[Tar di eu 85] TA D R IEU H . , R C FELD A O H . , C LLETI R O . , PA ET G N . ,V H G A EE . Mthode MERISE Tome 2 : Dmarche et pratiques. Paris : Les Editions d'Organisation, 1985.
179
[w _devel oppez .com / h ces br on l avau ] C ESB O -LA AU H R R N V EN Y , Les transactions, http://www.developpez.com/hcesbronlavau/Transactions.htm, 2002. [w _di a] Dia, http://live.gnome.org/Dia [w _in t -evr y.fr ] D EFU E B U O D R N , Tutoriel de bases de donnes relationnelles de l'INT Evry, http://www-inf.intevry.fr/COURS/BD/, consult en 2009. [w _j ou r n al du n et .com (1)] M R N JR M O LO E , UML en 5 tapes, http://developpeur.journaldunet.com/dossiers/alg_uml.shtml, 2004. [w _j ou r n al du n et .com (2)] B R ER X IER O D IE AV , Cinq petits conseils pour un schma UML efficace, http://developpeur.journaldunet.com/tutoriel/cpt/031013cpt_uml5conseils.shtml, 2004. [w _mh u bi ch e.devel oppez .com ] H B H M EN E U IC E AX C , Comprendre les jointures dans Access, http://mhubiche.developpez.com/Access/tutoJointures/, consult en 2009. [w _obj ect eer i n g] Objecteering software. www.objecteering.com. [2002-septembre]. [w _su pel ec.fr / ~yb ] B U D YO O R A LAIN E , Bases de Donnes Relationnelles et Systmes de Gestion de Bases de Donnes Relationnels, le Langage SQL, http://wwwsi.supelec.fr/~yb/poly_bd/, consult en 2009. [w _s ybas e] Sybase PowerDesigner, http://www.sybase.com/products/enterprisemodeling, consult en 2002. [w _u m l .fr ee.fr ] UML en Franais, http://uml.free.fr, consult en 2002. [w _u n i v- l yon 2.fr / ~j dar m ont ] D R O T JR M A M N E janvier].
180
Index
1:N p.117 1NF p.104, 111, 112 2NF p.104 3NF p.105, 106 Abstraite.................................... p.32 Acces p.134 ACID p.132 Administration................... p.13, 17 Agrgat.............................. p.88, 89 Algbre p.46, 67, 67, 68, 69, 69, 70, 70, 71, 71, 72, 73 ALL p.92 ALTER TABLE.................. p.80, 81 Analyse....... p.17, 18, 19, 19, 19 AND p.85 Annulation.............................. p.132 ANY p.93 Armstrong..................... p.100, 100 Association p.26, 30, 31, 39, 50, 50, 55, 56, 57, 64, 117, 117 Association 1:1.......................... p.55 Atomicit................................. p.104 Attente..................................... p.142 Attribut p.24, 30, 40, 47, 48, 48, 49, 52, 56, 56 Attribut composite.................. p.116 Attribut driv......................... p.116 Attribut multi-valu................ p.116 BCNF p.106 BD p.9, 11, 11 BETWEEN................................. p.85 BLOB p.117 Boolean................................... p.117 Calcul p.88 Cardinalit......................... p.27, 39 Cartsien................................... p.70 Catalogue.................................. p.17 CHECK..................................... p.78 Classe p.14, 24, 28, 32, 54, 56, 112 Cl p.41, 48, 49, 52, 102 Cl artificielle........................... p.49
Cl candidate............................ p.48 Cl trangre...... p.113, 117, 122 Cl primaire...................... p.48, 49 Cl signifiante........................... p.49 Cluster.................................... p.150 Codd p.46 Cohrence p.131, 132, 132, 139 Collection p.113, 116, 117, 119, 122 COMMIT...................... p.133, 138 Comparaison............................. p.85 Composition....................... p.31, 57 Conception.... p.9, 13, 17, 18, 98 Conceptuel p.9, 14, 15, 18, 19, 19, 21, 23, 23, 29, 37, 37, 54, 63, 66 Concurrence....... p.131, 139, 143 Condition................................... p.85 Constructeur........................... p.120 Contrainte............................... p.119 Contraintes........................ p.34, 63 Contrle............................. p.13, 94 CREATE INDEX..................... p.149 CREATE TABLE............. p.77, 119 CREATE TYPE............. p.117, 119 CREATE VIEW......................... p.79 Cration.................................... p.76 Dclaratif.................................. p.76 Dcomposition................ p.99, 103 Dfaillance............................. p.131 DELETE............................ p.82, 83 Dnormalisation........... p.149, 150 Dpendance.................... p.97, 103 Dverrouillage........................ p.142 DF p.99, 100, 100, 101, 101, 101, 102, 103 Diagramme................ p.23, 28, 29 Dictionnaire.............................. p.17 Diffrence.................................. p.68 DISTINCT................................. p.84 Division..................................... p.72 Domaine............. p.46, 46, 47, 76 Donne...................................... p.13 Donnes..................................... p.14
Droits p.94 DROP p.80 Durabilit............................... p.134 Dynamique................................ p.34 E-A p.14, 19, 21, 26, 27, 37, 37, 37, 39, 39, 40, 41, 64, 64, 65, 65, 66 Ecriture................................... p.141 Enregistrement.................. p.47, 48 Entit p.37, 40, 41, 64, 116 valuation.............................. p.148 EXCEPT.................................... p.87 Excution................................ p.132 EXISTS...................................... p.92 Externe............................... p.15, 71 Fermeture............................... p.101 Fonction.......................... p.88, 117 FOREIGN KEY......................... p.78 FROM p.84 FUNCTION............................ p.117 GRANT...................................... p.94 GROUP BY............................... p.89 Groupement............................ p.150 HAVING.................................... p.89 Hritage p.27, 32, 40, 57, 59, 59, 60, 61, 63, 65, 114, 117 IN p.85, 91 Index p.149 INNER....................................... p.86 INSERT.............................. p.82, 82 INSERT INTO............... p.120, 123 Instance............................. p.14, 15 Inter-blocage................ p.143, 144 Interne....................................... p.15 INTERSECT.............................. p.87 Intersection............................... p.68 IOD p.123 IS NULL.................................... p.85 JOIN p.86 Jointure...................... p.70, 71, 71 Journal............... p.134, 135, 138 Langage...... p.13, 16, 82, 84, 90 LCD p.16, 94
181
LDD p.16, 76, 114 Lecture.................................... p.141 LEFT p.86 Lien p.50, 50 LIKE p.85 LMD p.16, 82, 84, 90 Logique. p.9, 13, 14, 21, 45, 45, 46, 54, 63, 66, 85, 97, 103 Manipulation............................. p.67 MERISE..................... p.19, 21, 37 Mthode p.25, 112, 116, 116, 119, 121 Modle p.9, 13, 14, 21, 21, 37, 45, 46, 52, 53, 97, 103, 111 N:M p.117 Naturelle.................................... p.71 NESTED TABLE........... p.119, 122 NF p.103 Nomalisation................... p.97, 103 Normalisation p.99, 99, 100, 100, 101, 101, 101, 102, 103, 103, 104, 104, 105, 109, 149 NOT p.85 NOT NULL................................ p.78 Objet p.110, 114, 115, 120 Occurence................................. p.14 OID p.115, 127 OMG p.23 Oprateur.................................. p.85 Opration........................... p.25, 46 Optimisation p.13, 97, 103, 147, 148 OR p.85 Oracle p.133 ORDER BY................................ p.88
OUTER...................................... p.86 Panne p.134, 135, 135, 136, 137 Partitionnement...................... p.151 Passage.............. p.54, 63, 65, 66 Performance........................... p.148 Perte p.139 Physique............................ p.13, 14 PL/SQL......................... p.123, 133 Point de contrle p.135, 136, 137 PRIMARY KEY.......................... p.78 Problme................................... p.98 Produit....................... p.46, 47, 70 Projection........................ p.69, 151 Proprit.................... p.24, 30, 40 Question............................. p.84, 90 Redondance p.12, 97, 98, 103, 149 Rfrence...................... p.113, 115 REFERENCES.......................... p.78 Relation p.47, 47, 48, 48, 49, 50, 50, 52, 52 Relationnel p.11, 14, 21, 45, 45, 46, 46, 47, 52, 53, 54, 54, 55, 56, 56, 57, 57, 59, 59, 60, 61, 63, 63, 63, 64, 64, 65, 65, 66, 67, 67, 73, 97, 103, 109, 109 Relationnel-objet p.45, 46, 111, 124, 127 Requte...................... p.82, 84, 90 Restriction....................... p.69, 151 REVOKE................................... p.95 RIGHT....................................... p.86 ROLLBACK........ p.133, 135, 144 Schma p.9, 13, 15, 52, 53, 114, 147
Scurit..................................... p.13 SELECT........... p.84, 86, 86, 121 SGBD p.9, 11, 11, 12, 14 SGBDOO................................ p.110 SGBDRO............ p.111, 124, 127 SGBR p.13 Sous-requtes p.90, 91, 92, 92, 93 Spcifications............................ p.19 SQL p.16, 76, 82, 84, 90, 94, 117, 133 Table p.76 TABLE.................................... p.122 Table imbrique p.111, 113, 119, 122 Transaction. p.13, 132, 133, 134 Tri p.88 Tuple p.47 Type p.14, 76, 112, 113, 114, 114, 116, 116, 117, 119 UML p.14, 19, 23, 23, 24, 24, 25, 27, 28, 29, 30, 31, 32, 34, 54, 54, 55, 56, 56, 57, 57, 59, 59, 60, 61, 63, 63, 63, 66 UNDO-REDO......................... p.137 Union p.68 UNION...................................... p.87 UNIQUE.................................... p.78 Unit p.132, 132, 135, 136 UPDATE............................ p.82, 83 Utilisateur................................. p.94 Validation............................... p.132 VBA p.134 Verrou p.141, 142, 142, 143, 144 Vue p.151 WHERE...................... p.84, 86, 86
182