Вы находитесь на странице: 1из 381

Module Modlisation UML pour les bases de donnes

Michel Dubois
I.U.T. de Vannes
Michel.Dubois@univ-ubs.fr

Michel Dubois

UML pour les bases de donnes- p. 1

PLAN
1. Rappels sur la dmarche UML 2. Pralable la modlisation, le dictionnaire des donnes 3. Rappels sur la modlisation Entit-Association 4. Introduction aux notations UML 5. Correspondances Merise / UML 6. Modle Logique des Donnes relationnelles 7. Autres formalismes pour AGL bases de donnes 8. Rappels sur la modlisation directe 9. Modle Physique Oracle SQL2 10. Les options procdurales dOracle 11. Modle Logique des Donnes objet-relationnelles 12. Modle Physique Oracle SQL3
UML pour les bases de donnes- p. 2

Bibliographie
UML et bases de donnes
UML 2 pour les bases de donnes, C. Soutou, Eyrolles, 2007.

Pour rcuprer le standard UML www.omg.org www.celigent.com/uml Pour comprendre le paradigme objet Object-Oriented Software Construction - 2nd edition, B. Meyer, Prentice Hall, 1997. Pour sinitier au langage UML Modlisation Objet avec UML ,P-A. Muller, deuxime dition, Eyrolles, 1999. The Unified Modeling Language User Guide , Grady Booch, Jim Rumbaugh, Ivar Jacobson, Addison-Wesley, 1999.
UML pour les bases de donnes- p. 3

Bibliographie
Pour la modlisation conceptuelle Analysis Patterns: Reusable Objects Models , M. FOWLER, Addison-Wesley. Advanced Object-Oriented Analysis & Design Using UML , James J. Odell, SIGS Reference Library, Cambridge University Press. Pour le dveloppement de bases de donnes Ingnierie des Systmes dInformation MERISE , D. Nanci et al. SYBEX. The Data Modeling Handbook : A Best-Practice Approach to Building Quality Data Models , Michael Reingruber, William W. Gregory, Paperback. Object-Oriented Modeling and Design for Database Applications , M. Blaha et W. Premerlani, Prentice Hall.
UML pour les bases de donnes- p. 4

Universit de Bretagne Sud


Informatique

Gnie Logiciel avec UML

Chapitre 1 Rappels sur la dmarche UML


UML pour les bases de donnes- p. 5

Objectifs du chapitre

Connatre lorigine dUML et son objectif Connatre le contenu dUML

UML pour les bases de donnes- p. 6

1. Origine
3 ans defforts de nombreux mthodologistes du DOO dont 3 rputs au sein de Rational Software Corporation G. Booch (OOD) fin 94: trs expressive en phases de conception et dimplmentation J. Rumbaugh (OMT) fin 94 : trs utile pour l analyse et la mise en place des SI I. Jacobson (OOSE) fin 95 : excellent support des cas d utilisation pour l expression des besoins, lanalyse et la conception haut niveau Le support de grands acteurs du monde de linformatique fin 96 : IBM, MICROSOFT, HP, ORACLE, DEC, UNISYS, etc.

Standard de modlisation des applications informatiques construites laide dobjets, depuis Septembre 97 par lOMG (V 1.1.)

UML pour les bases de donnes- p. 7

UML 2.1 (2006)

2002 2001 2000 99 98 97 96 95 94 93 92 91

UML 2.0 (2003) UML 1.4 (05/2001)

RFP

UML 1.3 (10/99) UML 1.2 (O7/98) UML 1.1 (OMG 09/97) UML 1.0 (OMG 01/97) UML 0.91 (OOPSLA 10/96)

Revision Task Force de lOMG

Consortium

Les 1000
Booch-93

UM 0.8 (OOPSLA 10/95)

OMT-2 OOSE (92) Jacobson


UML pour les bases de donnes- p. 8

OOD(91) Booch

OMT-1 (92) Rumbaugh

UML 1.2 (la forme uniquement sur rclamations (issues))


Corriger des erreurs typographiques et grammaticales supprimer certaines incohrences clarifier certains termes vagues ou ambigs amliorer la lisibilit et la structure du document

UML 1.3 (le (petit) fond)


relation entre cas d utilisations amlioration des diagrammes d activits etc.

UML 1.4 (la forme) UML 2.0 (le grand fond)


formalisation des profile meilleure gestion du dveloppement orient composant amlioration du noyau du mta-modle UML gestion de la complexit pour les machines tats extension et amlioration d OCL ...
UML pour les bases de donnes- p. 9

OMG UML Contributors


Aonix Colorado State University Computer Associates Concept Five Data Access EDS Enea Data Hewlett-Packard IBM I-Logix InLine Software Intellicorp Kabira Technologies Klasse Objecten Lockheed Martin Microsoft ObjecTime Oracle Ptech OAO Technology Solutions Rational Software Reich SAP Softeam Sterling Software Sun Taskon Telelogic Unisys
UML pour les bases de donnes- p. 10

2. Le document UML 1.3 (1034 pages!)


Chap1 : UML summary Chap2 : UML Semantics Chap3 : UML Notation Guide Chap4 : UML Extensions Chap5 : UML Corba Facility Interface Chap6 : UML XMI DTD Specification Chap7 : Object Constraint Language Glossary Appendix Index
UML pour les bases de donnes- p. 11

langage = syntaxe + semantique syntaxe = lments du langage (les mots) sont assembls pour former des expressions (des phrases) smantique = la signification des expressions syntaxiques UML Notation Guide dfinit la syntaxe graphique dUML UML Semantics dfinit la smantique des contructions syntaxiques

UML pour les bases de donnes- p. 12

Example of semantic rule: Class [1] English: If a Class is concrete, all the Operations of the Class should have a realizing Method in the full descriptor. OCL: not self.isAbstract implies self.allOperations-> forAll (op | self.allMethods-> exists (m | m.specification-> includes(op)))

UML pour les bases de donnes- p. 13

Example of syntactic rules: Class Basic Notation: A class is drawn as a solid-outline rectangle with three compartments separated by horizontal lines. Presentation Option: Either or both of the attribute and operation compartments may be suppressed. Example of syntactic guideline: Class Style Guideline: Begin class names with an uppercase letter.

UML pour les bases de donnes- p. 14

OMG Metamodel Architecture


<<metamodel>> me MOF Metata mo del <<instanceOf>> <<metamodel>> UML Metamodel <<instanceOf>> User Model <<instanceOf>> :Etudiant <<instanceOf>> :Iut Couche M0 : objets Couche M1 : classes Couche M3 : Mta-mta-classes

Couche M2 : mta-classes

<<instanceOf>> :Pile

UML pour les bases de donnes- p. 15

3. Les briques de base dUML


Le vocabulaire dUML inclut 3 types de briques :
Les lments : abstractions, lments primordiaux dun modle Les relations :ce qui lie les lments entre eux Les diagrammes : ce qui regroupe les collections intressantes dlments

UML pour les bases de donnes- p. 16

Les lments peuvent tre de 4 types :


Les lments structurelles :
Classe : collection dobjets qui partagent les mmes attributs, oprations, relations et smantique Interface : collection doprations qui spcifie un service dune classe ou dun composant : elle dcrit le comportement externe dun lment Collaboration : socit dlments qui travaillent ensemble pour fournir un comportement coopratif qui soit plus que la somme des parties Cas dutilisation : description dun ensemble de squences dactions queffectue un systme dans le but de fournir un rsultat intressant pour un acteur donn Classe active, composant, nud : semblables aux classes mais suffisamment diffrents pour tre traits sparment et ncessaires pour modliser certains aspects dun systme OO

Les lments

Les lments comportementales : interaction, machine dtat Les lments de regroupement : paquetages Les lments dannotation : note UML pour les bases de donnes- p. 17

Les relations
Les relations peuvent tre de 4 types
Dpendance : relation smantique entre 2 lments dans laquelle un changement dans llment indpendant peut affecter la smantique de llment dpendant Association : relation structurelle qui dcrit un ensemble de liens, un lien tant une connexion entre objets (agrgation : association entre un tout et ses parties) Gnralisation : relation de gnralisation/spcialisation dans laquelle les objets de llment spcialis sont substituables aux objets de llment gnrique Ralisation

UML pour les bases de donnes- p. 18

Cest la reprsentation graphique dun ensemble dlments connects par un ensemble de relations Un diagramme est une projection du systme selon un point de vue spcifique. En UML, 9 diagrammes diffrents sont grs
Diagramme de classes Diagramme dobjets Diagramme de squence Diagramme de collaboration Diagramme de cas dutilisation Diagramme dtats-transitions Diagramme dactivits Diagramme de composants Diagramme de dploiement

Les diagrammes

UML pour les bases de donnes- p. 19

3. Contenu

Une approche

Une dmarche

Un Langage

Des guides (savoirfaire)

AOO unifie

En cours de dfinition (Objectory Process). Processus dOMT, dOOSE

9 types de diagrammes avec possibilit dextensions par strotypage

Ouvrages de Fowler, Jacobson, Booch, etc.

UML pour les bases de donnes- p. 20

The Unified Modeling Language (UML) is a language for Specifying, visualizing, constructing and documenting the artifacts of software systems, as well as for business modeling and other non-software systems. The UML represents a collection of the best engineering practices that have proven successful in the modeling of large and complex systems.
OMG Unified Modeling Language Specification 1.3. March 2000

UML pour les bases de donnes- p. 21

UML : un langage de spcification


Spcifier = construire des modles prcis, non ambigus et complets UML aborde la spcification de toutes les dcisions importantes d analyse, de conception et d implmentation qui doivent tre faites lors du dveloppement et du dploiement d un systme logiciel

UML pour les bases de donnes- p. 22

UML : un langage pour visualiser


Communication facilite : si un dveloppeur crit directement sous forme de code les modles qu il a en tte, cette information sera perdue ou seulement partiellement rcuprable partir de l implmentation quand il s en ira Langage graphique : certains lments concernant un logiciel ne peuvent tre comprhensibles que si l on construit des modles qui transcendent le LP A chaque symbole sa smantique : si chacun adopte sa propre notation, il risque d y avoir une divergence forte entre les diverses interprtations des modles

UML pour les bases de donnes- p. 23

UML : un langage de documentation


En plus du code excutable, une bonne organisation logicielle doit produire les documents prsentant
Lexpression des besoins Larchitecture La conception Le code source La planification Les tests Les prototypes Les versions

UML pour les bases de donnes- p. 24

UML : un langage d implmentation


Interprtation directe des modles
dans diffrents LPOO (Java, C++, VB) sous forme de tables de BDR sous forme de stockage persistant d une BDO

Possibilit de gnration automatique de code Possibilit de faire du reverse Engineering


UML pour les bases de donnes- p. 25

Diagramme de classes Diagramme dobjets Diagramme de squence Diagramme de collaboration

Notation UML

Diagramme de cas dutilisation Diagramme dtats-transitions Diagramme dactivits Diagramme de composants Diagramme de dploiement
UML pour les bases de donnes- p. 26

Diagramme de classes : structure statique du systme en termes de classe et de relation entre ces classes au niveau conceptuel, danalyse ou de conception Diagramme dobjets
Faciliter la comprhension des structures de donnes complexes dcrites dans le DC Identifier les classes et les relations

Les Diagrammes

Diagramme de squence : montrer les interactions entre objets dun point de vue temporel sous la forme dun protocole dchange de message.
UML pour les bases de donnes- p. 27

Les Diagrammes
Diagramme de collaboration : montrer les interactions entre les objets en insistant plus particulirement sur la structure spatiale des objets cooprant Diagramme de cas dutilisation : dcrire le comportement du systme concevoir du point de vue de lutilisateur (spcification oriente utilisateur). Pilote le dveloppement. Diagramme dtats-transitions : modliser le comportement dune classe qui a un comportement ractif trs marqu suite aux diffrentes sollicitations externes
UML pour les bases de donnes- p. 28

Diagramme dactivits : reprsenter le comportement interne dune mthode (la ralisation dune opration) ou dun cas dutilisation ou d un processus mtier Diagramme de composants : dcrire les composants de lapplication et leurs relations. Ce diagramme montre les choix de ralisation. Diagrammes de dploiement : disposition physique des matriels entrant dans la composition du systme et la rpartition des programmes sur ces matriels.

Les Diagrammes

UML pour les bases de donnes- p. 29

4. Aperu des notations

Le diagramme de cas dutilisation


Configurer Dposer include Identification include Superviseur

Guichetier Retirer

UML pour les bases de donnes- p. 30

Forme textuelle structure conceptuelle


Cas dutilisation : Acteurs : Type : Description : Retirer de largent Guichetier (initiateur) Primaire et conceptuel Un client arrive au guichet et demande raliser un retrait sur lun de ses comptes. Le guichetier saisit le N du compte et le montant du retrait. Si le compte est suffisamment approvisionn le logiciel enregistre le retrait et en informe le guichetier.

1. Le cas dbute lorsque le guichetier slectionne lopration de retrait. 3. Le guichetier saisit le N du compte du client 5. Le guichetier confirme 7. Le guichetier saisit un montant 9. Le guichetier confirme

Guichetier

2. Le logiciel demande le N du compte concern 4. Le logiciel vrifie ce N, affiche son propritaire et demande confirmation 6. Le logiciel demande le montant du retrait. 8. Le logiciel vrifie que le compte est suffisamment approvisionn et demande confirmation 10. Le logiciel retire le montant du compte
UML pour les bases de donnes- p. 31

Logiciel

11. Le logiciel notifie la fin

Le diagramme de classes
Personne nom prnom adresse membre 3..*

Enseignant statut grade salaire * nb_heure

Etudiant nEtud ge

1 Appartient >

Promotion intitul 1..3 Associ 1

Intervient dans > {subset} Affect dans>

1..* 1

nom anneCra
0..2 Conseil

Dpartement

nom
context Etudiant inv : self.ge >= 16 Etudiant.allInstances->forAll{p1,p2| p1<>p2 implies p1.nEtud <> p2.nEtud}

UML pour les bases de donnes- p. 32

Le diagramme dobjets

:Promotion Intitul = 1A

:Dpartement nom = info anneCra = 87

: Etudiant nom = Le_Lombric prnom = max adresse = la botte en terre nEtud = 111

: Etudiant

toto : Etudiant

UML pour les bases de donnes- p. 33

Les diagrammes dinteraction


1: Monter

Digramme de Collaboration

:Ascenseur
2: Allumer

:Cabine
3: Fermer

:Lumire Diagramme de squences


:Ascenseur Monter Allumer :Cabine

:Porte

:Lumire

:Porte

Fermer

UML pour les bases de donnes- p. 34

Sequence Diagram

UML pour les bases de donnes- p. 35

Collaboration Diagram

window parameter

UML pour les bases de donnes- p. 36

Le diagramme Etats - Transitions


top state Initial pseudostate
top

State Trigger

Ready
Transition

Final state

stop /ctr := 0 Done stop

Action

UML pour les bases de donnes- p. 37

Le diagramme Etats - Transitions

Pousse B / bip Eteinte do: rien Relache B Allume do: Alimente Pile mise Pile vide Attente do: Afficher heure Top quartz / Incrmenter seconde HS

UML pour les bases de donnes- p. 38

Le diagramme dactivits
Trouver caf [trouv] Boire Coca Mettre le caf dans le filtre Mettre filtre dans machine Ajouter eau Chercher tasse [pas de caf] Tenir bon!

Allumer machine

Attendre fin Verser Boire

UML pour les bases de donnes- p. 39

Le diagrammes de composants
Main.cpp Main.obj

Window.obj Com.cpp Window.cpp

Com.obj

Prog.exe

Graphic.dll

UML pour les bases de donnes- p. 40

Le diagrammes de dploiement

Processus hbergs
TX Serveur X 3 * RNIS PC Pilote 1 Porte Matre 10 TCP/IP 1 Serveur SGBD 1 Imprimante Dispositif 1 1

Chaque processus excute un programme principal du mme nom dcrit dans le Diagramme de Composant

UML pour les bases de donnes- p. 41

5. Une dmarche

pilote par les cas d utilisation incrmentale itrative centre sur larchitecture

Michel Dubois : Support de cours DUIA n3

UML pour les bases de donnes- p. 42

Les cas dutilisation pilotent le dveloppement

Analyste

Concepteur Comprend Conoit

Exprime Utilisateur

Cas dutilisation Vrifie

Ralise Programmeur

Testeur
UML pour les bases de donnes- p. 43

La construction est incrmentale


Besoins du client (sujet de TP) Dveloppement Logiciel

No more BIG BANG!


Besoins du client (sujet de TP)

Dv. 1

Dv. 2

Dv. 3

V1 Cas 1 simplifi

V2 Cas 1 complet Cas 1+ Cas 2+ Cas 3

V3

Attention : tous les incrments ne donnent pas ncessairement lieu un dlivrable client
UML pour les bases de donnes- p. 44

Une construction itrative Lors de chaque tape, on utilise un ou plusieurs des 9 diagrammes UML selon le principe du dveloppement orient modle...

Dbut de projet Elaboration / AD + AR

Planification de litration 50% du total du projet! Analyse du cas dutilisation Conception du cas Codage

Itration
Chaque itration donne lieu la gnration dune version ou d un prototype.

Tests unitaires Tests du cas Evaluation


UML pour les bases de donnes- p. 45

Le dveloppement est itratif : Macro-processus / Micro processus


Release 1 Release 2 ...

Plan & Elaborate

Build

Deploy

Incrment 1

Incrment 2

...

Refine Plan

Sync. Artifact

Analyze

Design

Construct

Test & Evaluation

Time-Boxing (2 semaines 2 mois)


UML pour les bases de donnes- p. 46

Le dveloppement est centr sur larchitecture


Les premiers cycles de dveloppement doivent avoir pour objectif la recherche dune architecture logicielle maximisant la fiabilit, la maintenabilit, la portabilit, la rutilisabilit Dans les premires itrations on porte ainsi leffort sur les parties du logiciel prsentant le plus haut niveau de risque du point de vue architectural

UML pour les bases de donnes- p. 47

MODELISATION, CONCEPTION SGBD


Michel Dubois
I.U.T. de Vannes
Michel.Dubois@univ-ubs.fr

Michel Dubois

UML pour les bases de donnes- p. 48

DEMARCHE

monde rel

PERCEPTION

GENERALE

MODELISATION CONCEPTUELLE DICTIONNAIRE DES DONNEES


ACTEUR no-acteur JOUER FILM no-film

MODELISATION LOGIQUE

ACTEUR (no-acteur, ...) FILM (no-film, ...) JOUER (no-acteur, no-film)

UTILISATION D'UN SGBDR Create Table ACTEUR... Create Index...

Michel Dubois

BASE DE DONNEES

UML pour les bases de donnes- p. 49

DEMARCHE

monde rel

PERCEPTION

DIRECTE

MODELISATION CONCEPTUELLE

DICTIONNAIRE DES DONNEES GRAPHES DES DEPENDANCES FONCTIONNELLE OU NORMALISATION A PARTIR DE LA RELATION UNIVERSELLE

Numro d'immatriculation

Marque

Modle

Couleur

Nationalit du constructeur

Puissance

MODELISATION LOGIQUE

ACTEUR (no-acteur, ...) FILM (no-film, ...) JOUER (no-acteur, no-film)

UTILISATION D'UN SGBDR Create Table ACTEUR... Create Index...

Michel Dubois

BASE DE DONNEES

UML pour les bases de donnes- p. 50

TERMINOLOGIE table relation enregistrement occurrence ligne de table n-uplet tuple champ attribut colonne de table donne intention d une relation schma d une relation extension d une relation contenu d une relation
Michel Dubois UML pour les bases de donnes- p. 51

Chapitre 2 Rappels Dictionnaire des donnes


Michel Dubois
I.U.T. de Vannes
Michel.Dubois@univ-ubs.fr

Michel Dubois

UML pour les bases de donnes- p. 52

DICTIONNAIRE DES DONNES


C'est la liste des donnes d'intrt pour le domaine tudi. A chaque fois que se prsente une nouvelle information, le concepteur l'ajoute la liste aprs avoir vrifi deux choses : Qu'elle ne soit pas dj rpertorie dans la liste, sous le mme libell ou avec un synonyme. Il s'assure ainsi que la liste ne comporte pas de redondances. Qu'il n'existe pas une autre information dans la liste ayant la mme appellation pour un sens diffrent (homonyme). Dans ce cas, il faudra pour viter toute ambigut, donner des noms diffrents chacune des informations ayant des sens diffrents.
Michel Dubois UML pour les bases de donnes- p. 53

DICTIONNAIRE DES DONNES


Le concepteur de la base de donnes doit dresser une liste d'information devant tre manipules par la base de donnes. Ces informations sont extraites de documents utiliss au sein du systme prexistant ou de ses entretiens avec les utilisateurs futurs de la base de donnes. Le dictionnaire des donnes est un document destin recenser toutes les informations lmentaires devant constituer une base de donnes. On ne retiendra que les informations effectivement mmorises ou utilises par la base de donnes et ayant un intrt pour les utilisateurs de la base de donnes.
Michel Dubois UML pour les bases de donnes- p. 54

RUBRIQUES DU DICTIONNAIRE DE DONNES Chaque donne introduite dans le dictionnaire des donnes se voit prcise par une ligne dans un tableau ayant la forme suivante :
CODE ... LIBELLE ... NATURE ... STABILITE ... DOMAINE ... COMMENTAIRE ...

Michel Dubois

UML pour les bases de donnes- p. 55

CODE ...

LIBELLE ...

NATURE ...

STABILITE ...

DOMAINE ...

COMMENTAIRE ...

Ces deux rubriques contiennent l'appellation conventionnelle de la donne. Cette scission provient du fait que la plupart des SGBDR imposent des contraintes sur les noms de donnes. Par exemple ORACLE : les noms de donnes sont composs de 30 caractres maximum et ne peuvent tre forms que d'un seul mot. La colonne CODE contiendra la reprsentation code de la donne, peu intelligible mais manipulable par le SGBDR, puis une colonne LIBELLE reprsentant l'appellation intelligible de la donne. MS Access admet des noms de donnes sans trop de restrictions. Il suffit d'utiliser des crochets. La distinction n'est peut tre pas ncessaire dans ce cas.
Michel Dubois UML pour les bases de donnes- p. 56

CODE ...

LIBELLE ...

NATURE ...

STABILITE ...

DOMAINE ...

COMMENTAIRE ...

Prcise si la donne est : Non calcule : La donne ne peut tre dduite par le systme partir d'autres donnes. Elle doit obligatoirement tre saisie ou importe depuis une autre base de donnes. Calcule : La donne est obtenue par l'application d'une opration sur une ou plusieurs autres donnes. Une telle donne pourra tre gnre "au vol" par le SGBD et pourra donc ne pas tre stocke dans la base de donnes. Incrmente : Il s'agit d'une donne, destine rfrencer un objet et dont la valeur est incrmente (ajout de la valeur 1) chaque fois qu'on cre une nouvelle occurrence dans la base de donnes.
Michel Dubois UML pour les bases de donnes- p. 57

CODE ...

LIBELLE ...

NATURE ...

STABILITE ...

DOMAINE ...

COMMENTAIRE ...

les donnes calcules : Une telle donne pourra tre gnre "au vol" par le SGBD et pourra donc ne pas tre stocke dans la base de donnes. Toutefois, il faudra s'assurer que le dictionnaire des donnes comprenne toutes les donnes entrant dans son calcul. Dans le cas contraire, il faudra les ajouter. Exemple de dcomposition d une donne calcule : Montant d Montant On ne retiendra que les noeuds terminaux
total arrhes Montant par produit Quantit Prix commande produit UML pour les bases de donnes- p. 58 *

Michel Dubois

CODE ...

LIBELLE ...

NATURE ...

STABILITE ...

DOMAINE ...

COMMENTAIRE ...

Cette colonne indique les possibilits de transformations subies par la donne au cours du temps, une fois qu'elle a t saisie ou calcule. Une donne peut tre considre comme : Evolutive : Elle est destine voir sa valeur modifie au cours du temps. Stable : Une fois que l'on a mis une valeur dans cette donne, elle ne changera pas au cours du temps. Paramtre : Il s'agit d'une donne relativement stable, mais qui peut toutefois tre modifie de manire faire voluer le systme, l'adapter un changement de rglementation par exemple.
Michel Dubois UML pour les bases de donnes- p. 59

CODE ...

LIBELLE ...

NATURE ...

STABILITE ...

DOMAINE ...

COMMENTAIRE ...

Les paramtres : Ils ne peuvent pas se rattacher un objet-type ou un individu-type mais contiennent une valeur destine tre exploite par le systme de base de donnes au cours de son fonctionnement (par exemple en tant que composante de calcul pour des donnes calcules). Une donne de type paramtre n'existe qu'en un seul exemplaire pour tout le systme. Si plusieurs occurrences d'un objet-type quelconque ou d'un individu-type quelconque peuvent avoir des valeurs diffrentes pour cette donne, alors ce n'est pas un paramtre mais une donne volutive.
Michel Dubois UML pour les bases de donnes- p. 60

CODE ...

LIBELLE ...

NATURE ...

STABILITE ...

DOMAINE ...

COMMENTAIRE ...

Le domaine dcrit l'ensemble des valeurs pouvant tre stockes dans une donne. Le domaine de valeur sera renseign tout d'abord par un type de donnes (ORACLE ou ACCESS ou neutre) Une valeur par dfaut, qui correspondra la valeur affecte la donne avant toute forme de saisie. Des restrictions ou conditions de validit : Une donne couleur des yeux pourra tre de type Texte[20 caractres] avec une restriction supplmentaire prenant la forme d'une liste de valeurs autorises, un salaire >0. Un caractre de saisie obligatoire ou non. Ceci rend facultative/obligatoire la saisie d'une valeur.
Michel Dubois UML pour les bases de donnes- p. 61

CODE ...

LIBELLE ...

NATURE ...

STABILITE ...

DOMAINE ...

COMMENTAIRE ...

Cette colonne contient : un descriptif de chaque donne (si ncessaire) ou mme un exemple. la formule de calcul des donnes ayant la nature calcule (obligatoire). L'intrt de faire apparatre la formule de calcul en clair permet de vrifier que les informations ncessaires ce calcul sont bien prsentes dans le dictionnaire des donnes (dans le cas contraire, il faut les rajouter).

Michel Dubois

UML pour les bases de donnes- p. 62

EXEMPLE DE DD
CODE LIBELLE NATURE CATEGORIE DOMAINE COMMENTAIRE

NOM_FOUR NUM_FOUR RAIS_FOUR TEL_FOUR ADR_FOUR REFARTICLE REF_FOUR

Nom du fournisseur Numro d'un fournisseur

Non calcule / saisie Stable Incrmente Stable Non calcule / saisie Non calcule / saisie Non calcule / saisie Incrmente Non calcule / saisie Non calcule / saisie Non calcule / saisie Non calcule / saisie Incrmente Incrmente Non calcule / saisie Non calcule / saisie Non calcule / saisie Non calcule / saisie Non calcule /saisie
Calcule

texte[40] numrique texte[30] numrique texte[100] numrique texte[10] numrique texte[20] texte[100] numerique numerique date texte[25] numrique numrique numrique
numrique

Raison sociale du fournisseur Tlphone du fournisseur Adresse du fournisseur Rfrence interne d'un article Rfrence d'un article chez le fournisseur PRIX_FOUR Prix d'un article chez le fournisseur NOM_CLIENT Nom d'un client ADR_CLIENT Adresse d'un client REF_CLIENT Rfrence d'un client N_FACTURE Numro d'une facture DATE_FACT Date d'une facture DESARTICLE Dsignation d'un article PRIX_ART Prix de vente d'un article QUANTITE Quantit d'un article REMISE Remise sur un article
MONTANT_HT Montant HT d'un article

Stable Evolutive Evolutive Stable Stable Evolutive Stable Evolutive Stable Stable Stable Stable Evolutive Stable Stable
Stable

11 Rajoute du fait de la possibilit d'homonymie prcdente afin de distinguer deux fournisseurs ayant le mme nom. forme juridique+ inscription au registre du commerce

Unique, peut servir de cl Prsume stable si fournisseur cohrent

Hypothse restrictive : Possibilit d'homonymie. Unique, peut servir de cl Unique (lgislation), peut servir de cl Aurait pu galement tre considre comme calcule Prix interne d'un article Quantit apparaissant sur une ligne de facture Remise sur un article en % Montant HT d'une ligne de facture = PRIX_ART*QUANTITE*(1-REMISE). Stable car pas de mise jour en cas d'volution de PRIX_ART. somme de MONTANT_HT TOTAL_HT*0,186 TOTAL_HT+TVA 1 = liquide ; 2= CCP; 3=Virement Postal; 4=Chque bancaire; 5=C.B.; 6=Virement bancaire
PRIX_ART-PRIX_FOUR, calcule seulement sur demande

TOTAL_HT TVA TOTAL_TTC REGLEMENT MARGE

Total HT d'une facture Tva sur facture Total TTC d'une facture Mode de rglement Marge sur un article

Calcule Calcule Calcule Non calcule /saisie Calcule

Stable Stable Stable Stable Stable

numrique numrique numrique numrique numrique

Michel Dubois

UML pour les bases de donnes- p. 63

DD DE LA BASE LOCATION DE VOITURE


CODE NUM_IMMA MARQUE MODELE COULEUR LIBELLE Numro d'immatriculation Marque Modle Couleur du vhicule NATURE Non calcule / saisie Non calcule / saisie Non calcule / saisie Non calcule / saisie CATEGORIE Stable Stable Stable Evolutive DOMAINE COMMENTAIRE texte[20] Identifiant de voiture obligatoire Texte[30] obligatoire Texte[30] obligatoire Texte[10] dans ( Bleu , Rouge , Vert , Noire ) texte[20] obligatoire Numrique Obligatoire

NAT_CONS PUISSANCE

Nationalit du constructeur Puissance du moteur

Non calcule Stable / saisie Non calcule Stable / saisie

Michel Dubois

UML pour les bases de donnes- p. 64

LA MISE EN VIDENCE DES RGLES DE GESTION


Les spcifications littraires de l'activit informatiser sous forme d'une base de donnes peuvent tre confuses. Il est intressant d'extraire les points essentiels concernant les proprits des objets ou des individus mmoriser ou leurs relations. Une rgle de gestion est associ au niveau conceptuel. Elle dcrit le quoi . Elle ne dcrit ni le ou, quand, qui (rgle d organisation ), ni comment (rgle techniques).

Michel Dubois

UML pour les bases de donnes- p. 65

EXEMPLES DE RGLES DE GESTION


Une rfrence de client est numrique et squentielle. Le premier client a le n1, le second a le n2, etc. explicite la nature incrmente de la donne Numro client et son type numrique Un client peut acheter plus d'un seul produit ou plusieurs exemplaires d'un mme produit lors d'un mme achat. spcifie que les donnes relatives aux produits ne dpendent pas fonctionnellement de la donne Rfrence du client. Le taux de TVA appliqu aux produits est uniforme fix 19,6%. indique que la donne Taux de TVA des produits sera un paramtre (du fait de la prsence du mot uniforme)
Michel Dubois UML pour les bases de donnes- p. 66

LISTING DES RGLES DE GESTION


En faire un listing pralable comporte de nombreux avantages. Il permet entre autres de : clarifier votre comprhension du problme par une rcriture dans un style prcis de l'nonc, mettre noir sur blanc les hypothses que vous dressez sur des ventuels non-dits afin que vous vous y teniez par la suite, acclrer votre recherche d'information pour prciser un type de donnes ou une dpendance fonctionnelle.

Michel Dubois

UML pour les bases de donnes- p. 67

LE TRAITEMENT DES DONNES CALCULES OU PARAMTRES


Les donnes calcules ou paramtres ne doivent pas figurer dans les tables, ni dans les matrices ou graphes des dpendances fonctionnelles. Elles sont cantonnes au dictionnaire des donnes. On se rfrera ce document lorsque l'on dsirera les utiliser. En effet, les donnes calcules peuvent tre dduites d'autres donnes, aussi, elles ne sont pas stockes dans la base de donnes. Toutefois, lorsque le besoin d'obtenir leur valeur se fera sentir durant l'exploitation ultrieure de la base de donnes, on demandera au SGBDR de les calculer notamment laide de vues. Cependant si le calcul est systmatique, ou souvent demand, une optimisation peut tre de stocker les rsultats. Les donnes paramtres seront directement inscrites dans les formules de calcul des donnes calcules, donc ne sont pas stockes dans les tables de la base de donnes. Une autre solution est de crer une table paramtre ayant quun seul tuple.
Michel Dubois UML pour les bases de donnes- p. 68

Chapitre 3

Schma Entit Association


Michel Dubois
I.U.T. de Vannes
Michel.Dubois@univ-ubs.fr

Michel Dubois

UML pour les bases de donnes- p. 69

Entit
Une entit est un objet du rel peru qui a une existence propre. Elle peut donc tre dcrite indpendamment des autres objets. Par extension, une entit dsigne l ensemble des objets du rel peru qui jouent le mme rle dans le systme d information et qui sont donc dcrits par les mmes caractristiques.
UML pour les bases de donnes- p. 70

Entit
Une entit peut tre
un individu, comme par exemple : une personne, un client, un animal, un objet concret : une matire premire, un produit, un objet abstrait : un service, un compte bancaire, un lieu : une rgion, un magasin, un objet documentaire : un contrat, une facture, ...
UML pour les bases de donnes- p. 71

Association
lien smantique entre au moins deux entits le lien n est pas orient : les commandes comportent des produits veut galement dire que les produits peuvent tre commands . souvent nomme par un verbe ou un substantif une association est un objet du rel peru qui n a d existence qu au travers des entits qu elle met en correspondance par extension, une association dsigne l ensemble des associations de mme nature dans le systme d information et qui sont donc dcrites de la mme faon.
UML pour les bases de donnes- p. 72

Proprit
donne lmentaire permettant de dcrire une entit ou une association cette donne peut se mesurer par une valeur synonyme : attribut Rgles de base :
une mme proprit ne peut pas servir dcrire deux objets (entit / association) diffrents une entit possde au moins une proprit, son identifiant une association peut ne pas porter de proprit
UML pour les bases de donnes- p. 73

Reprsentation graphique
nom dentit Association nom dassociation Entit

Commande n commande date commande 1,n

Concerner quantit cde

Produit n produit dsignation 0,n prix unitaire


identifiant d entit

proprit dentit

proprit dassociation cardinalit

UML pour les bases de donnes- p. 74

Description exhaustive
Concerner 2 Commande 1356 21/02/2002 Concerner 2 Commande 1357 22/02/2002 Concerner 3 Concerner 5 Produit BZ35 Brioche 2.6 Produit AZ34 Beurre 250g 1.4 Produit AZ33 Pain de Mie 1.52

UML pour les bases de donnes- p. 75

Ralisation particulire d une entit, proprit ou association synonyme : instance Exemple d occurrence de l entit commande : n1356 du 21/02/2002 Exemple d occurrence de l association concerner : 2 produits BZ35 pour la commande n1356 Une occurrence de proprit est une valeur : l occurrence de la proprit prix unitaire pour le produit BZ35 est 2.6
UML pour les bases de donnes- p. 76

Occurrence

Cardinalit
La cardinalit est une notion obligatoire du modle qui permet de rsoudre la question de l anomalie de la commande 1246 qui est une commande vide C est donc l expression d une contrainte perue sur le monde et que l on indique dans le modle. Par exemple : une commande concerne toujours au moins un produit.
UML pour les bases de donnes- p. 77

Calcul des cardinalits


Pour une occurrence de l entit que j examine, combien y a-t-il d occurrences possibles de l association laquelle elle participe, au plus et au moins ? Pour calculer la cardinalit, se positionner (virtuellement) sur l entit concerne et regarder en face le nombre de liens qu une occurrence peut avoir avec l association. Faire la mme chose pour l ensemble des entits qui participent la relation
Commande n commande date commande Produit n produit dsignation prix unitaire

Concerne quantit cde

UML pour les bases de donnes- p. 78

LES ASSOCIATIONS DE TYPE 1-1


Exemple : FOURNISSEUR
x x x x x

(fournir)

PRODUIT
x x x x x

Tout fournisseur ne fournit qu'un seul produit. Tout produit n'est fourni que par un seul fournisseur.
Michel Dubois SGBD - p. 79

LES ASSOCIATIONS DE TYPE 1-N


Exemple : FOURNISSEURS (fournir) PRODUITS
x x x x x x x

Un fournisseur fournit un ou plusieurs produits. Tout produit n'est fourni que par un seul fournisseur.

Michel Dubois

SGBD - p. 80

LES ASSOCIATIONS DE TYPE M-N


Exemple : FOURNISSEURS
x x x x x

(fournir)

PRODUITS
x x x x x

Un fournisseur fournit un ou plusieurs produits. Un produit est fourni par un ou plusieurs fournisseurs.
Michel Dubois SGBD - p. 81

CARDINALITES MINIMALES
Valeur Dfinition Exemple

Une occurrence de l'entit un produit peut ne pas tre peut exister sans command participer l'association

Une occurrence de l'entit toute commande concerne participe ncessairement au moins un produit au moins une fois une occurrence d'association

Michel Dubois

UML pour les bases de donnes- p. 82

CARDINALITES MAXIMALES
Valeur Dfinition Exemple

Une occurrence de l'entit un employ travaille au participe au plus une fois plus dans un service

Une occurrence de l'entit une commande peut peut participer plusieurs concerner plusieurs fois produits

Michel Dubois

UML pour les bases de donnes- p. 83

Configurations possibles
0,1 : une occurrence de l entit participe au plus une fois l association 1,1 : une occurrence de l entit participe exactement une fois l association 0,N : une occurrence de l entit peut ne pas participer l association 1,N : une occurrence de l entit participe au moins une fois l association
UML pour les bases de donnes- p. 84

EXEMPLE

Michel Dubois

UML pour les bases de donnes- p. 85

RELATIONS OBLIGATOIRES
Notation E-A Explication

1,1 <-> 1,1

TOUTE occurrence de A a un homologue UNIQUE parmi les occurrences de B et rciproquement

1,N <-> 1,N

TOUTE occurrence de A a AU MOINS un homologue parmi les occurrences de B et rciproquement

Michel Dubois

UML pour les bases de donnes- p. 86

RELATIONS OPTIONNELLES
Notation E-A Explication

0,N <-> 0,1

UNE occurrence de A peut avoir 0,1,N vis--vis. UNE occurrence de B est limite 0 ou 1 homologue

1,N <-> 0,N

TOUTE occurrence de A a AU MOINS un homologue. Mais UNE occurrence de B peut ne pas en avoir, en avoir 1 ou plusieurs

Michel Dubois

UML pour les bases de donnes- p. 87

LES ASSOCIATIONS DE TYPE 1-1


Tout fournisseur ne fournit qu'un seul produit. Tout produit n'est fourni que par un seul fournisseur.

FOURNISSEUR

fournit

PRODUIT

x x x x 1,1
Michel Dubois

x x x x 1,1

FOURNIS. 1,1 fournit 1,1

PRODUIT

UML pour les bases de donnes- p. 88

LES ASSOCIATIONS DE TYPE 1-1


Certains produits sont fabriqus par l'entreprise et ne font donc pas l'objet d'approvisionnement.

FOURNISSEUR

fournit

PRODUIT

x x x 1,1

x x x x 0,1

FOURNIS. 1,1 fournit 0,1

PRODUIT

Michel Dubois

UML pour les bases de donnes- p. 89

LES ASSOCIATIONS DE TYPE 1-1


Un autre exemple ("tre mari avec...") :
est mari avec

HOMME

FEMME

x x x 0,1 x x

x x

HOMME 0,1 est mari avec 0,1

FEMME

0,1

Michel Dubois

UML pour les bases de donnes- p. 90

LES ASSOCIATIONS DE TYPE 1-N


Tout fournisseur peut fournir un ou plusieurs produits. Tout produit n'est fourni que par un seul fournisseur.

FOURNISSEUR

fournit

PRODUIT

x x x 1,n x

x x

FOURNIS. 1,n fournit 1,1

PRODUIT

1,1

Michel Dubois

UML pour les bases de donnes- p. 91

LES ASSOCIATIONS DE TYPE 1-N


Certains produits sont fabriqus par l'entreprise et ne font donc pas l'objet d'approvisionnement.

FOURNISSEUR

fournit

PRODUIT

x x x

FOURNIS. 1,n fournit 0,1

PRODUIT

x 1,n

x 0,1

Michel Dubois

UML pour les bases de donnes- p. 92

LES ASSOCIATIONS DE TYPE 1-N


Un autre exemple ("tre pre de ...") :

HOMME

est pre de

ENFANT

x x x 0,n x x

x x

HOMME 0,n est pre de 0,1

ENFANT

0,1

Michel Dubois

UML pour les bases de donnes- p. 93

LES ASSOCIATIONS DE TYPE M-N


Tout fournisseur fournit un ou plusieurs produits. Tout produit est fourni par un ou plusieurs fournisseurs.

FOURNISSEUR

fournit

PRODUIT

x x x 1,n

x x x x 1,n

FOURNIS. 1,n fournit 1,n

PRODUIT

Michel Dubois

UML pour les bases de donnes- p. 94

LES ASSOCIATIONS DE TYPE M-N


Certains produits sont fabriqus par l'entreprise et ne font donc pas l'objet d'approvisionnement.

FOURNISSEUR

fournit

PRODUIT

x x x 1,n x x

x x

FOURNIS. 1,n fournit 0,n

PRODUIT

0,n

Michel Dubois

UML pour les bases de donnes- p. 95

LES ASSOCIATIONS DE TYPE M-N


Un autre exemple ("tre parent de ...") :
ADULTE est parent de ENFANT

x x x x
0,n

x x x x
0,n

ADULTE 0,n est parent de 0,n

ENFANT

Michel Dubois

UML pour les bases de donnes- p. 96

CARDINALIT MINIMALES GALE 1


Une cardinalit minimale gale 1 lie l'existence d'une occurrence de l'entit-type sa participation l'association. Un bon de livraison ne peut exister que s'il correspond une commande. La cration d'une occurrence de l'entit-type implique donc la cration du lien correspondant. Ces deux actions seront ralises au cours de la mme opration

Michel Dubois

UML pour les bases de donnes- p. 97

CARDINALIT MINIMALES GALE 0


Une cardinalit minimale gale 0 rend indpendante l'existence d'une occurrence de l'entit-type de sa participation l'association. Lorsqu'un nouveau produit est ajout au catalogue, il n'a pas encore fait l'objet d'une commande. La cration d'une occurrence de l'entit-type est dconnecte, dans le temps, de la cration ventuelle du lien correspondant. Ces deux actions peuvent tre ralises par des oprations diffrentes
Michel Dubois UML pour les bases de donnes- p. 98

IDENTIFIANT D'ENTITE
Proprit PARTICULIERE de l'entit telle que pour chacune des valeurs de cette proprit, il existe une occurrence UNIQUE de l'entit. L'identifiant est inscrit en tte de la liste des proprits et soulign. Dans les modles trs denses il peut suffire rsumer les autres proprits, pour faciliter la lecture.
Michel Dubois UML pour les bases de donnes- p. 99

IDENTIFIANT D'ASSOCIATION
Une association N'A PAS D'IDENTIFIANT explicite : l'association dpend des entits qu'elle relie. Son identifiant se dduit par calcul du produit cartsien des identifiants des entits associes. Pour l'association CONCERNE qui relie COMMANDE PRODUIT, l'identifiant est le produit cartsien de N Commande et N Produit.

Michel Dubois

UML pour les bases de donnes- p. 100

DIMENSIONS D'UNE ASSOCIATION


On appelle DIMENSION d'une association le nombre d'entits qu'elle relie. Elle correspond son nombre de "pattes". Une association qui relie seulement deux entits est donc un cas particulier. Il n'existe pas de limite au nombre de pattes d'une association. Cependant un nombre lev de pattes est un indice que l'tude a t superficielle et approximative. (Il existe en effet un procd de simplification)
Michel Dubois UML pour les bases de donnes- p. 101

ASSOCIATION REFLEXIVE
Une association "rflexive" est une association qui lie des occurrences d'une mme entit entre elles. C'est un cas particulier de la dimension 2. Pour viter toute ambigut, il vaut mieux indiquer le ROLE jou distinctement par chacune des occurrences.

Michel Dubois

UML pour les bases de donnes- p. 102

DIMENSION SUPRIEURE 2 D'UNE ASSOCIATION ET CARDINALITS

Pour une occurrence de mdecin, il peut ne pas y avoir de couple patient * acte (le Directeur du centre par exemple qui ne participe pas aux consultations) mais en gnral il y en a plusieurs. Pour un acte il peut ne pas y avoir de couple mdecin * patient (un acte chirurgical qui n'est pas pratiqu dans notre centre par exemple) mais ventuellement plusieurs. Pour un patient il y a au moins un couple mdecin * acte et ventuellement plusieurs.
Michel Dubois UML pour les bases de donnes- p. 103

ASSOCIATION N-AIRE INVALIDE

Pour une occurrence de client, il y a au moins un couple local * contrat et au plus plusieurs Pour un local il peut ne pas y avoir de couple client * contrat mais ventuellement plusieurs Pour un contrat il y a 1 et 1 seul couple client * local si l'on trouve une cardinalit 1,1 sur l'une des pattes, le modle peut tre dcompos
Michel Dubois UML pour les bases de donnes- p. 104

DCOMPOSITION SYSTMATIQUE D UNE ASSOCIATION N-AIRE

l'association LOUER est indirectement identifie par N Client * NEmplacement * N Contrat. N Contrat -> N Client, NEmplacement Pour identifier une occurrence de LOUER parmi toutes les autres, N Contrat suffit.

Michel Dubois

UML pour les bases de donnes- p. 105

CONTRAINTE D'INTEGRITE FONCTIONNELLE


Une Contrainte d'Intgrit Fonctionnelle (en abrg : CIF) se dfinit par le fait que l'une des entits participant l'association est compltement dtermine par la connaissance d'une ou plusieurs autres entits participant dans cette mme association. Cas des CIF pour une association de dimension 2 Les CIF permettent de dcomposer les relations de dimensions suprieures 2.
Michel Dubois UML pour les bases de donnes- p. 106

CIF ET ASSOCIATION DE DIMENSION 2


La CIF consiste simplement en une cardinalit 1,1 sur l'une des pattes. Les associations qui comportent une cardinalit 1,1 sur l'une des pattes ne sont jamais porteuses de proprits. Celles-ci "migrent" sur l'entit dterminante.

Michel Dubois

UML pour les bases de donnes- p. 107

CIF ET ASSOCIATION DE DIMENSION SUPRIEURE 2


lorsqu'il y a une CIF, lorsque la dpendance fonctionnelle concerne un nombre d entit infrieur la dimension de la relation Alors l'entit dtermine peut tre dtache de l'association initiale pour rester associe avec la seule entit dterminante.
PIECE

les thtres ont l'exclusivit des pices reprsentes:


ACTEUR Jouer PIECE

ACTEUR N acteur
0,n

Jouer

0,n

Titre Pice

0,n

THEATRE Nom_thatre

CIF

Michel Dubois

N acteur

0,n

0,n

0,1

A l'affiche de

0,n

THEATRE Nom_thatre

Titre Pice

UML pour les bases de donnes- p. 108

CIF ET ASSOCIATION NON DCOMPOSABLE


Dans un lyce, les professeurs donnent des cours des classes dans certaines matires. Mais on sait encore que dans une matire, une classe n'a qu'un seul professeur. CLASSE , MATIERE -> PROFESSEUR
CIF CLASSE code classe
0,n 0,n

PROFESSEUR Nom prof avoir cours

0,n

Michel Dubois

MATIERE code matiere

UML pour les bases de donnes- p. 109

IDENTIFICATION RELATIVE
Certaines entit type ont par ailleurs une existence totalement dpendante d autres entit type. Il s agit d entit faible. L identification relative s effectue par par une proprit stable de cette entit qui ne remplie pas les conditions d un identifiant absolu et par une cardinalit 1,1 (R).
Paye CLIENT
0,n

id

1,1

FACTURE N Facture date


1,n

Conpose

1,1 (R)

LIGNE DE COMMANDE ordre quantit


1,1

ARTICLE
Michel Dubois

Rfrence prix

0,n

Concerne
UML pour les bases de donnes- p. 110

Les dpendances fonctionnelles entre entits


Entre 2 entits du MCD, il existe une dpendance fonctionnelle (DF) forte si une occurrence de lentit source est associe une et une seule occurrence de lentit cible Cette dpendance est dite faible si la cardinalit minimale est 0 Exemple : 1,1 1,n 1,n 1,n

Client Avec 0,1 du ct client Client Client

a pour DF DF

Reprsentant Reprsentant Reprsentant

UML pour les bases de donnes- p. 111

Les contraintes dintgrit


Elles refltent ou respectent les rgles de gestion de lentreprise Les cardinalits sont un cas de contraintes dintgrit Les contraintes dintgrit syntaxique portent sur une proprit et peuvent concerner soit sa forme soit son domaine de valeur Un prix doit tre un rel strictement positif Une date prend la forme jj/mm/aaaa Les contraintes dintgrit smantique sappliquent plusieurs proprits ensemble. Ces proprits ne sont pas forcment des lments dune seule entit ou dune seule association Heure de dpart < heure darrive
UML pour les bases de donnes- p. 112

Les contraintes dintgrit


Une contrainte dintgrit fonctionnelle (CIF) ou DF totale est un cas particulier de la DF forte : Le lien existe de manire unique pour toutes les occurrences de la source La dpendance est stable, ie une fois le lien tabli entre 2 occurrences, il ne peut tre modifi Exemple :
voiture
1,1 1,n

est produite par


1,n

constructeur

voiture

CIF

constructeur

UML pour les bases de donnes- p. 113

CIF et DF pour simplifier le MCD


Assur Modle initial 1,n souscrire 1,1 Police RG1 : une police nest souscrite que par un et un seul assur et elle nest pas cessible : on a une CIF entre police et assur RG2 : Une police est gre par un et un seul agent mais il est possible quil change au cours du temps : on a une DF forte entre police et agent Assur Police Agent Do : 1,n CIF DF 0,n 0,n Agent

UML pour les bases de donnes- p. 114

CIF et DF pour simplifier le MCD


La source dune dpendance fonctionnelle peut tre une relation
Produit 1,n livraison 1,n Client On a : Client x Produit Magasin
DF

Magasin 1,n

UML pour les bases de donnes- p. 115

DF non triviales et MCD


Tout identifiant d une entit dtermine fonctionnellement toutes les autres proprits de cette entit Toute cardinalit maximale 1 implique une DF dont la source est l identifiant de l entit concerne par cette cardinalit et la cible les identifiants des entits associes Toute association porteuse de proprits implique une DF dont la source est compose des identifiants des entits associes et la cible l ensemble des proprits portes par l association
UML pour les bases de donnes- p. 116

Rgles concernant les entits


Une entit possde toujours au moins une proprit : son identifiant Chacune des proprits d une entit doit caractriser toute occurrence de cette entit de la mme manire S il existe une occurrence d association alors il existe ncessairement une occurrence de chacune des entits associes Deux occurrences d une entit ne peuvent participer la mme occurrence de l association (sauf si l association a deux branches vers cette entit)
UML pour les bases de donnes- p. 117

Rgles concernant les proprits


Une mme proprit ne peut figurer que sur un seul objet (entit ou association) Une proprit doit tre lmentaire (atomique) de telle sorte qu on ne puisse pas la dcomposer (1NF) Une proprit doit dpendre pleinement de son identifiant et pas seulement d une partie de celui-ci (2NF) Une proprit doit dpendre directement de l identifiant (sans passer par l intermdiaire d une autre proprit) (3NF)
UML pour les bases de donnes- p. 118

Extension du modle
Existence de valeurs nulles ou insignifiantes (card min = 0) Redondance des proprits Description pas assez fine des relations entre objets Smantique insuffisamment prise en compte

Pour pallier ces inconvnients : introduction du concept de hirarchie de gnralisation/spcialisation Un exemple :


Employ 0,n utilise 1,n Vhicule

3 types demploys : secrtaires, ingnieurs et chauffeurs 2 sortes de vhicules : voiture et camion


UML pour les bases de donnes- p. 119

Extension du modle
Couverture : toute occ. du type gnrique doit appartenir lune des spcialisations Disjonction : une occ. dun sous-type ne peut appartenir qu un sous-type
Couverture Disjonction
S1 G + G S1
T

Non couverture
G S2 S1 G S2 S1 S2 S2

Non disjonction

UML pour les bases de donnes- p. 120

CONTRAINTES DE SPCIALISATION

Michel Dubois

UML pour les bases de donnes- p. 121

Extension du modle
Lentit spcialis hrite :
Des proprits de lentit gnrique Des relations associes lentit gnrique

Identifiant : il peut y avoir plusieurs identifiants correspondant des vues externes diffrentes
Identifiant total : permet didentifier chacune des occurrences dun type Identifiant relatif : intgre une relation stable (CIF) id source = id cible + numro dordre
UML pour les bases de donnes- p. 122

GNRALISATION-SPCIALISATION
Pour reprsenter la proposent le schma suivant : gnralisation-spcialisation, quelques ouvrages

CLIENT code client nom client adresse client ETRE UN


0,1 1,1

CLIENT_PROSPECT code prospection

Michel Dubois

UML pour les bases de donnes- p. 123

GNRALISATION-SPCIALISATION
Cette reprsentation est dangereuse plus d'un titre. En effet, elle laisse supposer : - que la gnralisation-spcialisation peut tre reprsente par une simple relation entre ensembles (ce qui donne un schma pour le moins tonnant !).
CLIENT "ETRE UN" CLIENT PORTEFEUILLE

- qu'il existe un lien entre deux occurrences dentits-type (celles-ci ayant chacune son existence propre) ; cela ne correspond videmment pas la ralit ! La relation de gnralisation-spcialisation permet de considrer le mme client avec plus ou moins de dtails ; elle ne concerne donc qu'une et une seule occurrence d'entit-type.
Michel Dubois UML pour les bases de donnes- p. 124

LIEN D'INCLUSION
En conclusion, le concept de gnralisation est bien une extension au modle entit-association. Il exprime une relation d'inclusion entre un sous-type et sa classe gnrique. La gnralisation-spcialisation permet de voir une mme occurrence d'entit-type diffrents niveaux d'abstraction.
CLIENT

CLIENT PORTEFEUILLE

Michel Dubois

UML pour les bases de donnes- p. 125

Extension du modle
Reprsentation des contraintes inter-relations : Inclusion ou implication : les occ de la relation source sont incluses dans lensemble des occ de la relation cible

O1

R1
I

O2 O3

R2

Exclusion : la participation dune occ de lobjet une occ de relation exclut sa participation aux occ des autres relations lies par la contrainte Reprsentation : sur un lien non flch
UML pour les bases de donnes- p. 126

Extension du modle
Totalit : toute occ de lobjet pivot participe au moins une occurrence dun des types de relations lies par le contrainte Reprsentation : T lien supplmentaire sur lobjet pivot Partition : mme chose en remplaant au moins par P exactement Egalit ou simultanit : galit entre lensemble des occurrences des types de relations lies par la contrainte S Proprit multivalue Ensemble : sans doublon Liste : avec doublon Surcharge des domaines de valeurs possible pour les soustypes (Personne.ge [0:120] ; Employ.ge [18:65]
UML pour les bases de donnes- p. 127

Universit de Bretagne Sud


Informatique

Gnie Logiciel avec UML

Chapitre 4 Introduction aux notations UML


UML pour les bases de donnes- p. 128

Le Diagramme De Classes
Personne nom prnom adresse membre 3..*

Enseignant statut grade salaire * nb_heure

Etudiant nEtud ge

Promotion * 1 Appartient > intitul 1..3 Associ 1 Dpartement 1..* nom {subset} a 0..2 * Conseil

Intervient dans > Affect dans>


Elisabeth Le Saux

anneCra
1

nom

SGBD - Conception p.129

UML pour les bases de donnes- p. 129

Le Diagramme Dobjets
:Promotion intitul = 1A :Dpartement nom = stid anneCra = 71

: Etudiant nom = Le_Lombric prnom = max adresse = la botte en terre nEtud = 111 age = 18

: Etudiant

toto : Etudiant

UML pour les bases de donnes- p. 130

Notion dobjet
Dans le monde rel, notre esprit structure notre environnement selon le concept dobjet (chaise, table, etc.). La modlisation objet des logiciels rejoint la faon que nous avons nous mme dvoquer le monde qui nous entoure. Les objets de modlisation vont dfinir une ralit simplifie (on parle dabstraction) des entits du monde rel. Ces objets de modlisation deviendront au fil du dveloppement des objets informatiques (au sens de la POO ou des BDOO) ou des tuples (au sens des SGBDR). Les objets de modlisation reprsente le plus souvent une abstraction dentits massiques (ex : un client de banque Mr. James, lavion 218 pour Honolulu) ou abstraites (ex : la trajectoire de lavion pour Tokyo) du monde rel.

UML pour les bases de donnes- p. 131

Comme pour les objets du monde rel, les objets de modlisation se voient associer un tat, une identit et un comportement qui les qualifient

UML pour les bases de donnes- p. 132

Reprsentation UML dun objet


Compte_de_toto
solde : Somme = 100F tat : Boolean = ouvert crditer (s : Somme) dbiter (s : Somme) bloquer() getSolde() : Somme

Nom de lobjet Compartiment des proprits Compartiment des oprations

Compte_de_toto Compte_de_toto
solde = 100F tat = ouvert
Elisabeth Le Saux

Compte_de_toto
crditer () dbiter () bloquer()
SGBD - Conception p.133

UML pour les bases de donnes- p. 133

Ltat d un objet

Ltat regroupe les valeurs instantanes de tous ses attributs et des liens quil entretient. Un attribut est une information particulire sur lobjet du monde rel modlis. Chaque attribut peut prendre une valeur dans un domaine de dfinition donn. Un attribut est une variable type.
LaVoituredAlesi : Voiture couleur = rouge niveau = 200 litres tat = Bon acclerer() freiner() ...

jaffr:Personne
ge =55 ans formation = ENA fonction = PDG socit = ELF salaire = inavouable

Cet tat volue au cours du temps

LaVoituredAlesi : Voiture couleur = rouge niveau = 175 litres tat = Hors Service acclerer() freiner() ...
UML pour les bases de donnes- p. 134

Deux tours plus tard

Le comportement d un objet
Le comportement regroupe toutes les comptences dun objet. Il se prsente sous la forme doprations. Une opration reprsente un service offert par lobjet aux autres objets. Les oprations dun objet sont dclenches suite une stimulation externe : lenvoi par lobjet client dun message lobjet fournisseur du service. Le message est dnot par le nom de lopration offerte par lobjet fournisseur que lon souhaite stimuler.
UML pour les bases de donnes- p. 135

Lidentit d un objet
Tous les objets du monde rel sont uniques. De la mme faon, tout objet de modlisation ou d implantation possde une identit qui lui est propre. Cet identit sappelle OID pour Object IDentifier. LOID permet de distinguer tout objet de faon non ambigu, indpendamment de son tat. Il est ncessaire de connatre lOID dun objet pour accder ses services. Attention : 2 objets ayant des identits diffrentes mais ayant le mme tat sont diffrents! La notion d identit est un concept qui ne se reprsente pas de manire explicite dans une modlisation objet. Dans les langages objets cet identifiant est la rfrence vers lobjet. Dans une table de SGBDR cest la valeur de cl primaire du tuple reprsentant lobjet.
UML pour les bases de donnes- p. 136

Un objet est une abstraction


Une abstraction est un rsum, un condens Cest un des moyens utiliss par lhomme pour grer la complexit du monde qui lentoure. Elle vise dgager les seules caractristiques essentielles au problme pos en ignorant les dtails sans intrt. Une abstraction se dfinit par rapport un point de vue.
UML pour les bases de donnes- p. 137

Un exemple
Valrie prnom = valrie date_anni =11/11/1975 adresse = 54 rue Pennec tel = 02-97-50-50-23 :Etudiant

getTel() .. Point de vue Camarade

nom = Dupont filire = IUP origine = IUT noteUML = 15 option = GIS noter(note) ... Point de vue Professeur

UML pour les bases de donnes- p. 138

Notion de classe et dinstance


Le monde qui nous entoure est constitu de trs nombreux objets. Pour le comprendre, ltre humain tendance regrouper les lments qui se ressemblent. Regrouper des objets suivant des critres de ressemblance sappelle classer. Les biologistes ont ainsi classer les animaux en diffrentes espces : vipres, moustiques, mouches, etc. Ce concept de classement a t repris en modlisation objet. On factorise la description dobjets prsentant les mmes proprits dans une classe. Une classe reprsente donc un moule partir duquel il sera possible de crer des objets qui prsenteront tous les mme types dattributs et les mmes oprations Le processus permettant dobtenir un objet depuis une classe se nomme instanciation. On parle indiffremment dobjet ou dinstance.
UML pour les bases de donnes- p. 139

2.1. Reprsentation dune classe en UML


Compte
solde : Somme tat : Boolean crditer (s : Somme) dbiter (s : Somme) bloquer() getSolde() : Somme

Compte Nom de la classe Compartiment des attributs Compte


solde tat

Compartiment des oprations

Compte
crditer () dbiter () bloquer()

UML pour les bases de donnes- p. 140

Le processus dinstanciation
La classe

Compte
solde: Somme plancher: Somme crditer (s :Somme) dbiter (s : Somme) solde() : Somme

C1:Compte
solde = 200F plancher = -200F crditer (s :Somme) dbiter (s : Somme) solde() : Somme

:Compte
solde = 700F plancher = -500F crditer (s :Somme) dbiter (s : Somme) solde() : Somme

instanciation

Un objet nomm

Un objet anonyme
UML pour les bases de donnes- p. 141

Le Diagramme de Classes
Structure statique du systme en termes de classe et de relation entre ces classes au niveau conceptuel, danalyse ou de conception
Personne nom prnom adresse membre 3..*

Enseignant statut grade salaire * nb_heure

tudiant nEtud ge

Promotion * 1 Appartient > intitul 1..3 Associ 1 Dpartement 1..* nom anneCra 1
UML pour les bases de donnes- p. 142

a 0..2

Intervient dans > Affect dans>

* Conseil nom

{subset}

Le Diagramme dObjets
Faciliter la comprhension des structures de donnes complexes dcrites dans le DC Identifier les classes et les relations
:Promotion intitul = 1A :Dpartement nom = sir anneCra = 97

: tudiant nom = Le_Lombric prnom = max adresse = la botte en terre nEtud = 111 age = 21

: tudiant

toto : tudiant

UML pour les bases de donnes- p. 143

Association entre Classes


Diagramme de classes
Pays Nom Oprations( ) Association a pour capitale Ville Nom Oprations( )

Diagramme d objets = instance du diagramme de classes


Canada : Pays Canada Lien
UML pour les bases de donnes- p. 144

Ottawa : Ville Ottawa

Association entre Classes


L association exprime une connexion smantique bidirectionnelle entre classes Une association est une abstraction des liens qui existent entre les objets instances des classes associes Les associations se reprsentent de la mme manire que les liens Les associations montrent les dpendances entre les classes
UML pour les bases de donnes- p. 145

Association entre Classes


Universit

Une association

tudiant

Un lien

Pierre-Alain : tudiant

Mulhouse : Universit
Un lien

Jean-Jacques : tudiant

Rennes : Universit

Eric : tudiant
Un lien

Un lien

Anne : tudiant

Strasbourg : Universit
Un lien

Laurence : tudiant

UML pour les bases de donnes- p. 146

Association entre Classes


Nommage des associations : indication du sens de lecture pour amliorer la lisibilit
Universit Hberge > tudiant

< Etudie dans Universit tudiant

UML pour les bases de donnes- p. 147

Association entre Classes


Nommage des rles : le rle dcrit une extrmit dune association dans le cas de plusieurs associations
Hberge >
Universit Employeur tudiant Personne

Emploie >

Enseignant

Personne
Enfant

Parent

Est lev par >


UML pour les bases de donnes- p. 148

Multiplicit dune Association


tudiant * Personne 0..1 Employeur 1 Universit

hberge

emploie

* Enseignant

1 0..1 M .. N * 1 .. *

Un et un seul (eq 1..1) Zro ou un De M N (entiers naturels) Plusieurs (eq 0..*) D'un plusieurs
UML pour les bases de donnes- p. 149

Les Classes-Associations
Ajouter des oprations et des attributs une association crer une classe d association Une instance d association cre une instance de la classe d association Exemple
Adhrent 1
Emprunte >

Exemplaire

Prt
date dure Prolonger()
UML pour les bases de donnes- p. 150

Agrgation / Composition
Proprit de l agrgation : transitivit (si A B C alors A C) mais non symtrique (si A B, B A)
Document

Paragraphe

Phrase

Si multiplicit de l agrgat = 1, destruction de lagrgat destruction des composants


UML pour les bases de donnes- p. 151

Les agrgations dUML reprsentent des associations qui ne sont pas symtriques et pour lesquelles lune des extrmits joue un rle prdominant par rapport lautre. Lagrgation concerne seulement les associations binaires (rflexives ou non). Il est prfrable dutiliser une agrgation lorsquune classe fait partie dune autre classe ou lorsquune action sur une classe implique une action sur une autre classe. UML dfinit deux formes dagrgation :
La composition (composite aggregation) requiert quun objet appartienne au plus une composition dobjets un instant donn. Cette appartenance peut changer au cours du temps. La composition implique en outre une forme de propagation entre le composite et le composant (en particulier la destruction du composite entranera obligatoirement la destruction de ses composants). Cette agrgation est reprsente par un losange noirci du ct du rle de la classe composite appele agrgat . Lagrgation de composition ne simpose que lorsque lassociation est de type composite/composant ou fait partie de. Lagrgation partage autorise quun objet appartienne simultanment diffrentes compositions dobjets. Cette agrgation est reprsente par un losange clair du ct du rle de la classe concerne par lassociation appele agrgat . Les agrgations partages sont un peu plus difficiles dfinir, elles renforcent le couplage dune association binaire et interviennent lorsque la composition ne sapplique pas et que des objets sont fortement dpendants par rapport dautres objets dans le cadre de lassociation.
Michel Dubois

Agrgations dUML

UML pour les bases de donnes- p. 152

Modlisons un ordinateur qui est compos dun cran, dun ou de plusieurs disques et de diffrents priphriques en utilisant une agrgation de composition. Les composants (objets des classes Ecran, Disque et Periphrique) et les composites (objets de la classe Ordinateur) sont ici considrs comme des pices relles. La destruction dun ordinateur entranera la destruction de ses composants.

Composition UML

Au niveau de la base de donnes, la composition se programme avec SQL laide de la propagation de laction de suppression via les cls trangres (ON DELETE CASCADE) ou par dclencheurs.
Michel Dubois UML pour les bases de donnes- p. 153

Le losange clair indiquerait que les composants seraient considrs comme des types de pices et non comme des pices relles. Chaque objet des classes Ecran, Disque et Peripherique pourrait ainsi tre partag entre diffrents objets de type Ordinateur. La destruction dun ordinateur nentranerait pas ncessairement la destruction de ses composants. Considrons aussi lexistence dun copropritaire na de sens que si limmeuble existe. Il ne sagit pas ici dune relation composite/composant. La suppression dun objet de type immeuble nentranera pas forcment la destruction de ses copropritaires (pour ceux qui sont copropritaires dans dautres immeubles).

Agrgation partage UML

Notion assez subjective, lagrgation relve plus de la conception dtaille que de la modlisation. Elle se traduira au niveau physique par programmation de dclencheurs ou de contraintes SQL (de vrification CHECK ou de rpercussion de cl trangre CASCADE). UML pour les bases de donnes- p. 154

Relation de Gnralisation
La relation de Gnralisation est un concept fondamental de la modlisation objet. Cette relation entre classes est un mcanisme permettant de dfinir une classe (on parle de sous-classe ou de classe fille) partir dune autre classe (on parle de super-classe) tout en laffinant. Laffinement peut consister en lajout dattributs, lajout ou la redfinition doprations. La sous-classe prsente en plus de ses propres proprits toutes les proprits de sa super-classe. Un objet instance de la sousclasse possdera donc toutes les proprits (attributs, oprations, relations, contraintes) dfinies dans la super-classe plus toutes les proprits dfinies dans la sous-classe. La relation de gnralisation est souvent traduite smantiquement par est un .
UML pour les bases de donnes- p. 155

Reprsentation graphique de la gnralisation


Equipement nom fabricant poids

Pompe pression dbit

Rservoir volume pressionMax

Pompe centrifuge diamtreHlice nbPales


UML pour les bases de donnes- p. 156

Proprits de la relation de Gnralisation


Non rflexive, non symtrique, transitive
A A

B Impossible !!! A C

Impossible !!!

UML pour les bases de donnes- p. 157

Gnralisation
Gnralisation = factoriser les lments communs, cest--dire les attributs et les mthodes La gnralisation est opre aprs identification des classes
Abstractions plus gnrales Vhicule

Vhicule terrestre

Vhicule arien

Voiture

Camion

Avion

Hlicoptre

UML pour les bases de donnes- p. 158

Gnralisation et Spcialisation
Il y a deux faons dapprhender la relation de Gnralisation lors du dveloppement dun logiciel.
Partant dune classe existante on dfinit une sous-classe capturant des particularits dun ensemble dobjets non discrimins par la classe existante. La sous-classe est une spcialisation de la superclasses. Lacte de spcialisation est la base de la rutilisation. Partant d un ensemble de classe existante on factorise laide dune super-classe les proprits communes ces classes dans une classe plus gnrale. La super-classe ainsi dfinie est une gnralisation des classes existantes. La gnralisation est un acte difficile mais de grand profit (architecture plus facilement maintenable).

UML pour les bases de donnes- p. 159

Gnralisation simple et multiple


Il y a deux modes dutilisation de la relation de gnralisation. Gnralisation simple : une classe ne peut avoir au plus quune seule super-classe. Gnralisation multiple : une classe peut avoir un nombre quelconque de super-classes. UML propose les deux modes. Le choix de se restreindre au mode simple est souvent li la contrainte dun langage cible ne supportant que lhritage simple (comme JAVA).

UML pour les bases de donnes- p. 160

Gnralisation et Agrgation
Ne pas confondre agrgation et gnralisation
L agrgation met en relation des objets chaque objet est l instance d une classe La gnralisation met en relation des classes un objet est simultanment instance de la superclasse et une instance de la sous-classe Agrgation est compos de , relation et Gnralisation est une sorte de , relation ou
UML pour les bases de donnes- p. 161

Gnralisation et Agrgation
Exemple Une lampe de bureau est de type fluorescent ou incandescence. Elle possde un socle, un abat-jour, un interrupteur et un cble. La lampe incandescence est quipe d une douille barillet tandis que la lampe fluorescente est quipe d un ballast, dun starter et de deux douilles rotatives Diagramme des classes faisant apparatre l hritage et l agrgation ?
UML pour les bases de donnes- p. 162

Association navigable
Par dfaut, une association UML est navigable dans les deux sens. Cela signifie que si, dans le cadre de la relation, un objet A est reli un objet B, par dfinition B est aussi reli A (dans le cadre de cette mme relation). UML 2 permet dexprimer dans un diagramme que les instances dune classe ne connaissent pas les instances dune autre bien qutant relies entre elles dans le cadre de lassociation.

La proprit de navigation est vrifie dans la grande majorit des associations. La rduction de la porte dune association sera ralise en phase dimplmentation (par programmation). Il ny a pas de sens dfinir une association prcisant la navigation des deux cts simultanment.
Michel Dubois UML pour les bases de donnes- p. 163

Universit de Bretagne Sud


Informatique

Gnie Logiciel avec UML

Chapitre 5 Equivalence DC/MCD


UML pour les bases de donnes- p. 164

Associations 1-1
Merise
Etudiant 1,1 noinscrip nom effectuer 0,1 Stage numstage theme responsable

Etudiant 0..1 noinscrip nom

1 < est effectu par

Stage numstage theme responsable

UML

UML pour les bases de donnes- p. 165

Associations 1-N
Merise
Professeur numprof 0,n nom grade responsable 1,1 UV numUV titre datecreation

Professeur numprof nom grade

est responsable de > *

UV numUV titre datecreation

UML

UML pour les bases de donnes- p. 166

Associations N-N sans proprit


Merise
Etudiant 1,n noinscrip nom voeux 0,n Stage numstage theme responsable

Etudiant noinscrip nom

voudrait >

Stage 1..* numstage theme responsable

UML

UML pour les bases de donnes- p. 167

Associations N-N avec proprits


Une association plusieurs--plusieurs avec attributs est reprsente sous UML par une classe-association. Cette classe-association contient les attributs de lassociation et est connecte au lien dassociation par une ligne en pointill.

Merise

Etudiant 1,n noinscrip nom

vux numordre

0,n

Stage numstage theme responsable

Etudiant noinscrip nom

Vux numordre

Stage 1..* numstage theme responsable


UML pour les bases de donnes- p. 168

UML

Association n-aire
Dpartement codedpt nodpt

Merise

0,n Logiciel nomlogi editeur 0,n installation dateinstall Dpartement codedpt nodpt Logiciel nomlogi editeur * * 1..* Serveur nomserv typeserv 1,n Serveur nomserv typeserv

UML

installation dateinstall
UML pour les bases de donnes- p. 169

Association n-aire
Une association n-aire sans contrainte se reprsente avec UML soit par un losange (symbole de lassociation) qui connecte les n classes et une classe-association, soit par une classe strotype relie aux n classes. Une association n-aire avec contrainte se reprsente plus facilement avec UML par une ou plusieurs classes-associations reliant les n classes. Association en losange

Classe strotype

Cette notation nest pas conseille moins dutiliser un outil qui ne prend pas en compte le symbole losange de lassociation et de vouloir toutefois modliser une association n-aire sans contrainte. Michel Dubois
UML pour les bases de donnes- p. 170

Association n-aire avec DF


Dpartement codedpt nodpt DF

Merise

0,n Logiciel nomlogi editeur Dpartement codedpt nodpt * * Logiciel nomlogi editeur installation 1..* dateinstall 1 Serveur nomserv typeserv 0,n installation dateinstall 1,n Serveur nomserv typeserv

UML

La classe-association permet de prendre en compte explicitement la contrainte dunicit qui concerne linstallation des logiciels : un logiciel dun dpartement nest install que sur un seul serveur. UML pour les bases de donnes- p. 171

Association rflexive 1-N


Merise
Poste travail numserie adresseIP typeposte 1,1 serveur 0,n

* Poste travail numserie adresseIP typeposte

est client de >

UML

1 est serveur de >

UML pour les bases de donnes- p. 172

Association rflexive N-N


0,n parent est parent de 0,n enfant

Merise

Personne numinsee nom prnom

* Personne numinsee nom prnom *

est parent de >

UML

est enfant de >

UML pour les bases de donnes- p. 173

Contrainte de partition
0,1

Merise

Pilote numpil nom grade 0,1

dtachement P opration

Mission sanitaire 1,n codemsan organisme Mission entranement codement 1,n date rgion Mission sanitaire 0..1 codemsan organisme Mission entranement codement 0..1 date rgion
UML pour les bases de donnes- p. 174

UML

Pilote numpil nom grade

1..*

{Partition} dtachement

{xor} est possible. En OCL: inv: ((detachement->isEmpty() and operation->notEmpty()) or (detachement->notEmpty() and operation->isEmpty()))

1..*

opration

Contrainte d exclusion
0,1

Merise

Pilote numpil nom grade 0,1

dtachement opration

Mission sanitaire 1,n codemsan organisme Mission entranement codement 1,n date rgion Mission sanitaire 0..1 codemsan organisme Mission entranement codement 0..1 date rgion

UML

Pilote numpil nom grade

1..*

{Exclusion} dtachement

1..*

opration

En OCL: inv: ((detachement->isEmpty() and operation->notEmpty()) or (detachement->notEmpty() and operation->isEmpty())) or bases de donnes- p. 175 UML pour les ((detachement->isEmpty() and operation->isEmpty())

Contrainte de totalit
0,1

Merise

Pilote numpil nom grade 0,1

dtachement T opration

Mission sanitaire 1,n codemsan organisme Mission entranement codement 1,n date rgion Mission sanitaire 0..1 codemsan organisme Mission entranement codement 0..1 date rgion
UML pour les bases de donnes- p. 176

UML

Pilote numpil nom grade

1..*

{Totalit} dtachement

1..*

opration

Contrainte de simultanit
0,1

Merise

Pilote numpil nom grade 0,1

dtachement S opration

Mission sanitaire 1,n codemsan organisme Mission entranement codement 1,n date rgion Mission sanitaire 0..1 codemsan organisme Mission entranement codement 0..1 date rgion
UML pour les bases de donnes- p. 177

UML

Pilote numpil nom grade

1..*

{Simultanit} dtachement

1..*

opration

Contrainte dinclusion
1,1 effectue I voeux 0,1 Stage numstage theme responsable

Merise

Etudiant 1,n noinscrip nom

0,n

0..1

Etudiant noinscrip nom

Stage numstage {sous-ensemble} theme 1..* responsable voudrait >

effectue >

UML

{subsets nom_rle}est possible.


UML pour les bases de donnes- p. 178

Contrainte dinclusion {subsets nom_rle}


La spcification UML 2 propose la notation {subsets nom_rle} pour exprimer une contrainte dinclusion. Alors que la spcification prsente des exemples bass sur deux associations binaires, il est possible dtendre cette notation plus de deux associations et dutiliser les classes-associations pour celles qui concernent les associations n-aires.

Michel Dubois

UML pour les bases de donnes- p. 179

Reprsentation des contraintes Des contraintes peuvent tre ajoutes aux attributs et oprations dune classe
notation entre { }

Invariants = Proprits vraies pour l'ensemble des instances de la classe


dans un tat stable en dehors de lexcution d une mthode), chaque instance doit vrifier les invariants de sa classe
Pr-condition = Proprit devant tre assurer par le client avant lexcution de l opration. Sans respect de cette pr-condition, lopration ne garantit rien. Post-condition : Proprit garantie par la mthode aprs son excution. Contraintes sur un attribut : cf OCL les bases de donnes- p. 180 UML pour

Reprsentation des contraintes Compte


{solde>=plancher} solde: Somme plancher: Somme

modifieurs crditer (Somme) {pr = Somme > 0 post solde = solde +somme} dbiter (Somme) Accesseur Solde : Somme

Michel Dubois : Support de cours DUIA n3

UML pour les bases de donnes- p. 181

Les contraintes prdfinies de UML 2


La spcification UML 2 dfinit quelques contraintes qui se notent lextrmit dun lien dassociation (au mme niveau que le rle). Nous les citons ici pour mmoire mais elles ne sont pas toutes intressantes dans un contexte de bases de donnes. {subsets nom_rle} exprime linclusion dune association par rapport une autre. {redefined nom_rle} redfinit un rle. {union} signifie que le rle rassemble une union de sous-ensembles. {ordered} exprime un ordre au niveau des objets relis. {bag} exprime quun mme objet cible peut apparatre plusieurs fois dans lassoc. {sequence} note aussi {seq} combine les caractristiques de bag et de ordered. {xor} qui indique le ou exclusif entre objets relis par deux associations. En labsence de ces contraintes (cas le plus gnral et celui par dfaut), la terminaison dune association est dite de type set (chaque objet reli nest prsent au plus quune seule fois dans lassociation). ordered prcise lordre dobtention dun diplme (chronologique par exemple), alors que subsets indique que, pour tre major dun diplme, ltudiant doit aussi y tre associMichel Dubois que titulaire. en tant

UML pour les bases de donnes- p. 182

Contrainte personnalise avec OCL


Pour toute autre contrainte, OCL est utilisable dans une note. Lexemple dcrit la contrainte qui exprime, laide du langage OCL, que tout employ est soit :
chef, et dans ce cas il na pas de chef (condition isEmpty vrifie) ; sous la responsabilit dun chef qui doit tre employ dans la mme entreprise que lui (deuxime partie de la condition).

Toute contrainte prdfinie par UML2 ou exprime laide du langage OCL sera programmer par la suite sous SQL soit par contrainte de vrification (CHECK), soit par dclencheur.
Michel Dubois UML pour les bases de donnes- p. 183

6. Visibilit et Encapsulation : vers de bons objets

public = +
usager

protg = # priv = corps


hritier

implmenteur

Classe
+a1 : T1 -a2 : T2

#m1 (p1,P2,p3) +m2 (p1,P2,p3)


UML pour les bases de donnes- p. 184

Hritage
Animal

Carnivore

Herbivore

Animal

UML

{Partition}

La notation est quivalente pour les autres formes d hritage, savoir exclusion et totalit. Le cas sans contrainte est reprsent sans ornement particulier

Merise

Carnivore

Herbivore

UML pour les bases de donnes- p. 185

Chapitre 6

Modle Logique des Donnes relationnelles


Michel Dubois
I.U.T. de Vannes
Michel.Dubois@univ-ubs.fr

Michel Dubois

UML pour les bases de donnes- p. 186

RGLES DE PASSAGE DEPUIS UN MODLE ENTIT-ASSOCIATION VERS UN SCHMA RELATIONNEL


REGLE n1 : TOUTE ENTITE DEVIENT UNE RELATION dans laquelle : - les attributs traduisent les proprits de l'entit - la cl primaire traduit l'identifiant de l'entit
ENTITE RELATION

Michel Dubois

UML pour les bases de donnes- p. 187

RGLES DE PASSAGE DEPUIS UN MODLE ENTIT-ASSOCIATION VERS UN SCHMA RELATIONNEL


REGLE n2 : 1:N Une association de dimension 2 avec cardinalit maximale 1 se rcrit en portant dans la relation fille la cl primaire de la relation mre. il s agit d une cl trangre. Par convention, nous la symboliserons au moyen de #.

Michel Dubois

UML pour les bases de donnes- p. 188

RGLES DE PASSAGE DEPUIS UN MODLE ENTIT-ASSOCIATION VERS UN SCHMA RELATIONNEL


REGLE n3 N:M (cas de la dimension 2 plusieurs plusieurs) : Une association de dimension 2 avec cardinalits plusieurs a plusieurs se rcrit en : - crant une relation particulire qui contient comme attributs les identifiants des 2 entits associes - ces attributs constituent eux 2 la cl primaire de la relation - ils sont individuellement cls trangres - ajoutant la ou les ventuelles proprits de l'association cette relation.

Michel Dubois

UML pour les bases de donnes- p. 189

RGLES DE PASSAGE DEPUIS UN MODLE ENTIT-ASSOCIATION VERS UN SCHMA RELATIONNEL


REGLE n3 N:M (cas de la dimension 2 plusieurs plusieurs) :

Michel Dubois

UML pour les bases de donnes- p. 190

RGLES DE PASSAGE DEPUIS UN MODLE ENTIT-ASSOCIATION VERS UN SCHMA RELATIONNEL


REGLE n3 N:M (cas de la dimension 3 non dcomposable) :

Michel Dubois

UML pour les bases de donnes- p. 191

ASSOCIATION 1:1 -> (1,1)-(1,1) Une telle association peut se rduire une seule entit. La rgle n1 s applique. Des vues peuvent reconstituer les deux relations.
Pret num pret montant
1,1

sur

Gage
1,1

num_gage entrepot

PRETGAGE num pret sur gage entrepot montant


Michel Dubois UML pour les bases de donnes- p. 192

ASSOCIATION 1:1 -> (1)-(1) Une telle association peut se rduire une seule classe. La rgle n1 s applique. Des vues peuvent reconstituer les deux relations.

Michel Dubois

UML pour les bases de donnes- p. 193

ASSOCIATION 1:1 -> (1,1)-(1,1)


Pret num pret montant
1,1

sur

Gage
1,1

num_gage entrepot

PRETGAGE num pret sur gage entrepot montant

Toutes les df sont intra-relations et ne posent pas de problme de contraintes supplmentaires. PRETGAGE
NUM_PRET_SUR_GAGE ENTREPOT MONTANT
Michel Dubois

UML pour les bases de donnes- p. 194

ASSOCIATION 1:N -> (1,1)-(0,N) La rgle n2 s applique.

PERSONNE nom prenom Adresse


0,n

Posseder

MAISON
1,1

Coordonnees date construction surface

Michel Dubois

UML pour les bases de donnes- p. 195

ASSOCIATION 1:N -> (1)-(0,*) La rgle n2 s applique.

Michel Dubois

UML pour les bases de donnes- p. 196

ASSOCIATION 1:N -> (1,1)-(0,N)


PERSONNE nom prenom Adresse
0,n

Posseder

MAISON
1,1

Coordonnees date construction surface

PERSONNE NOM PRENOM ADRESSE

MAISON COORDONNEES NOM DATE_CONSTRUCTION SURFACE

df forte partielle

MAISON PERSONNE MAISON.#NOM est obligatoire MAISON.#NOM est unique


Michel Dubois UML pour les bases de donnes- p. 197

ASSOCIATION 1:N -> (1,1)-(1,N) La rgle n2 s applique. Une contrainte de dpendance fonctionnelle totale :
CONTRAT.num_contrat ->(T) SOCIETE.num_societe Toute socit est associ un contrat. Donc l ensemble des socits prsent dans la table contrat est gal l ensemble des socits de la table socit.
CONTRAT[num_societe]=SOCIETE[num_societe] <=> CONTRAT[num_societe]SOCIETE[num_societe]:cl trangre et CONTRAT[num_societe]SOCIETE[num_societe]
CONTRAT num contrat
Michel Dubois

1,1

passe

1,n

SOCIETE num societe

UML pour les bases de donnes- p. 198

ASSOCIATION 1:N -> (1,1)-(1,*)


La rgle n2 s applique. Une contrainte de dpendance fonctionnelle totale : CONTRAT.NumContrat ->(T) SOCIETE.NumSociete Toute socit est associ un contrat. Donc lensemble des socits prsent dans la table contrat est gal lensemble des socits de la table socit.
CONTRAT[NumSociete]=SOCIETE[NumSociete] <=> CONTRAT[NumSociete]SOCIETE[NumSociete]:cl trangre et CONTRAT[NumSociete]SOCIETE[NumSociete]

Michel Dubois

UML pour les bases de donnes- p. 199

ASSOCIATION 1:N -> (1,1)-(1,N)


CONTRAT num contrat
1,1

passe

1,n

SOCIETE num societe

CONTRAT
CONTRAT NUM_CONTRAT NUM_SOCIETE passe

SOCIETE (T)
SOCIETE (T) NUM_SOCIETE

CONTRAT.num_societe est obligatoire CONTRAT.num_societe est unique SOCIETE[num_societe] CONTRAT[num_societe]


Michel Dubois UML pour les bases de donnes- p. 200

ASSOCIATION 1:N -> (0,1)-(0,N) La rgle n2 s applique.

PERSONNE nom prenom Adresse


0,n

Posseder date acquisition

VOITURE
0,1

Num immatriculation marque type

Michel Dubois

UML pour les bases de donnes- p. 201

ASSOCIATION 1:N -> (0,1)-(0,*) La rgle n2 s applique.

Michel Dubois

UML pour les bases de donnes- p. 202

ASSOCIATION 1:N -> (0,1)-(0,N)


PERSONNE nom prenom Adresse
0,n

Posseder date acquisition

VOITURE
0,1

Num immatriculation marque type

PERSONNE NOM PRENOM ADRESSE

VOITURE NUM_IMMATRICULATION NOM MARQUE TYPE DATE_ACQUISITION

Posseder

Michel Dubois

UML pour les bases de donnes- p. 203

ASSOCIATION 1:1 -> (1,1)-(0,1) La rgle n2 s applique qu une seule fois. On va privilgier la dpendance fonctionnelle forte.
EDIFICE num_edifice type
0,1

est un

MAISON
1,1

num maison adresse

Michel Dubois

UML pour les bases de donnes- p. 204

ASSOCIATION 1:1 -> (1,1)-(0,1)


EDIFICE num_edifice type
0,1

est un

MAISON
1,1

num maison adresse

EDIFICE NUM_EDIFICE TYPE est un

MAISON NUM_MAISON NUM_EDIFICE ADRESSE

MAISON.NUM_EDIFICE est obligatoire. MAISON.NUM_EDIFICE n accepte pas de doublon.


Michel Dubois UML pour les bases de donnes- p. 205

ASSOCIATION 1:1 -> (0,1)-(0,1) La rgle n2 s applique qu une seule fois. On va privilgier un sens (au choix)
ENTREPRISE SIRET entreprise adresse
0,1

correspondre

TIERS
0,1

num tiers type

Michel Dubois

UML pour les bases de donnes- p. 206

ASSOCIATION 1:1 -> (0,1)-(0,1)


ENTREPRISE SIRET entreprise adresse
0,1

correspondre

TIERS
0,1

num tiers type

ENTREPRISE SIRET_ENTREPRISE ADRESSE correspondre

TIERS NUM_TIERS SIRET_ENTREPRISE TYPE

TIERS.SIRET_ENTREPRISE n accepte pas de doublon

Michel Dubois

UML pour les bases de donnes- p. 207

ASSOCIATION N:M -> (X,N)-(X,N) La rgle n3 s applique.


COMMANDE num commande date commande status
1,n

ARTICLE Porter quantite


0,n

num article designation quantite stock prix

Michel Dubois

UML pour les bases de donnes- p. 208

ASSOCIATION N:M -> (X,N)-(X,N)

COMMANDE num commande date commande status


1,n

ARTICLE Porter quantite


0,n

num article designation quantite stock prix

COMMANDE NUM_COMMANDE DATE_COMMANDE STATUS PORTER NUM_COMMANDE NUM_ARTICLE QUANTITE

ARTICLE NUM_ARTICLE DESIGNATION QUANTITE_STOCK PRIX

Michel Dubois

UML pour les bases de donnes- p. 209

ASSOCIATION N:M -> (1,N)-(0,N)


La rgle n3 s applique. Mais il y a aussi une contrainte de dpendance fonctionnelle totale :
Porter.num_commande->(T)Commande.num_commande Toute commande de la relation commande se retrouve dans la relation porter.

COMMANDE[num_commande]=PORTER[num_commande] <=>PORTER[num_commande]COMMANDE[num_commande] : FK et COMMANDE[num_commande] PORTER[num_commande] On teste :


COMMANDE [num_commande] - PORTER[num_commande] = ...WHERE NOT EXISTS ( SELECT num_commande FROM commande MINUS SELECT num_commande FROM porter)
COMMANDE num commande date commande status
1,n

ARTICLE Porter quantite


0,n

Michel Dubois

num article designation quantite stock UML pour les bases de donnes- p. 210 prix

ASSOCIATION N:M -> (1,N)-(0,N)

COMMANDE num commande date commande status


1,n

ARTICLE Porter quantite


0,n

num article designation quantite stock prix

COMMANDE NUM_COMMANDE DATE_COMMANDE STATUS PORTER NUM_COMMANDE NUM_ARTICLE QUANTITE

ARTICLE NUM_ARTICLE DESIGNATION QUANTITE_STOCK PRIX

Michel Dubois

UML pour les bases de donnes- p. 211

ASSOCIATION N-AIRE La rgle n3 s applique.


MAISON Coordonnees date construction surface Realiser
0,n

ENTREPRISE date realisation montant


0,n 0,n

SIRET entreprise raison sociale adresse

TYPE TRAVAUX num travaux designation


Michel Dubois UML pour les bases de donnes- p. 212

ASSOCIATION N-AIRE
MAISON Coordonnees date construction surface Realiser
0,n

ENTREPRISE date realisation montant


0,n 0,n

SIRET entreprise raison sociale adresse

TYPE TRAVAUX num travaux designation


MAISON COORDONNEES DATE_CONSTRUCTION SURFACE REALISER NUM_TRAVAUX SIRET_ENTREPRISE COORDONNEES DATE_REALISATION MONTANT ENTREPRISE SIRET_ENTREPRISE RAISON_SOCIALE ADRESSE

TYPE_TRAVAUX NUM_TRAVAUX DESIGNATION

Michel Dubois

UML pour les bases de donnes- p. 213

ASSOCIATION 1:N REFLEXIVE La rgle n2 s applique.


TACHE num tache designation duree
0,1 suit

Preceder

0,n precede

Michel Dubois

UML pour les bases de donnes- p. 214

ASSOCIATION 1:N REFLEXIVE


TACHE num tache designation duree
0,1 suit

Preceder

0,n precede

TACHE NUM_TACHE NUM_TACHE_PRECEDE DESIGNATION Preceder DUREE

Michel Dubois

UML pour les bases de donnes- p. 215

ASSOCIATION N:M REFLEXIVE La rgle n3 s applique.


0,n pere/mere

PERSONNE num personne nom

est parent de

0,2 enfant

Michel Dubois

UML pour les bases de donnes- p. 216

ASSOCIATION N:M REFLEXIVE


0,n pere/mere

PERSONNE num personne nom

est parent de

0,2 enfant

PERSONNE NUM_PERSONNE NOM

enfant

EST_PARENT_DE NUM_PERSONNE NUM_PERSONNE_PERE_MERE

pere/mere

Michel Dubois

UML pour les bases de donnes- p. 217

Contrainte de partition
0,1 Pilote numpil nom grade 0,1 P opration dtachement Mission sanitaire 1,n codemsan organisme Mission entranement codement 1,n date rgion

Pilote (numPilote, nom, grade) MissionSanitaire(codemsan, organisme) MissionEntranement (codement, date, rgion) Dtachement (#numpilote, #codemsan) Opration (#numpilote, #codement) Pilote[numPilote] Dtachement[numPilote] Opration[numPilote] Opration[numPilote] Dtachement[numPilote] =
UML pour les bases de donnes- p. 218

Contrainte d exclusion
0,1 Pilote numpil nom grade 0,1 opration Mission entranement codement 1,n date rgion dtachement Mission sanitaire 1,n codemsan organisme

Pilote (numPilote, nom, grade) MissionSanitaire(codemsan, organisme) MissionEntranement (codement, date, rgion) Dtachement (#numpilote, #codemsan) Opration (#numpilote, #codement) Opration[numPilote] Dtachement[numPilote] =
UML pour les bases de donnes- p. 219

Contrainte de totalit
0,1 Pilote numpil nom grade 0,1 T opration dtachement Mission sanitaire 1,n codemsan organisme Mission entranement codement 1,n date rgion

Pilote (numPilote, nom, grade) MissionSanitaire(codemsan, organisme) MissionEntranement (codement, date, rgion) Dtachement (#numpilote, #codemsan) Opration (#numpilote, #codement) Pilote[numPilote] Opration[numPilote] Dtachement[numPilote]
UML pour les bases de donnes- p. 220

Contrainte de simultanit
0,1 Pilote numpil nom grade 0,1 S opration dtachement Mission sanitaire 1,n codemsan organisme Mission entranement codement 1,n date rgion

Pilote (numPilote, nom, grade) MissionSanitaire(codemsan, organisme) MissionEntranement (codement, date, rgion) Dtachement (#numpilote, #codemsan) Opration (#numpilote, #codement) Opration[numPilote] = Dtachement[numPilote]
UML pour les bases de donnes- p. 221

Contrainte d inclusion
1,1 Etudiant 1,n noinscrip nom effectue I voeux 0,1 Stage numstage theme responsable 0,n

Etudiant (noinscrip, nom, #numstage) Stage(numstage, theme, responsable) Voeux (noinscrip, numstage) Etudiant[noinscrip, numstage] Voeux

Elisabeth Le Saux

SGBD - Conception p.222

UML pour les bases de donnes- p. 222

Hritage
Vhicule immatriculation PTAC

Voiture NbPlaces

Camion nbEssieux

Vhicule (immatriculation , PTAC, type obligatoire) Voiture (#immatriculation, nbPlaces) Camion (#immatriculation, nbEssieux)

UML pour les bases de donnes- p. 223

Contraintes d hritage
Partition : Vhicule[immatriculation] Voiture[immatriculation] Camion[Immatriculation] Voiture[immatriculation] Camion[Immatriculation] = Totalit : Vhicule[immatriculation] Voiture[immatriculation] Camion[Immatriculation] Exclusion Voiture[immatriculation] Camion[Immatriculation] =

UML pour les bases de donnes- p. 224

Agrgation UML
Alors que lagrgation partage de UML se traduit au niveau logique comme une simple association, il nen est pas de mme pour la composition. Lexemple dcrit le schma relationnel dduit dune composition (on suppose que lattribut a identifie la classe composante et que lattribut c identifie la classe composite). La cl primaire des relations dduites des classes composantes doit contenir lidentifiant de la classe composite (quelles que soient les multiplicits).

Michel Dubois

UML pour les bases de donnes- p. 225

Agrgation & relations


L'agrgation est une forme qui permet d'abstraire la complexit d'un objet en cachant sa composition en d'autres objets. Elle permet de dfinir des structures d'objets complexes. Elle permet de voir les choses diffrents niveaux de dtail. (hirerchie d'agrgation). L'agrgation dans le modle relationnel s'appuie sur la notion de cl. Une cl est un attribut ou un groupe d'attribut qui identifie chaque nuplet de manire unique.Toute relation doit avoir une cl. Les cls servent a tablir des liens entre relation. L'agrgation telle que propose dans le modle relationnel consiste attacher des attributs une table. La cl d'une relation composite devient cl trangre de la relation compose et partie de cl primaire. L'imbrication des structures ne peut alors se faire que par jointure de tables
Michel Dubois UML pour les bases de donnes- p. 226

Hritage & relations


Le modle relationnel ne contient pas la forme d'abstraction Gnralisation/Spcialisation. Elle n'est pas remplaable -sans perte de smantique - par une forme agrgative quelle qu'elle soit. problme une entit gnrique et une entit spcifique sont 2 niveaux d'abstraction d'une mme entit. On recommande de rflchir dans chaque cas une solution spcifique. Tentatives de traductions : 1G, 2S creation de tables pour G&S avec les attributs spcifiques dans S creation de tables G&S avec les attributs communs et spcifiques ds S creation uniquement de S creation uniquement d'une table avec des vues. Lien G & S : mme cycle de vie.
Michel Dubois UML pour les bases de donnes- p. 227

Transformation du MCD en MLD relationnel


Un exemple
1,1

Intrimaire
code intrimaire,

1,n

1,n

Priode
num_priode,

grer

planifier
lieu_intervention

Agence
1,n code_agence,

Contrat
1,n

num_contrat,

UML pour les bases de donnes- p. 228

Le MLD relationnel qui en dcoule

Transformation du MCD en MLD relationnel

Entits Agence(codeA, nomA, rueA, villeA) Contrat(num_contrat, caractristiques) Intrimaire(codeI, nomI, rueI, villeI, #codeA) Priode(num_priode, ) Associations Planning (#codeI, #num_contrat, #num_priode, lieu_intervention) L association grer n apparat pas directement : la cl trangre codeA dans intrimaire la remplace
UML pour les bases de donnes- p. 229

Transformation du MCD en MLD relationnel


Location
Num_loc, date_resa Nb_places, montant Date_reglt 1,1 CIF CIF 1,n DF 1,n

Spectateur
Num_spec, nomS CIF 1,n

Reprsentation
Num_rep, dateR, heureR 1,n

Point de vente
Num_point, rueP, villeP, 1,n priode_ouverture Se drouler Nb_places_reste 1,n

Spectacle
Num_spectacle, titre valuer tarif

DF 1,n

Salle
Num_salle, capacit

Catgorie
Num_categ, 1,n nomC
UML pour les bases de donnes- p. 230

Chapitre 7

Autres formalismes pour AGL base de donnes


Michel Dubois
I.U.T. de Vannes
Michel.Dubois@univ-ubs.fr

Michel Dubois

UML pour les bases de donnes- p. 231

Formalisme de P. CHEN
Linterprtation des cardinalits constitue la diffrence fondamentale entre le formalisme du modle de P. Chen et le MCD de Merise. Les cardinalits dune association binaire dans le modle de Chen et de Merise sont inverses au niveau de laxe de reprsentation de lassociation. Les cardinalits dune association binaire dans le modle de Chen et dans le formalisme UML sont positionnes de faon identique. Le problme de lapproche de P. Chen rside dans son manque de cohrence entre la reprsentation des associations binaires et des associations n-aires. La majorit des outils de conception amricains nont pas suivi cette vision des choses car ils ont t incapables de programmer ce concept (mme le produit Designer dOracle). Ces outils modlisent les associations n-aires en dfinissant n+1 entit(s), dont n sont relies une seule par des associations binaires un-plusieurs.

Michel Dubois

UML pour les bases de donnes- p. 232

TYPES DE CONTRAINTES D'INTGRITS RFRENTIELLES Contraintes 1 plusieurs ( ) : La cl primaire (ct 1) ne peut contenir de doublons. La cl trangre (ct ) peut quand elle contenir des valeurs en double pour peu qu'elles existent dans la cl primaire associe. Contraintes 1 1 : Ces contraintes sont plus rares et correspondent au cas o la cl trangre ne peut contenir de doublons.
UML pour les bases de donnes- p. 233

TYPES DE CONTRAINTES D'INTGRITS RFRENTIELLES Reprsentations d'un schma de tables avec des contraintes d'intgrit rfrentielles dans le cadre d'une base de donnes mmorisant l'Etat Civil.
Table Personne
N INSEE Nom Prnom Date de naissance Lieu de naissance Date dcs Lieu dcs

NINSEE poux N INSEE pouse mariage Datemariage Lieu


1

Table Mariage

Table Personne
N INSEE Nom Prnom Date de naissance Lieu de naissance Date dcs Lieu dcs N INSEE Pre N INSEE Mre

Date jugement de divorce Lieu jugement de divorce

Table Mariage
N INSEE poux N INSEE pouse Date mariage Lieu mariage Date jugement de divorce Lieu jugement de divorce

Table Enfants
N INSEE Enfant N INSEE pre N INSEE mre

UML pour les bases de donnes- p. 234

AUTRES NOTATIONS DE TYPES DE CONTRAINTES D'INTGRITS RFRENTIELLES


La notation prcdente est prsente dans le logiciel MS ACCESS. Il existe dautres notations qui sont prsentes dans les logiciels de conception des bases de donnes (DB DESIGNER 4) ou dans Business Object: Notation Arit Exemple Description Une patte d'oie indique l'extrmit "plusieurs" de la jointure. Elle correspond dans Microsoft Access. L'extrmit plusieurs correspond la prsence de doublons au niveau de la cl trangre. Si la cardinalit (max,max) est (1,1), une ligne droite s'affiche. La cl trangre naccepte pas de doublon. La cardinalit est reprsente sous la forme d'un ratio chaque extrmit de la jointure. Le n se trouve sur lautre extrmit que le . Les multiplicits sont inverss par rapport MERISE.

Cardinalite MERISE 1,N Multiplicit UML, OMT 1..*

UML pour les bases de donnes- p. 235

MySQL WORKBENCH

UML pour les bases de donnes- p. 236

Barker's Notation

Michel Dubois

La notation Barker se rfre la notation ERD dvelopp par Richard Barker, Ian Palmer, Harry Ellis et al. tout en travaillant la socit britannique de consultants CACI autour de 1986. La notation a t adopt par Barker quand il a rejoint Oracle et est effectivement dfinie, dans son livre CASE Method: Entity Relationship Modelling en 1990 puis utilise dans la srie de ses livres sur sa mthode de modlisation nomme CASE. Cette notation a t et est encore utilise par les outils de modlisation Oracle. Il s'agit d'une variation du style de modlisation de donnes en patte doie qui a t initie par Chen puis plbiscite en raison de sa lisibilit et l'utilisation efficace de l'espace dessin. Les associations entre entits sont binaires ; les cardinalits sont reprsentes graphiquement. Les entits peuvent tre spcialises ou gnralises sous forme de SubType et Super-Type. Oracle utilise la notion darc pour modliser une restriction dassociations (exclusion mutuelle ou une contrainte de Ou-exclusif). Pour remplacer les associations de degr n:n, il y a des entits associatives ; les entits associatives sont des entits dpendantes, identifies par deux parents ou plus. Une entit associative peut tre dote dattributs et tre, son tour, associe toute autre UML pour les bases de donnes- p. 237 entit.

Barker's Notation
Lorsquune association est identifiante, elle est non transfrable pour respecter la rgle de stabilit de cl primaire. la non transfrabilit de lassociation entre CLIENT et COMMANDE, reprsente par un losange; cette non transfrabilit spcifie que lorsquune commande est cre et attribue un client, elle ne peut plus tre attribue ou transfre un autre client. Ceci implique que si un utilisateur se trompe de client lors de ltablissement dune commande, il devra dtruire la commande errone et en rcrer une nouvelle en lui attribuant le client correct. lassociation identifiante entre COMMANDE et LIGNECOMMANDE, reprsente par un trait perpendiculaire lassociation ; lassociation identifiante spcifie que les lignes de commandes seront identifies par lidentifiant de la commande et par un identifiant de ligne tout comme un enfant est identifi par le nom de famille des parents et son prnom.

les rles jous par les 2 entits participant lassociation ; la cardinalit minimale de 0, reprsente par un trait till, pour le rle ComposeeDe de lentit CATEGORIE ; la cardinalit maximale de n, reprsente par une patte doie sur le rle oppos, pour le rle ComposeeDe de lentit CATEGORIE ; la cardinalit minimale de 1, reprsente par un trait plein, pour le rle AppartientA de lentit PRODUIT ; la cardinalit maximale de 1, reprsente par une absence de patte doie sur le rle oppos, pour le rle AppartientA de lentit PRODUIT. .
Michel Dubois

UML pour les bases de donnes- p. 238

Oracle SQL Developer Data Modeler


Oracle SQL Developer Data Modeler permet de crer, importer ou exporter des modles entit-Association (Entity Relationship Diagrams), des modles relationnels (SGBD), mais aussi des structures de donnes au format DDL (Data Definition Langage). L'outil ne se limite pas au seul support de la base Oracle mais s'interface aussi aux Le niveau conceptuel (Logical dictionnaires de donnes de DB2 et Modeling) utilise les notations SQL Server. Il supporte aussi Bachman / Barker et prend en compte l'importation de catalogue (reverse du OU EXCLUSIF et de l'hritage. engineering) depuis toute base Un "relational model" correspond un compatible JDBC/ODBC ainsi que modle logique ou relationnel. l'importation de fichiers XML gnrs par CA ERwin Data Modeler 4.X et de Un "physical model" correspond un fichiers .VAR (Bachman Enterprise modle physique ORACLE, IBM Model).Dubois DB2, MYSQL, MS SQL SERVER. Michel
UML pour les bases de donnes- p. 239

JDBC & Oracle 10g


Fichier bat : @echo off if "%OS%" == "Windows_NT" setlocal set ORALIB=... CLASSPATH=$CLASSPATH:$ORALIB/ojdbcl4.jar:$ORALIB/orai18n.jar:$ORALIB/oc rs12.zip
set TNS_ADMIN=C:\oracle\product\10.2.0\client_1\network\admin set JAVA_PARAMS=-Xms512M -Xmx512M @echo on java %JAVA_PARAMS% Djava.library.path=G:\vannes\prof\lcsd01\MD\win32\instantclient_10_2 -jar G:\vannes\prof\lcsd01\MD\lib\mapbuilder.jar :end

Le pilote JDBC THIN 10g ne supporte pas lauthentification radius contrairement au pilote OCI et aux pilotes 11g OCI/THIN. Le fichier SQLNET.ORA du rpertoire point par la variable denvironnement TNS_ADMIN contient : sqlnet.authentification.services= radius

LURL complte JDBC est :

A lUBS, il faut utiliser le pilote OCI, le serveur Oracle 10g utilisant lauthentification radius : java.util.Properties props = new java.util.Properties(); props.setProperty("sqlnet.authentification.services", "radius"); props.setProperty("user","e0602180"); props.setProperty("password","1234"); String url="jdbc:oracle:oci:" +"@oraetud.univ-ubs.fr:1521:ORAETUD"; conn = DriverManager.getConnection(url,props);
UML pour les bases de donnes- p. 240

jdbc:oracle:oci:e0602180/1234@oraetud.univ-ubs.fr:1521:ORAETUD

PowerAMC AGL UML base de donnes


PowerAMC (anciennement AMC*Designor) est la version franaise de loutil de modlisation PowerDesigner de Sybase. Concernant les bases de donnes, loutil prend en charge trois types de modles quon peut transformer entre eux :
le modle conceptuel de donnes (MCD) quon pourra construire avec la notation Merise, entit-relation ou IDEF1X ; le modle physique de donnes (MPD) qui correspond au niveau logique ; le modle orient objet (MOO) au formalisme UML.

Quelques points forts sont mettre en exergue : un grand choix de SGBD est pris en compte, la robustesse et la qualit de lergonomie qui permet de travailler facilement avec diffrents diagrammes dans le mme environnement. Les seuls points faibles se rduisent la nonprise en compte des contraintes et des associations n-aires avec la notation UML.
Michel Dubois UML pour les bases de donnes- p. 241

PowerAMC AGL UML base de donnes

Michel Dubois

UML pour les bases de donnes- p. 242

WinDesign AGL UML base de donnes


WinDesign est le produit de la socit CECIMA base Aix en Provence. Il est prsent sur le march franais depuis 1995. Dvelopp initialement pour Merise/2, la notation UML arrive en 2002 avec la version 5. Depuis loutil est en volution constante. La Gamme comprend quatre modules autonomes et complmentaires, qui sarticulent autour dun rfrentiel (Database pour la conception et le reverse des bases de donnes, Business Process pour la modlisation des processus mtier, Object pour la modlisation UML et UserInterface pour le maquettage des IHM). Vous devrez disposer du premier et du troisime module pour traduire des diagrammes de classes en script SQL. Comme PowerAMC, loutil permet la double notation Merise/2 et UML 2 (sans le mode mixte de PowerAMC qui peut porter confusion). Cet outil est le plus complet en ce qui concerne les contraintes Merise/2. WinDesign est probablement loutil le plus facile prendre en main et son interface est trs intuitive. Il est le seul traiter correctement la transformation des associations n-aires et quavec PowerAMC et Rational, il est capable dextraire un modle conceptuel sans connexion la base ( partir du seul script SQL de cration UML pour les bases de donnes- p. 243 desMichel Duboiset contraintes). tables

WinDesign AGL UML base de donnes

Michel Dubois

UML pour les bases de donnes- p. 244

BOUML AGL UML


BOUML est une suite d'outils UML 2 libres et gratuits dont un modeleur, vous permettant de spcifier et gnrer du code C++, Java, Idl, Php et Python. BOUML est disponible sous Unix/Linux/Solaris, MacOS X (Power PC et Intel) et Windows. Gnrateur XMI 1.2 et 2.1 Import XMI 2.1

Michel Dubois

UML pour les bases de donnes- p. 245

Chapitre 8 Rappels sur la conception des bases de donnes : Modlisation directe


Michel Dubois
I.U.T. de Vannes
Michel.Dubois@univ-ubs.fr
Michel Dubois

UML pour les bases de donnes- p. 246

DEMARCHE

monde rel

PERCEPTION

DIRECTE

MODELISATION CONCEPTUELLE

DICTIONNAIRE DES DONNEES GRAPHES DES DEPENDANCES FONCTIONNELLE OU NORMALISATION A PARTIR DE LA RELATION UNIVERSELLE

Numro d'immatriculation

Marque

Modle

Couleur

Nationalit du constructeur

Puissance

MODELISATION LOGIQUE

ACTEUR (no-acteur, ...) FILM (no-film, ...) JOUER (no-acteur, no-film)

UTILISATION D'UN SGBDR Create Table ACTEUR... Create Index...

Michel Dubois

BASE DE DONNEES

UML pour les bases de donnes- p. 247

TERMINOLOGIE table relation enregistrement occurrence ligne de table n-uplet tuple champ attribut colonne de table donne intention d une relation schma d une relation extension d une relation contenu d une relation
Michel Dubois UML pour les bases de donnes- p. 248

APPLICATION : TABLE PERSONNE.


Exemple - Soit une relation dcrivant les caractristiques d'une personne : PERSONNE( Numro S.S. : entier ; Nom : texte ; Prnom : texte ; Adresse : texte) Une relation peut galement tre reprsente "en extension" sous la forme de table.
Numro S.S. 1700575124210 1610930178125 1821113145312 NOM Martin Durand Dupont Prnom Adresse Pierre Paul 10 rue des fleurs ... 2 Place des Lilas ...

Jacques 3 Bd des marchaux ...

Michel Dubois

UML pour les bases de donnes- p. 249

CONTRAINTES DU MODLE RELATIONNEL


Chaque enregistrement mmorise le mme nombre de faits Numro S.S., Nom, Prnom, Adresse. Chaque attribut contient le mme type de faits sur chaque ligne et chacun de ces faits satisfait la dfinition de son domaine. Il ne peut y avoir qu'une seule valeur l'intersection de chaque ligne et de chaque colonne. Ainsi, le premier individu (Pierre Martin) ne peut avoir qu'une seule adresse (10 rue des fleurs). Si on devait mmoriser en outre une rsidence secondaire, nous serions obligs de rajouter un nouvel attribut la table.
Michel Dubois UML pour les bases de donnes- p. 250

CONTRAINTES DU MODLE RELATIONNEL


Il ne peut exister deux enregistrements exactement identiques, ce qui implique que l'ordre des lignes est sans importance. Deux attributs ne peuvent se partager le mme nom, ce qui a pour consquence que l'ordre d'apparition des attributs est galement sans importance. Pour accder un attribut d'une table, il suffit de connatre son nom et non sa position. Une base de donnes contiendra gnralement plusieurs tables. Dans cet ensemble, chaque table sera identifie par un nom unique.
Michel Dubois UML pour les bases de donnes- p. 251

DD DE LA BASE LOCATION DE VOITURE


CODE NUM_IMMA

MARQUE MODELE COULEUR

LIBELLE Numro d'immatriculation Marque

Modle Couleur du vhicule

NATURE Non calcule / saisie Non calcule / saisie Non calcule / saisie Non calcule / saisie

CATEGORIE Stable

Stable Stable Evolutive

NAT_CONS PUISSANCE

Nationalit du constructeur Puissance du moteur

Non calcule Stable / saisie Non calcule Stable / saisie

DOMAINE COMMENTAIRE texte[20] Identifiant de voiture obligatoire Texte[30] obligatoire Texte[30] obligatoire Texte[10] dans ( Bleu , Rouge , Vert , Noire ) texte[20] obligatoire Numrique Obligatoire

Michel Dubois

UML pour les bases de donnes- p. 252

ANOMALIES DE MANIPULATION
Table Location de voitures par des clients NClient 01 01 02 02 02 03 Nom Client Prnom Client N Immatriculation Martin Martin Durand Durand Durand Dupont Pierre Pierre Paul Paul Paul Jacques 91253 ABC 75 56465 CDE 78 91253 ABC 75 1256 DCE 75 8953 XY 56 56465 CDE 78 Marque voiture Modle voiture Date de location Renault FIAT Renault GMC Mercedes FIAT Twingo S Panda AM 96 Twingo S S 280 D 250 Panda AM 96 05/01/1997 04/03/1997 15/02/1997 25/02/1997 16/04/1997 12/06/1997 Nb jours de location 1 3 2 4 5 2

On ne peut ajouter un vhicule la base que s'il est lou par un client. La suppression de l'unique location d'un vhicule peut entraner la disparition des informations le concernant. La redondance sur la Fiat Panda AM 96 peut poser des problmes de cohrence.
Michel Dubois UML pour les bases de donnes- p. 253

ANOMALIES DE MANIPULATION
Table Voitures Numro d'immatriculation 91253 ABC 75 56465 CDE 78 132 YZ 01 1256 DCE 75 8953 XY 56 4565 TD 34 7897 BDE 75 2536 BRF 91 Marque Renault FIAT Mercedes GMC Mercedes FIAT Renault Mercedes Modle Twingo S Panda AM 96 S 280 S 280 D 250 Punto Twingo S S 280 Puissance 6 CV 5 CV 12 CV 8 CV 10 CV 6 CV 6 CV 12 CV Nationalit du constructeur Franaise Italienne Allemande Amricaine Allemande Italienne Franaise Allemande Couleur Bleu Rouge Gris mtallis Azur Rouge Noir Beige Bleu

On ne peut introduire le fait que la nationalit dpend de la marque. La suppression de 1256DCE 75 entrane la perte d'information disant que G M C est une compagnie amricaine. La fusion de constructeurs automobiles peut entraner un changement de nationalit. Cohrence!
Michel Dubois UML pour les bases de donnes- p. 254

LA NOTION DE DPENDANCE FONCTIONNELLE


On dit qu'un attribut ou un groupe d'attributs B dpend fonctionnellement d'un attribut ou d'un groupe d'attributs A si tout instant, chaque valeur de A n'a qu'une valeur associe B. A est alors appel la source de la dpendance fonctionnelle et B le but de la dpendance fonctionnelle. On note cette dpendance fonctionnelle : AB AB peut se lire de deux manires quivalentes : A dtermine B B dpend de A Quand on connat A, on connat aussi B ! Pour A connu, B peut tre manquant dans le cas d une DF faible.
Michel Dubois UML pour les bases de donnes- p. 255

APPLICATION : TABLE PERSONNE.


Exemple - Soit une relation dcrivant les caractristiques d'une personne : PERSONNE( Numro S.S. : entier ; Nom : texte ; Prnom : texte ; Adresse : texte) Une relation peut galement tre reprsente "en extension" sous la forme de table.
Numro S.S. 1700575124210 1610930178125 1821113145312 NOM Martin Durand Dupont Prnom Adresse Pierre Paul 10 rue des fleurs ... 2 Place des Lilas ...

Jacques 3 Bd des marchaux ...

Michel Dubois

UML pour les bases de donnes- p. 256

DF DE L EXEMPLE
NUMERO S.S. NUMERO S.S. NUMERO S.S., NOM NUMERO S.S., NOM NUMERO S.S., PRENOM NUMERO S.S., PRENOM NUMERO S.S., ADRESSE NUMERO S.S., ADRESSE NUMERO S.S., NOM, PRENOM NUMERO S.S., NOM, ADRESSE NUMERO S.S., PRENOM, ADRESSE
Michel Dubois

PRENOM ADRESSE PRENOM ADRESSE NOM ADRESSE NOM PRENOM ADRESSE PRENOM NOM
UML pour les bases de donnes- p. 257

PAR CONTRE CES DF SONT FAUSSES ...


NOM PRENOM ADRESSE NOM PRENOM ADRESSE NOM PRENOM ADRESSE NOM, PRENOM NOM, PRENOM, ADRESSE
Michel Dubois

/ / / / / / / / / / /

NUMERO S.S. NUMERO S.S. NUMERO S.S. PRENOM NOM NOM ADRESSE ADRESSE PRENOM NUMERO S.S. NUMERO S.S.
UML pour les bases de donnes- p. 258

DEFINITION : DEPENDANCE FONCTIONNELLE


Soit U l ensemble des attributs du domaine tudi, Soit V un sous ensemble de U : V U, Soit R(V) un schma de relation, r une relation de schma R, X V, Y V deux sous-ensembles d'attributs de R. La dpendance fonctionnelle X Y est vrai dans r, ssi (si et seulement si) tous les nuplets de r qui ont mme valeur pour (tous) les attributs de X, ont mme valeur pour (tous) les attributs de Y.
Michel Dubois UML pour les bases de donnes- p. 259

DEFINITION : DEPENDANCE FONCTIONNELLE


tous les nuplets de r qui ont mme valeur pour (tous) les attributs de X, ont mme valeur pour (tous) les attributs de Y
LIVRAISON(no-bon, ref-art, date-bon, libell-art, qt-art, code-famille, libell-famille) F={no-bon date-bon, ref-art libell-art, code-famille libell-famille}

LIVRAISON
no-bon 10 10 18 ... date-bon 20-04-94 20-04-94 25-04-94 ... ref-art SDF0875 RMI7543 RMI7543 ... libell-art Poupe Barbie Monopoly Monopoly ... qt-art 200 250 20 ... code-famille JF JS JS ... libell-famille jouets filles jeu de socit jeu de socit ...

Michel Dubois

UML pour les bases de donnes- p. 260

ENSEMBLE DE DF
Soit U l ensemble des attributs du domaine tudi, Soit V un sous ensemble de U : V U, Soit R(V) un schma de relation, Soit r une relation de schma R, Soit F un ensemble de dpendances fonctionnelles qui sont vraies dans r, On dit qu'un ensemble F de dpendances fonctionnelles implique logiquement la dpendance fonctionnelle X Y si et seulement si tout contenu de r vrifiant F vrifie aussi X Y. On note F X Y Exemple : R(A,B,C) et F={A B,B C} alors F A C
Michel Dubois UML pour les bases de donnes- p. 261

FERMETURE DUN ENSEMBLE DE DF


La fermeture ou clture ou couverture F+ d'un ensemble F de dpendances fonctionnelles est l union de F et de l'ensemble des dpendances fonctionnelles logiquement impliques par F. Il existe des proprits des dpendances fonctionnelles qui permettent de dterminer F+. Deux ensembles de dpendances fonctionnelles F et G sont quivalents si F+=G+. Un ensemble de DF peut tre plus facile manipuler quun autre.
Michel Dubois UML pour les bases de donnes- p. 262

PROPRITS DES DPENDANCES FONCTIONNELLES


Ce sont les Axiomes d'ARMSTRONG :
Reflexivit Augmentation Transitivit Union, dcomposition et pseudo-transitivit peuvent tre dduites des autres axiomes.

Ces axiomes permettent de dterminer les dpendances fonctionnelles logiquement impliques par d autres.
Michel Dubois UML pour les bases de donnes- p. 263

LA TABLE VOITURE
Numro d'immatriculation 91253 ABC 75 56465 CDE 78 3456 FGR 75 132 YZ 01 1256 DCE 75 8953 XY 56 Marque Renault FIAT GMC Mercedes GMC Mercedes VOITURE Modle Puissance Nationalit du constructeur Twingo S 6 CV Franaise Panda AM 96 5 CV Italienne D 350 12 CV Amricaine S 280 12 CV Allemande S 280 8 CV Amricaine D 250 10 CV Allemande Couleur Bleu Rouge Bleu Gris mtallis Azur Rouge

Michel Dubois

UML pour les bases de donnes- p. 264

RFLEXIVIT BA A

Tout ensemble d'attributs dtermine lui-mme ou une partie de lui mme. Toute partie d'un ensemble d'attributs dpend de l'ensemble complet. Numro d'immatriculation, Marque Numro d'immatriculation, Marque Numro d'immatriculation, Marque Marque Numro d'immatriculation, Marque Numro d'immatriculation.

Michel Dubois

UML pour les bases de donnes- p. 265

AUGMENTATION
A B A,C B,C Si A dtermine B (B dpend de A), les deux ensembles d'attributs peuvent tre enrichis par un mme troisime dans la relation de dpendance. Numro d'immatriculation Marque Numro d'immatriculation, Couleur Marque, Couleur

Michel Dubois

UML pour les bases de donnes- p. 266

TRANSITIVIT
A B et B C A C Il y a dpendance fonctionnelle transitive entre 2 ensembles d'attributs A C lorsque A dtermine un ensemble d'attributs B, qui lui-mme dtermine C. Il y a dpendance fonctionnelle transitive entre 2 attributs A C lorsque C dpend d'un attribut B, qui lui-mme dpend de A. Numro d'immatriculation Marque et Marque Nationalit du constructeur Numro d'immatriculation Nationalit du constructeur
Michel Dubois UML pour les bases de donnes- p. 267

UNION
A B et A C A B, C Lorsque qu'un attribut dtermine deux groupes d'attributs distincts, il dtermine leur association. Numro d'immatriculation Marque et Numro d'immatriculation Couleur Numro d'immatriculation Marque, Couleur

Michel Dubois

UML pour les bases de donnes- p. 268

PSEUDO-TRANSITIVIT
A B et B,C D A, C D

Michel Dubois

UML pour les bases de donnes- p. 269

DCOMPOSITION
A B et C B A C Numro d'immatriculation Marque, Couleur Numro d'immatriculation Marque et Numro d'immatriculation Couleur Il y a diminution des buts : opration d clatement Quand le but d une df est monoattribut, on dit que la df est canonique. L opration d clatement permet de se ramener des df canoniques
Michel Dubois UML pour les bases de donnes- p. 270

TYPOLOGIE DES DPENDANCES FONCTIONNELLES EN FONCTION DES AXIOMES D AMSTRONG


Par rapport laugmentation : Dpendances fonctionnelles lmentaires Par rapport la transitivit : Dpendances fonctionnelles directes.

Michel Dubois

UML pour les bases de donnes- p. 271

DPENDANCE FONCTIONNELLE LMENTAIRE


On dit qu'une dpendance fonctionnelle est lmentaire si la source ne contient pas d'attributs superflus. La source ne contient pas d'attributs superflus si le fait d'enlever un attribut quelconque dans la source entrane la disparition de la dpendance fonctionnelle. La df est optimise vis vis de la proprit d augmentation. Bien entendu, toute dpendance fonctionnelle dont la source ne contient qu'un seul attribut est lmentaire. A, B C si A, B C / et AC / BC Michel Dubois
df

UML pour les bases de donnes- p. 272

DPENDANCE FONCTIONNELLE DIRECTE


Une dpendance fonctionnelle est directe s'il n'existe pas de transitivit entre la source et le but. Elle n est pas reconstituable par transitivit. Elle est donc optimise vis vis de la proprit de transitivit. A B ssi il n existe aucun ensemble d attribut X tel que A X et X B
dfd

Michel Dubois

UML pour les bases de donnes- p. 273

EXEMPLES
Numro d'immatriculation Couleur
dfd

Numro d'immatriculation, Marque


Marque, Modle Puissance
dfd

dfd Couleur

Numro d'immatriculation Nationalit du constructeur


df

Michel Dubois

UML pour les bases de donnes- p. 274

COUVERTURE MINIMALE
De tout ensemble de dpendance fonctionnelle, on peut extraire au moins un ensemble de dpendances fonctionnelles lmentaires et directes quivalent : modulo la transitivit et l augmentation. On lappelle sa couverture minimale. Elle minimise l expression des contraintes structurelles du S.I. que sont les DF. Donc tout ensemble de dpendances fonctionnelles admet une couverture minimale, en gnral non unique.
Michel Dubois UML pour les bases de donnes- p. 275

COUVERTURE MINIMALE
La couverture minimale G d'un ensemble F de dpendances fonctionnelles (DF) est un ensemble de DF tel que : 1. On peut dduire de G les mmes DF que de F : G+ = F+ 2. Il n'y a qu'un attribut droite dans toutes les DF de G (dcomposition) 3. Toutes les dpendances sont utiles : si on enlve une quelconque, on ne peut obtenir F+. 4.Toutes les dpendances sont lmentaires.
Michel Dubois UML pour les bases de donnes- p. 276

NOTION DE CL PRIMAIRE
Une table doit obligatoirement comporter une cl primaire. il faut que chaque enregistrement soit dot d'un identifiant pour tre retrouv : c'est le rle de la cl primaire. Par convention, la cl primaire d'une table apparat souligne dans la reprsentation en intention d'une table. On distingue deux types de cls primaires :
Les cls primaires simples, constitues par un seul attribut. Les cls primaires composes : parfois on dfinit une cl primaire forme de plusieurs attributs de manire obtenir l'unicit de la valeur de la cl.

Michel Dubois

UML pour les bases de donnes- p. 277

PROPRITS DE LA CL PRIMAIRE
Par dfinition, la cl primaire doit dterminer tous les regroupements possibles des autres attributs de la table. Elle doit tre minimale. Elle ne peut avoir deux fois la mme valeur pour deux tuples. Il n y a pas de doublons. Il y a une contrainte unicit (UQ) sur toute la cl primaire. De prfrence, une cl primaire est compose d'attributs stables dans le temps. Une modification de la cl primaire risque de poser de gros problmes de cohrence, donc de maintenance de la base de donnes. Une cl primaire doit tre systmatiquement renseigne, donc on ne peut autoriser la prsence de valeurs nulles dans une de ses composantes qui, ds qu'elles se multiplient, conduisent invitablement l'apparition de doublons. La contrainte (NN) sur chaque partie de la cl primaire.
Michel Dubois UML pour les bases de donnes- p. 278

LES CLS CANDIDATES


Au sein d'une table, plusieurs attributs ou groupes d'attributs peuvent remplir les conditions (unicit, minimalit, pas de valeurs nulles, stabilit) pour devenir cl primaire de la table : ils formeront les cls candidates.
R(Ville, Adresse, Code postal) V= {Ville:chane, Adresse:chane, Code postal:entier} F={Ville, Adresse Code postal, Code postal Ville} Ville, Adresse Code postal, Ville, Adresse Code postal, Adresse Ville, Code postal, Adresse

Dans ce cas on retiendra comme cl primaire la cl candidate la plus petite au niveau de la taille de stockage (Code postal, Adresse ). Toutes les cls candidates ont une contrainte dunicit (UQ) sur leur globalit. Pour une relation R, il y a toujours une cl candidate. Au pire V tout entier peut tre la cl candidate. Il vaut mieux envisager de crer un attribut incrment chaque cration d'une occurrence de la relation spcialement pour ce cas.
Michel Dubois UML pour les bases de donnes- p. 279

LES CLS TRANGRES (OU CLS EXTERNES)


Une cl trangre est un attribut (cl trangre simple) ou un groupe d'attributs (cl trangre compose) d'une table dont les valeurs font rfrence celles de la cl primaire d'une autre table. Les cls trangres permettent ainsi de relier des tables laide de la jointure naturelle. Les cls trangres comportent gnralement des doublons. Elle peut cependant avoir une contrainte dunicit sur sa globalit (UQ). Elles autorisent gnralement la prsence de valeurs manquantes si elles n'entrent pas dans la composition de la cl primaire de leur table. Elles peuvent cependant avoir une contrainte dobligation (NN) sur chacune de ses parties. Par contre, toute valeur renseigne de la cl trangre doit tre prsente dans la cl primaire de la table de rfrence pour que le SGBDR puisse relier les deux tables.
Michel Dubois UML pour les bases de donnes- p. 280

LE GRAPHE DES DPENDANCES FONCTIONNELLES LMENTAIRES ET DIRECTES OU DE COUVERTURE MINIMALE


Un graphe orient dont les noeuds sont les attributs du dictionnaires de donnes Ces noeuds sont ensuite runis par des flches reprsentant les dpendances fonctionnelles lmentaires et directes. Ces flches sont orientes de la source vers le but de la dpendance fonctionnelle mise en vidence.

Michel Dubois

UML pour les bases de donnes- p. 281

EXEMPLE DE GRAPHE
Pour nos seules donnes relatives aux voitures :
GRAPHE DES DEPENDANCES FONCTIONNELLES Numro d'immatriculation

Marque

Modle

Couleur

Nationalit du constructeur

Puissance

Michel Dubois

UML pour les bases de donnes- p. 282

GRAPHES DE DPENDANCES ET FORMES NORMALES


Un graphe de couverture minimale des dpendances fonctionnelles donne immdiatement un schma de tables en troisime forme normale. Pour cela, il suffit de dterminer des ensembles de donnes qui dpendent toutes fonctionnellement de la mme donne ou du mme groupe de donnes. Chaque ensemble donnera une table dont la cl primaire sera la source de la dpendance fonctionnelle commune. Les donnes appartenant plusieurs ensembles seront ncessairement un composant de cl primaire dans une table et/ou une cl trangre dans une autre.
Michel Dubois UML pour les bases de donnes- p. 283

EXEMPLE
GRAPHE DES DEPENDANCES FONCTIONNELLES Numro d'immatriculation

Marque

Modle

Couleur

Nationalit du constructeur

Puissance

Ce graphe donnera les tables suivantes : Voiture (Numro d'immatriculation, #[Marque, Modle], Couleur) Nationalit (Marque, Nationalit du constructeur) Puissance (#Marque, Modle, Puissance)
Michel Dubois UML pour les bases de donnes- p. 284

DPENDANCES FONCTIONNELLES FAIBLES/FORTES


Une dpendance fonctionnelle est forte si et seulement si son but est toujours valu. Dans ce cas, il y a une contrainte d'obligation de prsence sur le but. Une dpendance fonctionnelle est faible si et seulement si son but peut ne pas tre valu. C'est la situation par dfaut. Une voiture peut ne pas avoir de couleur. Par contre toute voiture une marque.
Numro d'immatriculation Numro d'immatriculation Couleur Marque

Michel Dubois

UML pour les bases de donnes- p. 285

D.F. INTER-RELATIONS
Une cl trangre exprime une DF inter-relation : quand on connat la cl trangre, on connat la valeur de la cl primaire rfrence. Exemple : R(A,B,C) R(D,#A) Les dpendances exprimes par ce schma de base : F={AB, AC, DA} mais on a aussi R.A R.A si on tient compte du schma relationnel. Cette DF ne reprsente pas une contrainte du Systme d Information. Elle est plutt dordre technique et ne se rencontre pas lors de lexploitation de la base de donnes : la raison dtre des cls trangres est de permettre la recomposition par jointure naturelle. Or cette dernire limine lattribut doublon dans la relation rsultat !
Michel Dubois UML pour les bases de donnes- p. 286

SCHEMA RELATIONNEL ET DF
Une dpendance fonctionnelle est une proprit du Systme d'Information qui est indpendante du dcoupage relationnel, puisque celui-ci n'existe pas ce moment. Ce qui n'empche pas de revenir sur les dpendances fonctionnelles aprs dcoupage (ou dcomposition) et de reprer des dpendances fonctionnelles qui sont devenues inter relation dans ce contexte. Retour l'exemple : F={AB, AC, DA} et R(A,B,C) R(D,#A) On a R'.D R'.A et R.A R.A donc R'.D R.A R.A R.B est intra-relation. R.A R.C est intra-relation. R'.D R.A est inter-relation.
Michel Dubois UML pour les bases de donnes- p. 287

GRAPHE DES D.F. INTER-RELATIONS


Voiture.Numro d'immatriculation Puissance.Marque, Voiture.Numro d'immatriculation Puissance.Modele, donc Voiture.Numro d'immatriculation Puissance.[Marque, Modele] Puissance.[Marque, Modele] Nationalite.Marque} Tout vhicule a une marque et un modle. De plus toute puissance dpend dune marque. Donc les df inter-relations sont toutes fortes.

Michel Dubois

UML pour les bases de donnes- p. 288

DPENDANCES FONCTIONNELLES INTER-RELATIONS TOTALES/PARTIELLES


Pour les dpendances fonctionnelles inter-relations (ou plus exactement rfrentielles). Une dpendance fonctionnelle est totale si et seulement si toutes les valeurs du but potentiel sont effectivement rfrences dans la relation source. On dit qu'il y a une contrainte de totalit. Une dpendance fonctionnelle est partielle si et seulement si certaines valeurs du but potentiel peuvent ne pas tre atteintes par la df. C'est une situation par dfaut.
Michel Dubois UML pour les bases de donnes- p. 289

EXEMPLE DE DPENDANCES FONCTIONNELLES TOTALES


Une dpendance fonctionnelle totale sera reprsente par une flche annote par un T au niveau du but. Toute voiture a une puissance. Donc la totalit du couple (marque, modle) se trouve rfrence dans la relation Puissance. Par contre, la nationalit d'un constructeur de vhicules peut tre dans la base sans pour autant que l'on dispose d'un vhicule de ce constructeur. Donc la df inter-relation suivante est totale : Voiture.Numro d'immatriculation (T) Puissance.(Marque,Modle)
=>

Voiture.Numro d'immatriculation et Voiture.Numro d'immatriculation


Michel Dubois

(T) Puissance.Marque (T) Puissance.Modle


UML pour les bases de donnes- p. 290

PREMIRE EXTENSION
Numro d'immatriculation 91253 ABC 75 56465 CDE 78 3456 FGR 75 132 YZ 01 1256 DCE 75 8953 XY 56 VOITURE Marque Modle Renault FIAT GMC Mercedes GMC Mercedes Twingo S Panda AM 96 D 350 S 280 S 280 D 250 Couleur Bleu Rouge Bleu Gris mtallis Azur Rouge

Voiture.Numro d'immatriculation Voiture.Numro d'immatriculation (T) Puissance.Marque Voiture.Numro d'immatriculation (T) Puissance.Modle
Michel Dubois

(T) Puissance.(Marque,Modle)
Marque Renault FIAT GMC Mercedes GMC Mercedes PUISSANCE Modle Puissance Twingo S 6 CV Panda AM 96 5 CV D 350 12 CV S 280 12 CV S 280 8 CV D 250 10 CV
UML pour les bases de donnes- p. 291

DEUXIME EXTENSION
Numro d'immatriculation 91253 ABC 75 56465 CDE 78 3456 FGR 75 132 YZ 01 8953 XY 56 VOITURE Marque Modle Renault FIAT GMC Mercedes Mercedes Twingo S Panda AM 96 D 350 S 280 D 250 Couleur Bleu Rouge Bleu Gris mtallis Rouge

Voiture.Numro d'immatriculation Par contre, Voiture.Numro d'immatriculation (T) Puissance.Marque Voiture.Numro d'immatriculation (T) Puissance.Modle
Michel Dubois

(T) Puissance.(Marque,Modle)
PUISSANCE Modle Puissance Twingo S 6 CV Panda AM 96 5 CV D 350 12 CV S 280 12 CV S 280 8 CV D 250 10 CV
UML pour les bases de donnes- p. 292

Marque Renault FIAT GMC Mercedes GMC Mercedes

CONTRAINTE DE DPENDANCES FONCTIONNELLES TOTALES


Voiture.Numro d'immatriculation (T) Puissance.(Marque,Modle)
PUISSANCE[marque,modele]=VOITURE[marque,modele] <=> VOITURE[marque,modele]PUISSANCE[marque,modele] : FK et PUISSANCE[marque,modele]VOITURE[marque,modele] donc il faut : PUISSANCE[marque,modele]-VOITURE[marque,modele] =

=> Voiture. Numro d'immatriculation


PUISSANCE[marque]=VOITURE[marque] <=> VOITURE[marque]PUISSANCE[marque] : FK et PUISSANCE[marque]VOITURE[marque]

(T) Puissance.Marque

et Voiture. Numro d'immatriculation


PUISSANCE[modele]=VOITURE[modele] <=> VOITURE[modele]PUISSANCE[modele] : FK et PUISSANCE[modele]VOITURE[modele]
Michel Dubois

(T) Puissance.Modle

UML pour les bases de donnes- p. 293

CONTRAINTE DE DPENDANCES FONCTIONNELLES INTER-RELATIONS TOTALES


Malheureusement, ces contraintes sont difficilement implantables dans les SGBDR. Elles devraient conduire des insertions simultanes dans plusieurs relations. Elles peuvent tre implantes au niveau des applications. Oracle permet de programmer des procdures stockes au niveau du SGBDR l aide du langage PL/SQL. Une procdure stocke d insertion peut exiger et grer l insertion simultane dans plusieurs tables. Cette procdure peut tre accessible toutes les applications qui souhaitent faire des insertions. Il suffit alors de leur retirer la possibilit de la court-circuiter en leur retirant le privilge INSERT sur les tables. Oracle permet de grer aussi des destructions simultanes grce aux contraintes ON DELETE CASCADE.
Michel Dubois UML pour les bases de donnes- p. 294

ORDRE DE CRATION DES TABLES


Les dpendances fonctionnelles inter-relations impliquent un ordre de cration de tables (sauf en cas de rfrences circulaires). Un graphe des dpendances fonctionnelles inter-relation permet de dterminer lordre de cration des tables (sauf en cas de rfrences circulaires). Ainsi suivant le graphe suivant, il faudrait crer dans l'ordre les tables : (1) NATIONALITE (2) PUISSANCE (3) VOITURE

Michel Dubois

UML pour les bases de donnes- p. 295

DD DE LA BASE LOCATION DE VOITURE


CODE NUM_IMMA

MARQUE MODELE COULEUR

LIBELLE Numro d'immatriculation Marque

Modle Couleur du vhicule

NATURE Non calcule / saisie Non calcule / saisie Non calcule / saisie Non calcule / saisie

CATEGORIE Stable

Stable Stable Evolutive

NAT_CONS PUISSANCE

Nationalit du constructeur Puissance du moteur

Non calcule Stable / saisie Non calcule Stable / saisie

DOMAINE COMMENTAIRE texte[20] Identifiant de voiture obligatoire Texte[30] obligatoire Texte[30] obligatoire Texte[10] dans ( Bleu , Rouge , Vert , Noire ) texte[20] obligatoire Numrique Obligatoire

Michel Dubois

UML pour les bases de donnes- p. 296

SCHEMA LOGIQUE DE LOCATION DE VOITURE


Nationalit (Marque, Nat_ Cons) Puissance (#Marque, Modele, Puissance) Voiture (Num_imma, #[Marque, Modele], Couleur) Ce schma logique a t dduit de :

F = { Num_imma Marque, Num_imma Modele, Num_imma Couleur, Marque Nat_ Cons, Marque, Modele Puissance}
Cependant, un tel schma nexprime pas toutes les contraintes connues :
PUISSANCE[marque,modele]VOITURE[marque,modele] VOITURE.#[marque,modele] NOT NULL
Michel Dubois UML pour les bases de donnes- p. 297

SCHEMA RELATIONNEL
VOITURE
Numro dimmatriculation (1) Couleur Marque (nn) Modele (nn)

NATIONALITE
Marque (1) Nationalite du constructeur P

PUISSANCE
Marque (1) Modele (1) Puissance

}
T

Schma relationnel - Lgende :


(1)

{ }
(nn) (uq) P T

: partie de la cl primaire donc (nn,uq) : cl compose : cl trangre obligatoire : cl trangre avec contrainte dunicit : df inter-relation partielle : df inter-relation totale : rfrence
UML pour les bases de donnes- p. 298

Michel Dubois

LA NORMALISATION D'UN SCHMA RELATIONNEL


Le modle relationnel offre la notion de "bon schma " et une approche de transformation d'un schma en "un bon schma". Cette approche s'appelle la NORMALISATION. Elle conduit un schma compos de schmas de relations dites en Formes Normales. Au dbut, on part d'une table unique (relation universelle), la fin on plusieurs tables, toutes en 3ime FN (ou plus). Elle consiste liminer les redondances afin d'viter les difficults de maintien de cohrence en insertion, en mise jour et en suppression. De plus elle permet une meilleure reprsentation du rel.
NORMALISER = DECOMPOSER SANS PERTE D'INFORMATION (pour les premires formes normales).
Michel Dubois UML pour les bases de donnes- p. 299

NORMALISATION PARTIR DE LA RELATION UNIVERSELLE


Cette mthode consiste crer une table universelle contenant toutes les donnes stocker du dictionnaire des donnes. A cette table, on va donner une cl, gnralement l'identifiant de l'objet central ou fdrateur de la base de donnes. Ensuite on dcompose cette table en appliquant successivement les trois premires formes normales.
Michel Dubois UML pour les bases de donnes- p. 300

NORMALISATION PARTIR DE LA RELATION UNIVERSELLE


Toutes les tables issues de la dcomposition devront tre conserves l'exception des tables uniquement formes d'une cl primaire simple (les tables constitues d'une seule cl primaire compose doivent absolument tre conserves). Le besoin en donnes identifiantes, qui correspond aux manques du graphe des dpendances fonctionnelles, apparatra lorsque l'on devra donner une cl primaire aux nouvelles tables issues de la dcomposition. Il suffira alors de crer ex-nihilo une donne identifiante de type incrmente/compteur.
Michel Dubois UML pour les bases de donnes- p. 301

LA PREMIRE FORME NORMALE


Une relation est en premire forme normale si tout attribut contient une valeur atomique. Un attribut, donne lmentaire du monde rel, ne peut dsigner, ni une donne compose d'entits de nature quelconque, ni une liste de donnes de mme nature. Les groupes rptitifs, c'est dire les attributs occurrence multiple, correspondant non pas des valeurs atomiques mais des listes de valeurs, sont interdits. Un groupe rptitif est constitu d'un attribut ou d'un groupe d'attributs pour lesquels il existe plusieurs valeurs pour une mme valeur de la cl primaire. 1FN : Valeur atomique + la cl dtermine les autres att...
Michel Dubois UML pour les bases de donnes- p. 302

LA PREMIRE FORME NORMALE


Table EMPLOYES
Numro Employ Nom Prnom S.G.B.D. matriss Oracle Access SQL Server Ingres DBase 02 DUPONT Jeanne Paradox Randonne Intrts Dessin Peinture Thatre Volley-ball D.E.A. BAC Ingnieur Docteur Paris Aix Marseille Marseille 1996 1989 1994 1997 Nature diplme BAC Lieu du diplme Versailles Date du diplme 1990

01

DURAND

Jacques

Table EMPLOYES
Numro Employ 01 02 Nom DURAND DUPONT Prnom Jacques Jeanne

Table S.G.B.D.
Numro employ 01 01 01 01 02 02 SGBD matriss Oracle Access SQL Server Ingres DBase Paradox

Table INTERETS DES EMPLOYES


Numro employ 01 01 01 02 02 Intrts Dessin Peinture Thatre Volley-ball Randonne

Table DIPLOMES DES EMPLOYES


Numro diplme 01 02 03 04 05 Numro employ 01 01 02 02 02 Nature diplme BAC D.E.A. BAC Ingnieur Docteur Lieu du diplme Versailles Paris Aix Marseille Marseille Date du diplme 1990 1996 1989 UML pour les bases de donnes- p. 303 1994 1997

Michel Dubois

LA DEUXIME FORME NORMALE


Le passage en deuxime forme normale ne concerne que les tables ayant une cl primaire compose et en premire forme normale. Une table en premire forme normale disposant d'une cl primaire simple est automatiquement en deuxime forme normale. La rgle de normalisation exige que tout attribut ne faisant pas partie de la cl primaire dpende de la totalit de la cl primaire (DF lmentaire). Si on trouve un attribut qui ne dpend que d'une partie de la cl primaire, il doit tre exclu. Ainsi, on interdit une table dcrivant plusieurs types d'objets distincts. Pour chaque groupe d'attributs ne dpendant que d'une partie de la cl primaire : Rassembler dans une autre table les attributs ne dpendant que d'une partie de la cl primaire de la table initiale. Donner cette partie de cl primaire initiale comme cl primaire de la nouvelle table. Michel Dubois
UML pour les bases de donnes- p. 304

LA DEUXIME FORME NORMALE


Table Location de voitures par des clients N Client 01 01 02 02 02 03 Nom Client Prnom Client N Immatriculation Martin Martin Durand Durand Durand Dupont Pierre Pierre Paul Paul Paul Jacques 91253 ABC 75 56465 CDE 78 91253 ABC 75 1256 DCE 75 8953 XY 56 56465 CDE 78 Marque voiture Modle voiture Renault FIAT Renault GMC Mercedes FIAT Twingo S Panda AM 96 Twingo S S 280 D 250 Panda AM 96 Date de location 05/01/1997 04/03/1997 15/02/1997 25/02/1997 16/04/1997 12/06/1997 Nb jours de location 1 3 2 4 5 2

Table Clients N Client 01 02 03 Nom Client Prnom Client Martin Durand Dupont Pierre Paul Jacques N Immatriculation 91253 ABC 75 56465 CDE 78 1256 DCE 75 8953 XY 56 Table Locations de voitures par des clients N Client 01 01 02 02 02 03 N Immatriculation 91253 ABC 75 56465 CDE 78 91253 ABC 75 1256 DCE 75 8953 XY 56 56465 CDE 78 Date de location 05/01/1997 04/03/1997 15/02/1997 25/02/1997 16/04/1997 12/06/1997

Table Voitures Marque voiture Modle voiture Renault FIAT GMC Mercedes Twingo S Panda AM 96 S 280 D 250

Nb jours de location 1 3 2 4 5 2

Michel Dubois

UML pour les bases de donnes- p. 305

LA TROISIME FORME NORMALE


La troisime forme normale a pour but d'liminer les dpendances fonctionnelles transitives au sein d'une table. La table doit au pralable tre en deuxime forme normale. Ainsi, au sein d'une table, un attribut ne faisant pas partie de la cl doit dpendre directement de la cl, et d'aucun autre attribut ou groupe d'attributs. Le passage en troisime forme normale impose alors de : Mettre dans une autre table les attributs qui dpendent fonctionnellement d'un attribut ou d'un groupe d'attributs autres que la cl. Faire apparatre dans les deux tables ce dernier attribut ou groupe d'attributs, qui servira de cl primaire la nouvelle table.

Michel Dubois

UML pour les bases de donnes- p. 306

LA TROISIME FORME NORMALE


Table Voitures Numro d'immatriculation 91253 ABC 75 56465 CDE 78 132 YZ 01 1256 DCE 75 8953 XY 56 4565 TD 34 7897 BDE 75 2536 BRF 91 Marque Renault FIAT Mercedes GMC Mercedes FIAT Renault Mercedes Modle Twingo S Panda AM 96 S 280 S 280 D 250 Punto Twingo S S 280 Puissance 6 CV 5 CV 12 CV 8 CV 10 CV 6 CV 6 CV 12 CV Nationalit du constructeur Franaise Italienne Allemande Amricaine Allemande Italienne Franaise Allemande Couleur Bleu Rouge Gris mtallis Azur Rouge Noir Beige Bleu

Table Nationalits par marque Marque Table voitures Numro d'immatriculation 91253 ABC 75 56465 CDE 78 132 YZ 01 1256 DCE 75 8953 XY 56 4565 TD 34 7897 BDE 75 2536 BRF 91 Marque Renault FIAT Mercedes GMC Mercedes FIAT Renault Mercedes Modle Twingo S Panda AM 96 S 280 S 280 D 250 Punto Twingo S S 280 Couleur Bleu Rouge Gris mtallis Azur Rouge Noir Beige Bleu Renault FIAT Mercedes GMC Nationalit du constructeur Franaise Italienne Allemande Amricaine Table Puissances par modle Marque Renault FIAT Mercedes GMC Mercedes Modle Twingo S Panda AM 96 S 280 S 280 D 250 Puissance 6 CV 5 CV 12 CV 8 CV 10 CV

Michel Dubois

FIAT

6 donnes- p. 307 UML Punto bases de CV pour les

LA NORMALISATION D'UN SCHMA RELATIONNEL


L'ensemble des DF sous-jacent une collection de relations 3FN est une "couverture minimale". Il n'y a, dans cet ensemble, aucune DF inutile (ce qui n'est pas le cas d'un graphe autre). L'interprtation concrte de la minimalit est la suivante : la normalisation conduit l'mergence d'objets (les relations) qui minimisent l'expression de leurs relations structurelles. La normalisation jusqu'en 3ime forme normale: Elimine en grande partie le problme de redondance. Dcompose la relation universelle en plusieurs tables sans perte d'information. permet une meilleure connaissance du rel mais l'clate dans plusieurs tables ce qui peut nuire l'indpendance logique.
Michel Dubois UML pour les bases de donnes- p. 308

Chapitre 9 Rappels Modle physique (Oracle SQL2)


Michel Dubois
I.U.T. de Vannes
duboism@iu-vannes.fr

Michel Dubois

UML pour les bases de donnes- p. 309

SQLPLUS
Invocation du client SQLPLUS (sur les partitions debian/linux lIUT, la commande sqlplus10g est aussi disponible)
>sqlplus /
Si les comptes ont une authentification externe Oracle.

>sqlplus duboism/xxx@oraetud
Si le nom de service oraetud a t dfinie dans tnsnames.ora.

>sqlplus duboism/xxx@"(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP) (HOST=oraetud.univ-ubs.fr)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=oraetud)))"


Si aucun nom de service na t dfini, on peut toujours utiliser une chane de connexion service Oracle net. Il faut cependant que dans le fichier oracle\product\10.2.0\client_3\NETWORK\ADMIN\sqlnet.ora il y ait : SQLNET.AUTHENTICATION_SERVICES= (RADIUS)

>sqlplus Entrez le nom utilisateur : duboism@oraetud Entrez le mot de passe : xxx


Si on ne prcise rien, il y a une demande interactive.

>sqlplus /nologin SQL>connect duboism/xxx@oraetud;


La commande SQLPLUS connect est toujours disponible.

Linvocation dun script sql est possible :


sqlplus duboism/xxx@oraetud @script.sql parametre1 parametre2 Les variables &1 et &2 dans le script SQL script.sql prendront les valeurs parametre1 et parametre2. Le script SQL doit possder en fin la commande EXIT. Les commandes SQLPLUS start script.sql ou @script.sql ou @script permettent dexcuter le fichier de commande script.sql du rpertoire courant (celui do a t invoqu sqlplus). Sous windows XP, il vaut mieux utiliser linvite de commandes que la version Windows de SQLPLUS

La commande SQLPLUS EXIT permet de quitter SQLPLUS. Les commandes SQLPLUS ! ou HOST permettent dexcuter une commande du systme dexploitation
Sous windows XP, la commande host est disponible mais pas !. !cp p /forum/vannes/prof/lcsd01/MD/xxx.sql ~ (copier un fichier) !cd /forum/vannes/prof/lcsd01/MD (changer le rpertoire courant : ne marche que pour Linux) host sqlldr10g userid=duboism/xxx@oraetud control=xxx.ctl (charger une table sous linux lIUT) host \monRepertoire\xxx.bat ou !/monRepertoire/xxx.sh (excuter un fichier de commandes externes)
UML pour les bases de donnes- p. 310

Les script shell *.sh sous linux et les fichiers *.bat sous Windows XP permettent de linvoquer en mode batch. Michel Dubois

SQLPLUS MSDOS

Michel Dubois

UML pour les bases de donnes- p. 311

SQLPLUS WINDOWS

Michel Dubois

UML pour les bases de donnes- p. 312

SQLPLUS/SQLLDR LINUX
sqlplus duboism/xxxxxx@oraetud ( partir des distributions debian locales comme pour Windows) sqlplus10g duboism/xxxxxx@oraetud ( partir des distributions debian locales) sqlldr10g userid=duboism/xxxxxx@oraetud control=xxx.ctl

Michel Dubois

UML pour les bases de donnes- p. 313

LES CONTRAINTES D'INTGRITS


Le relationnel possde, outre la normalisation, 3 contraintes de modle: Un attributs un domaine. Toute valeur insre dans un attribut doit tre compatible avec son domaine. Une table une cl. La valeur de cette cl doit tre unique. L'intgrit rfrentielle vise vrifier que la cl trangre rfrence une cl primaire. Toute valeur (autre que NULL) qui est insre dans la cl trangre doit au pralable exister dans la cl primaire. D'autres contraintes peuvent tre ajoutes (en fonction de l'analyse): Des attributs peuvent tre multiples ou uniques. Des attributs peuvent tre facultatifs ou obligatoires. Des contraintes lies au domaine peuvent tre implmentes soit de faon dclarative, soit l'aide de dclencheurs.
Michel Dubois

UML pour les bases de donnes- p. 314

CONTRAINTE SUR UNE COLONNE


Les rgles portant sur une colonne seulement sont dclares immdiatement aprs le type de la colonne. Null/ Not Null : interdit que la colonne puisse prendre des valeurs nulles (nondfinies). Unique : la colonne est une cl (candidate) de la table. Les valeurs de cette colonne sont toutes distinctes les unes des autres. (La colonne doit aussi tre spcifie comme not null) Primary Key : identique unique. La cl primaire est la cl que le concepteur privilgie dans les accs et les jointures avec cette table, elle est indexe. References ... : les valeurs de cette colonne doivent tre des lments de la table projete sur la colonne de rfrence. La colonne de rfrence doit tre spcifie comme unique (ou cl primaire) Check(...) : un prdicat est associ la colonne, il utilise seulement les noms des constituants de la table et se vrifie localement sur la range (ceci exclut les sous requtes)
Michel Dubois UML pour les bases de donnes- p. 315

CONTRAINTES SUR PLUSIEURS COLONNES: IE DE TUPLE


Unique(...) : le groupe de colonnes est une cl de la table. Les valeurs de ces colonnes sont toutes distinctes les unes des autres. (Les colonne doivent aussi tre spcifies comme not null) Primary Key(...) : identique la clause unique. Une seule cl primaire est autorise par table. Foreign Key () References ... : les valeurs de ce groupe de colonnes doivent tre des lments de la table projete sur le groupe de rfrence. Les colonnes de rfrence doivent tre spcifies comme unique (ou cl primaire) Check(...) : dj vu plus haut
Michel Dubois UML pour les bases de donnes- p. 316

CONTRAINTES ET ORACLE
Contraintes sur la relation Cl primaire Cl(s) candidate(s) Cl(s) secondaire(s) Cl(s) trangre(s) et provenance Contrainte sur attribut autre que les cls Contrainte sur tuple appele par oracle contrainte de table Contrainte sur table Contrainte dajout Contrainte de modification Contrainte de suppression
Michel Dubois

Implantation PRIMARY KEY UNIQUE CREATE INDEX FOREIGN KEY REFERENCES NULL vs NOT NULL, CHECK CHECK TRIGGER DEFAULT, TRIGGER TRIGGER ON DELETE CASCADE, UML pour les bases de donnes- p. 317 TRIGGER

CREATION D UNE TABLE


La commande de cration de table la plus simple ne comportera que le nom et le type de chaque colonne de la table. On peut crer une table par la commande CREATE TABLE en spcifiant le nom et le type de chaque colonne. A la cration, la table sera vide mais un certain espace lui sera alloue : CREATE TABLE nom_table (nom_col1 TYPE1, nom_col2 TYPE2, ...)
Michel Dubois UML pour les bases de donnes- p. 318

CREATE TABLE

Michel Dubois

UML pour les bases de donnes- p. 319

LISTE DES COLONNES

Michel Dubois

UML pour les bases de donnes- p. 320

CONTRAINTE DE COLONNE

Michel Dubois

UML pour les bases de donnes- p. 321

CONTRAINTE DE TUPLE/TABLE

Michel Dubois

UML pour les bases de donnes- p. 322

DFINITION DE CONTRAINTES DE TUPLE

Michel Dubois

UML pour les bases de donnes- p. 323

INSERTION & CREATION


CREATE TABLE nom_table [(nom_col1, nom_col2, ...)] AS SELECT...
On n'a pas besoin alors de spcifier de type pour les colonnes : les types des donnes sont ceux provenant du SELECT. Si des conversions de type sont faire, on peut dans le SELECT utiliser les fonctions TO CHAR, TO DATE, TO NUMBER. Par dfaut les noms des colonnes de la nouvelle table sont les noms des colonnes du SELECT. Si des expressions apparaissent dans le SELECT, les colonnes correspondantes doivent imprativement tre renommes. Le SELECT peut contenir des fonctions de groupes mais pas de ORDER BY car les lignes d'une table ne peuvent pas tre classes. Mais il reste dfinir les contraintes d'intgrit que devront respecter les donnes que l'on mettra dans la table. A noter quil faut que les tuples dj insrs respectent ces contraintes qui vont tre rajoute aprs.
Michel Dubois UML pour les bases de donnes- p. 324

MODIFIER UNE TABLE


On peut modifier dynamiquement la dfinition d'une table grce la commande ALTER TABLE. Deux types de modifications sont possibles : ajout d'une colonne et modification d'une colonne existante. Il n'est pas possible de supprimer une colonne. Par contre une colonne qui n'est plus utilise peut tre mise la valeur NULL, auquel cas elle n'occupe plus d'espace disque. Si on dsire vraiment supprimer une colonne, il faut : se crer une nouvelle table sans la colonne en question dtruire l'ancienne table, aprs insertion des valeurs de lancienne, donner la nouvelle table le nom de l'ancienne.
Michel Dubois UML pour les bases de donnes- p. 325

AJOUTER UNE COLONNE


La commande suivante permet d'ajouter une ou plusieurs colonnes une table existante : ALTER TABLE nom_table ADD (nom_col1 TYPE1, nom_col2 TYPE2, ...) Les types possibles sont les mmes que ceux dcrits avec la commande CREATE TABLE. Si la table contient dj des lignes, la nouvelle colonne aura des valeurs NULL pour les lignes existantes.
Michel Dubois UML pour les bases de donnes- p. 326

MODIFIER UNE COLONNE


ALTER TABLE table MODIFY (col1 type1, col2 type2, ...) Il est possible de modifier la dfinition d'une colonne, condition que la nouvelle dfinition soit compatible avec le contenu de la colonne et en respectant les contraintes suivantes : dans tous les cas il est possible d'augmenter la taille d'une colonne; il est possible de diminuer la taille, ou mme de changer le type d'une colonne vide ; on peut spcifier NOT NULL si la colonne ne contient aucune valeur NULL ; on peut dans tous les cas spcifier NULL pour autoriser les valeurs NULL.
Michel Dubois UML pour les bases de donnes- p. 327

SUPPRIMER UNE TABLE


La commande DROP TABLE permet de supprimer une table : DROP TABLE utilisateur.nom_table [CASCADE CONSTRAINTS] ; La table nom table est alors supprime. La dfinition de la table ainsi que son contenu sont dtruits, et l'espace occup par la table est libr. Loption CASCADE CONSTRAINTS permet de supprimer toutes les contraintes d intgrits rfrentielles qui font rfrence la cl primaire de la table.
Michel Dubois UML pour les bases de donnes- p. 328

RENOMMER UNE TABLE On a la possibilit de changer le nom d'une table par la commande RENAME. la syntaxe est la suivante : RENAME ancien_nom TO nouveau_nom ;

Michel Dubois

UML pour les bases de donnes- p. 329

PROBLMES AVEC LES CONTRAINTES

Certaines contraintes peuvent empcher lajout de nouvelles donnes Par exemple, si on ajoute une contrainte rfrentielle qui rfrence la table elle-mme (cas de la hirarchie employ/suprieur). Pour pallier ce problme, SQL 2 permet dindiquer que la vrification dune contrainte doit tre diffre la fin de la transaction en cours, et pas immdiatement pour chaque commande SQL.
Michel Dubois UML pour les bases de donnes- p. 330

CONTRAINTES DIFFRABLES CONSTRAINT nom dfinition-contrainte [NOT] DEFERRABLE [INITIALLY {DEFERRED | IMMEDIATE}] La valeur par dfaut est NOT DEFERRABLE Par dfaut, si elle peut tre diffre, elle ne lest pas si on ne fait rien ; on peut changer a en prcisant INITIALLY DEFERRED
Michel Dubois UML pour les bases de donnes- p. 331

DIFFRER UNE CONTRAINTE


Si des contraintes sont DEFERRABLE, pour les diffrer (pour le temps de la transaction en cours) on doit lancer la commande : SET CONSTRAINTS {liste de contraintes | ALL} DEFERRED Si une contrainte est INITIALLY DEFERRED, on peut ne plus la diffrer (pour le temps de la transaction en cours) en lanant la commande : SET CONSTRAINTS {liste de contraintes | ALL} IMMEDIATE
Michel Dubois UML pour les bases de donnes- p. 332

GESTION DES CONTRAINTES


Des contraintes d'intgrit peuvent tre ajoutes ou supprimes par la commande ALTER TABLE. Mais pour modifier une contrainte, il faut la supprimer et ajouter ensuite la contrainte modifie.
ALTER TABLE EMP DROP CONSTRAINT NOM_UNIQUE ADD (CONSTRAINT SAL_MIN CHECK(SAL + NVL(COMM,0) > 5000)) ALTER TABLE EMP MODIFY NOME CONSTRAINT NOM_UNIQUE UNIQUE

Il est parfois intressant d'enlever temporairement des contraintes. Oracle le permet par la commande ALTER TABLE ... DISABLE/ENABLE.
ALTER TABLE table DISABLE CONSTRAINT NOM_ UNIQUE UNIQUE
Michel Dubois UML pour les bases de donnes- p. 333

VUE SUR LES COLONNES DES CONTRAINTES La vue USER_CONS_COLUMNS permet dobtenir ces renseignements.
SQL> SELECT 2 FROM 3 WHERE constraint_name, column_name user_cons_columns table_name = 'EMP'; COLUMN_NAME ---------------------DEPTNO EMPNO MGR EMPNO DEPTNO
UML pour les bases de donnes- p. 334

CONSTRAINT_NAME ------------------------EMP_DEPTNO_FK EMP_EMPNO_PK EMP_MGR_FK SYS_C00674 SYS_C00675


Michel Dubois

AJOUTER DES COMMENTAIRES A UNE TABLE

SQL> COMMENT ON TABLE emp 2 IS 'Employee Information'; Comment created.

Vous pouvez ajouter un commentaire une table par linstruction COMMENT. Les commentaires pouront tre obtenus par les vues : - ALL_COL_COMMENTS - USER_COL_COMMENTS - ALL_TAB_COMMENTS - USER_TAB_COMMENTS
Michel Dubois UML pour les bases de donnes- p. 335

UNE SEQUENCE Cest un gnrateur automatique de nombres uniques; Cest un objet partageable; Cest un objet utilis pour crer des valeurs pour une cl primaire ; Cet objet permet dviter dcrire du code au niveau applicatif ; Cet objet utilise le cache de la mmoire par soucis doptimisation.
Michel Dubois UML pour les bases de donnes- p. 336

CREATE / DROP SEQUENCE


CREATE SEQUENCE sequence [INCREMENT BY n] [START WITH n] [{MAXVALUE n | NOMAXVALUE}] [{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}];

SQL> DROP SEQUENCE dept_deptno; Sequence dropped.

Michel Dubois

UML pour les bases de donnes- p. 337

UTILISER UNE SEQUENCE


Insertion dun nouveau service MARKETING San Diego.
SQL> INSERT INTO 2 VALUES 3 1 row created. dept(deptno, dname, loc) (dept_deptno.NEXTVAL, 'MARKETING', 'SAN DIEGO');

Obtenir la valeur courante de la squence DEPT_DEPTNO.


SQL> SELECT 2 FROM dept_deptno.CURRVAL dual;

Michel Dubois

UML pour les bases de donnes- p. 338

VUE SUR LES SEQUENCES


La vue USER_SEQUENCES vous renseigne sur vos squences.
SQL> SELECT 2 3 FROM sequence_name, min_value, max_value, increment_by, last_number user_sequences;

Le prochain numro de vos squences se trouve dans la colonne LAST_NUMBER.

Michel Dubois

UML pour les bases de donnes- p. 339

ASSOCIATION 1:1 -> (1,1)-(1,1)


Une telle association peut se rduire une seule entit. La rgle n1 s applique. Des vues peuvent reconstituer les deux relations.

Pret num pret montant

1,1

sur

Gage
1,1

num_gage entrepot

PRETGAGE num pret sur gage entrepot montant

Michel Dubois

UML pour les bases de donnes- p. 340

ASSOCIATION 1:1 -> (1,1)-(1,1)


DROP TABLE PRETGAGE CASCADE CONSTRAINTS;
PRETGAGE NUM_PRET_SUR_GAGE ENTREPOT MONTANT

-- ------------------------------------TABLE : PRETGAGE -- -----------------------------------CREATE TABLE PRETGAGE ( NUM_PRET_SUR_GAGE CHAR(32) NOT NULL, ENTREPOT CHAR(32) NOT NULL, MONTANT NUMBER(4) NOT NULL, CONSTRAINT PK_PRETGAGE PRIMARY KEY (NUM_PRET_SUR_GAGE) );
Michel Dubois UML pour les bases de donnes- p. 341

ASSOCIATION 1:N -> (1,1)-(0,N)


La rgle n2 s applique.
PERSONNE
nom prenom Adresse
0,n

Posseder

MAISON
1,1

Coordonnees date construction surface

MAISON MAISON.#NOM est obligatoire

PERSONNE

Michel Dubois

UML pour les bases de donnes- p. 342

ASSOCIATION 1:N -> (1,1)-(0,N)


CREATE TABLE PERSONNE ( NOM CHAR(32) NOT NULL, PRENOM CHAR(32) NOT NULL, ADRESSE CHAR(32) NOT NULL, CONSTRAINT PK_PERSONNE PRIMARY KEY (NOM) PERSONNE ); MAISON NOM COORDONNEES CREATE TABLE MAISON PRENOM NOM ADRESSE Posseder DATE_CONSTRUCTION ( SURFACE COORDONNEES CHAR(32) NOT NULL, NOM CHAR(32) NOT NULL, DATE_CONSTRUCTION DATE , SURFACE NUMBER(4), CONSTRAINT PK_MAISON PRIMARY KEY (COORDONNEES), CONSTRAINT FK_POSSEDER FOREIGN KEY (NOM) REFERENCES PERSONNE (NOM) );
Michel Dubois UML pour les bases de donnes- p. 343

ASSOCIATION 1:N -> (1,1)-(1,N)


CONTRAT num contrat
1,1

passe

1,n

SOCIETE num societe

CONTRAT
CONTRAT NUM_CONTRAT NUM_SOCIETE passe (T)

(T)

SOCIETE
SOCIETE

NUM_SOCIETE

CONTRAT.num_societe est obligatoire SOCIETE[num_societe] CONTRAT[num_societe] La rgle n2 s applique.


Michel Dubois UML pour les bases de donnes- p. 344

ASSOCIATION 1:N -> (1,1)-(1,N)


SOCIETE[num_societe] CONTRAT[num_societe]
CREATE TABLE CONTRAT ( NUM_CONTRAT CHAR(32) NOT NULL, NUM_SOCIETE CHAR(32) NOT NULL, CONSTRAINT PK_CONTRAT PRIMARY KEY (NUM_CONTRAT), CONSTRAINT FK_PASSE FOREIGN KEY (NUM_SOCIETE) REFERENCES SOCIETE (NUM_SOCIETE) ); CONTRAT SOCIETE CREATE TABLE SOCIETE NUM_CONTRAT NUM_SOCIETE passe NUM_SOCIETE ( NUM_SOCIETE CHAR(32) NOT NULL, CONSTRAINT PK_SOCIETE PRIMARY KEY (NUM_SOCIETE) );
Michel Dubois UML pour les bases de donnes- p. 345

ASSOCIATION 1:N -> (0,1)-(0,N)


La rgle n2 s applique mais il y a dabord migration de lattribut date acquisition dans voiture.

PERSONNE
0,n

nom prenom Adresse

Posseder date acquisition

VOITURE
0,1

Num immatriculation marque type

PERSONNE NOM PRENOM ADRESSE

VOITURE NUM_IMMATRICULATION NOM MARQUE TYPE DATE_ACQUISITION

Posseder

Michel Dubois

UML pour les bases de donnes- p. 346

ASSOCIATION 1:N -> (0,1)-(0,N)


CREATE TABLE PERSONNE PERSONNE VOITURE NOM ( NUM_IMMATRICULATION PRENOM NOM ADRESSE NOM CHAR(32) NOT NULL, MARQUE Posseder TYPE PRENOM CHAR(32) NOT NULL, DATE_ACQUISITION ADRESSE CHAR(32) NOT NULL, CONSTRAINT PK_PERSONNE PRIMARY KEY (NOM) ); CREATE TABLE VOITURE ( NUM_IMMATRICULATION CHAR(32) NOT NULL, NOM CHAR(32) , MARQUE CHAR(32) NOT NULL, TYPE CHAR(32) NOT NULL, DATE_ACQUISITION DATE, CONSTRAINT PK_MAISON PRIMARY KEY (NUM_IMMATRICULATION), CONSTRAINT FK_POSSEDER FOREIGN KEY (NOM) REFERENCES PERSONNE (NOM) UML pour les bases de donnes- p. 347 ); Michel Dubois

ASSOCIATION 1:1 -> (1,1)-(0,1)


EDIFICE num_edifice type
0,1

est un

MAISON
1,1

num maison adresse

La rgle n2 s applique qu une seule fois. On va privilgier la dpendance fonctionnelle forte.


EDIFICE NUM_EDIFICE TYPE est un MAISON NUM_MAISON NUM_EDIFICE ADRESSE

MAISON.NUM_EDIFICE est obligatoire. MAISON.NUM_EDIFICE n accepte pas de doublon.


Michel Dubois UML pour les bases de donnes- p. 348

ASSOCIATION 1:1 -> (1,1)-(0,1)


CREATE TABLE EDIFICE ( NUM_EDIFICE CHAR(32) NOT NULL, TYPE CHAR(32) NOT NULL, CONSTRAINT PK_EDIFICE PRIMARY KEY (NUM_EDIFICE) EDIFICE ); MAISON NUM_EDIFICE CREATE TABLE MAISON NUM_MAISON TYPE NUM_EDIFICE est un ( ADRESSE NUM_MAISON NUMBER(4) NOT NULL, NUM_EDIFICE CHAR(32) NOT NULL UNIQUE, ADRESSE CHAR(32) NOT NULL, CONSTRAINT PK_MAISON PRIMARY KEY (NUM_MAISON), CONSTRAINT FK_EST_UN FOREIGN KEY (NUM_EDIFICE) REFERENCES EDIFICE (NUM_EDIFICE) ); Michel Dubois
UML pour les bases de donnes- p. 349

ASSOCIATION 1:1 -> (0,1)-(0,1)


ENTREPRISE SIRET entreprise adresse
0,1

correspondre

TIERS
0,1

num tiers type

La rgle n2 s applique qu une seule fois. On va privilgier un sens (au choix)


ENTREPRISE SIRET_ENTREPRISE ADRESSE correspondre TIERS NUM_TIERS SIRET_ENTREPRISE TYPE

TIERS.SIRET_ENTREPRISE n accepte pas de doublon

Michel Dubois

UML pour les bases de donnes- p. 350

ASSOCIATION 1:1 -> (0,1)-(0,1)


CREATE TABLE ENTREPRISE ( SIRET_ENTREPRISE CHAR(32) NOT NULL, ADRESSE CHAR(32) NOT NULL, CONSTRAINT PK_ENTREPRISE PRIMARY KEY (SIRET_ENTREPRISE) ENTREPRISE TIERS ); SIRET_ENTREPRISE NUM_TIERS CREATE TABLE TIERS SIRET_ENTREPRISE ADRESSE correspondre TYPE ( NUM_TIERS CHAR(32) NOT NULL, SIRET_ENTREPRISE CHAR(32) UNIQUE , TYPE CHAR(32), CONSTRAINT PK_TIERS PRIMARY KEY (NUM_TIERS), CONSTRAINT FK_CORRESPONDRE FOREIGN KEY (SIRET_ENTREPRISE) REFERENCES ENTREPRISE (SIRET_ENTREPRISE) );
Michel Dubois UML pour les bases de donnes- p. 351

ASSOCIATION N:M -> (X,N)-(X,N)

COMMANDE num commande date commande status


1,n

ARTICLE Porter quantite


0,n

num article designation quantite stock prix

La rgle n3 s applique.
COMMANDE NUM_COMMANDE DATE_COMMANDE STATUS PORTER NUM_COMMANDE NUM_ARTICLE QUANTITE ARTICLE NUM_ARTICLE DESIGNATION QUANTITE_STOCK PRIX

Michel Dubois

UML pour les bases de donnes- p. 352

ASSOCIATION N:M -> (X,N)-(X,N)


CREATE TABLE COMMANDE ( NUM_COMMANDE NUMBER(4) NOT NULL, DATE_COMMANDE DATE , STATUS CHAR(32) , CONSTRAINT PK_COMMANDE PRIMARY KEY (NUM_COMMANDE) ); CREATE TABLE ARTICLE ARTICLE COMMANDE ( PORTER NUM_ARTICLE NUM_COMMANDE NUM_ARTICLE CHAR(32) NOT NULL, DESIGNATION DATE_COMMANDE NUM_COMMANDE QUANTITE_STOCK DESIGNATION CHAR(32) NOT NULL, STATUS NUM_ARTICLE PRIX QUANTITE QUANTITE_STOCK NUMBER(4) , PRIX NUMBER(4) NOT NULL, CONSTRAINT PK_ARTICLE PRIMARY KEY (NUM_ARTICLE) ); CREATE TABLE PORTER ( NUM_COMMANDE NUMBER(4) NOT NULL, NUM_ARTICLE CHAR(32) NOT NULL, QUANTITE NUMBER(4) NOT NULL, CONSTRAINT PK_PORTER PRIMARY KEY (NUM_COMMANDE, NUM_ARTICLE), CONSTRAINT FK_COMMANDE FOREIGN KEY (NUM_COMMANDE) REFERENCES COMMANDE (NUM_COMMANDE), CONSTRAINT FK_ARTICLE FOREIGN KEY (NUM_ARTICLE) REFERENCES ARTICLE (NUM_ARTICLE) );
Michel Dubois UML pour les bases de donnes- p. 353

ASSOCIATION N:M -> (1,N)-(0,N)


COMMANDE ARTICLE PORTER NUM_COMMANDE NUM_ARTICLE QUANTITE NUM_ARTICLE DESIGNATION QUANTITE_STOCK PRIX

La rgle n3 s applique. Mais il y a aussi une contrainte de dpendance fonctionnelle totale :


NUM_COMMANDE DATE_COMMANDE STATUS

Porter.num_commande->(T)Commande.num_commande Toute commande de la relation commande se retrouve dans la relation porter.

COMMANDE[num_commande]=PORTER[num_commande] <=>PORTER[num_commande]COMMANDE[num_commande] : FK et COMMANDE[num_commande] PORTER[num_commande] On teste :


COMMANDE [num_commande] - PORTER[num_commande] = ...WHERE NOT EXISTS ( SELECT num_commande FROM commande MINUS SELECT num_commande FROM porter)
COMMANDE ARTICLE
1,n

Michel Dubois

num commande date commande status

Porter quantite

0,n

num article designation UML pour les bases de donnes- p. 354 quantite stock prix

ASSOCIATION N:M -> (1,N)-(0,N)


COMMANDE[num_commande] PORTER[num_commande]
CREATE TABLE COMMANDE ( NUM_COMMANDE NUMBER(4) NOT NULL, DATE_COMMANDE DATE , STATUS CHAR(32) , CONSTRAINT PK_COMMANDE PRIMARY KEY (NUM_COMMANDE) ); CREATE TABLE ARTICLE ARTICLE COMMANDE ( PORTER NUM_ARTICLE NUM_ARTICLE CHAR(32) NOT NULL, NUM_COMMANDE DESIGNATION DATE_COMMANDE NUM_COMMANDE DESIGNATION CHAR(32) NOT NULL, QUANTITE_STOCK NUM_ARTICLE STATUS PRIX QUANTITE_STOCK NUMBER(4) , QUANTITE PRIX NUMBER(4) NOT NULL, CONSTRAINT PK_ARTICLE PRIMARY KEY (NUM_ARTICLE) ); CREATE TABLE PORTER ( NUM_COMMANDE NUMBER(4) NOT NULL, NUM_ARTICLE CHAR(32) NOT NULL, QUANTITE NUMBER(4) NOT NULL, CONSTRAINT PK_PORTER PRIMARY KEY (NUM_COMMANDE, NUM_ARTICLE), CONSTRAINT FK_COMMANDE FOREIGN KEY (NUM_COMMANDE) REFERENCES COMMANDE (NUM_COMMANDE), CONSTRAINT FK_ARTICLE FOREIGN KEY (NUM_ARTICLE) REFERENCES ARTICLE (NUM_ARTICLE) );
Michel Dubois UML pour les bases de donnes- p. 355

ASSOCIATION N-AIRE
MAISON Coordonnees date construction surface Realiser
0,n

ENTREPRISE date realisation montant


0,n 0,n

SIRET entreprise raison sociale adresse

TYPE TRAVAUX num travaux designation


MAISON COORDONNEES DATE_CONSTRUCTION SURFACE REALISER NUM_TRAVAUX SIRET_ENTREPRISE COORDONNEES DATE_REALISATION MONTANT ENTREPRISE SIRET_ENTREPRISE RAISON_SOCIALE ADRESSE

La rgle n3 s applique.
TYPE_TRAVAUX NUM_TRAVAUX DESIGNATION

Michel Dubois

UML pour les bases de donnes- p. 356

ASSOCIATION N-AIRE
CREATE TABLE ENTREPRISE MAISON ( ENTREPRISE COORDONNEES REALISER SIRET_ENTREPRISE CHAR(32) NOT NULL, SIRET_ENTREPRISE DATE_CONSTRUCTION RAISON_SOCIALE CHAR(32) NOT NULL, NUM_TRAVAUX RAISON_SOCIALE SURFACE SIRET_ENTREPRISE ADRESSE ADRESSE CHAR(32) NOT NULL, COORDONNEES CONSTRAINT PK_ENTREPRISE PRIMARY KEY (SIRET_ENTREPRISE) DATE_REALISATION ); MONTANT CREATE TABLE MAISON ( COORDONNEES CHAR(32) NOT NULL, DATE_CONSTRUCTION DATE , SURFACE NUMBER(4), CONSTRAINT PK_MAISON PRIMARY KEY (COORDONNEES) TYPE_TRAVAUX ); NUM_TRAVAUX CREATE TABLE TYPE_TRAVAUX DESIGNATION ( NUM_TRAVAUX NUMBER(4) NOT NULL, DESIGNATION CHAR(32) NOT NULL, CONSTRAINT PK_TYPE_TRAVAUX PRIMARY KEY (NUM_TRAVAUX) ); CREATE TABLE REALISER ( NUM_TRAVAUX NUMBER(4) NOT NULL, SIRET_ENTREPRISE CHAR(32) NOT NULL, COORDONNEES CHAR(32) NOT NULL, DATE_REALISATION DATE , MONTANT NUMBER(4), CONSTRAINT PK_REALISER PRIMARY KEY (NUM_TRAVAUX, SIRET_ENTREPRISE, COORDONNEES), CONSTRAINT FK_TYPE_TRAVAUX FOREIGN KEY (NUM_TRAVAUX) REFERENCES TYPE_TRAVAUX (NUM_TRAVAUX), CONSTRAINT FK_ENTREPRISE FOREIGN KEY (SIRET_ENTREPRISE) REFERENCES ENTREPRISE (SIRET_ENTREPRISE), CONSTRAINT FK_MAISON FOREIGN KEY (COORDONNEES) REFERENCES MAISON (COORDONNEES) Michel Dubois UML pour les bases de donnes- p. 357 );

ASSOCIATION 1:N REFLEXIVE


TACHE num tache designation duree
0,1 suit

Preceder

0,n precede

TACHE NUM_TACHE NUM_TACHE_PRECEDE DESIGNATION Preceder DUREE

La rgle n2 s applique.
Michel Dubois

UML pour les bases de donnes- p. 358

ASSOCIATION 1:N REFLEXIVE


TACHE CREATE TABLE TACHE NUM_TACHE ( NUM_TACHE_PRECEDE NUM_TACHE NUMBER(4) NOT NULL, DESIGNATION Preceder DUREE NUM_TACHE_PRECEDE NUMBER(4) , DESIGNATION CHAR(32) NOT NULL, DUREE DATE, CONSTRAINT PK_TACHE PRIMARY KEY (NUM_TACHE), CONSTRAINT FK_PRECEDE FOREIGN KEY (NUM_TACHE_PRECEDE) REFERENCES TACHE (NUM_TACHE) );

Michel Dubois

UML pour les bases de donnes- p. 359

ASSOCIATION N:M REFLEXIVE


0,n pere/mere

PERSONNE num personne nom

est parent de

0,2 enfant

PERSONNE NUM_PERSONNE NOM

enfant

EST_PARENT_DE NUM_PERSONNE NUM_PERSONNE_PERE_MERE

pere/mere

La rgle n3 s applique.
Michel Dubois UML pour les bases de donnes- p. 360

ASSOCIATION N:M REFLEXIVE


CREATE TABLE PERSONNE ( NUM_PERSONNE NUMBER(4) NOT NULL, NOM CHAR(32) NOT NULL, CONSTRAINT PK_PERSONNE PRIMARY KEY (NUM_PERSONNE) ); PERSONNE enfant EST_PARENT_DE CREATE TABLE EST_PARENT_DE NUM_PERSONNE NUM_PERSONNE NOM ( NUM_PERSONNE_PERE_MERE NUM_PERSONNE NUMBER(4) NOT NULL, pere/mere NUM_PERSONNE_PERE_MERE NUMBER(4) NOT NULL, CONSTRAINT PK_EST_PARENT_DE PRIMARY KEY (NUM_PERSONNE, NUM_PERSONNE_PERE_MERE), CONSTRAINT FK_PERSONNE FOREIGN KEY (NUM_PERSONNE) REFERENCES PERSONNE (NUM_PERSONNE), CONSTRAINT FK_PERE_MERE FOREIGN KEY (NUM_PERSONNE_PERE_MERE) REFERENCES PERSONNE (NUM_PERSONNE) );
Michel Dubois UML pour les bases de donnes- p. 361

SPCIALISATION La rgle n2 peut s appliquer.


PERSONNE num personne nom ddn

ETUDIANT niveau

ENSEIGNANT grade

Michel Dubois

UML pour les bases de donnes- p. 362

SPCIALISATION
PERSONNE CREATE TABLE PERSONNE NUM_PERSONNE NOM ( DDN NUM_PERSONNE NUMBER(4) NOT NULL, NOM CHAR(32) NOT NULL, specialiser specialiser DDN DATE NOT NULL, ENSEIGNANT ETUDIANT NUM_PERSONNE CONSTRAINT PK_PERSONNE PRIMARY KEY (NUM_PERSONNE) NUM_PERSONNE GRADE NIVEAU NOM NOM ); DDN DDN CREATE TABLE ETUDIANT ( NUM_PERSONNE NUMBER(4) NOT NULL, NIVEAU CHAR(32) , NOM CHAR(32) NOT NULL, DDN DATE NOT NULL, CONSTRAINT PK_ETUDIANT PRIMARY KEY (NUM_PERSONNE), CONSTRAINT FK_SPECIALISER1 FOREIGN KEY (NUM_PERSONNE) REFERENCES PERSONNE (NUM_PERSONNE) ); CREATE TABLE ENSEIGNANT ( NUM_PERSONNE NUMBER(4) NOT NULL, GRADE CHAR(32) NOT NULL, NOM CHAR(32) NOT NULL, DDN DATE NOT NULL, CONSTRAINT PK_ENSEIGNANT PRIMARY KEY (NUM_PERSONNE), CONSTRAINT FK_SPECIALISER2 FOREIGN KEY (NUM_PERSONNE) REFERENCES PERSONNE (NUM_PERSONNE) );

Michel Dubois

UML pour les bases de donnes- p. 363

GNRALISATION La rgle n2 peut s appliquer.


TIERS num tiers raison sociale adresse

CLIENT SIRET client decouvert autorise adresse livraison

FOURNISSEUR SIRET fournisseur delai livraison

Michel Dubois

UML pour les bases de donnes- p. 364

GNRALISATION
TIERS CREATE TABLE TIERS NUM_TIERS ( RAISON_SOCIALE NUM_TIERS CHAR(32) NOT NULL, ADRESSE RAISON_SOCIALE CHAR(32) NOT NULL, ADRESSE CHAR(32) NOT NULL, CONSTRAINT PK_TIERS PRIMARY KEY (NUM_TIERS) ); Generalisation Generalisation CREATE TABLE CLIENT FOURNISSEUR CLIENT ( NUM_TIERS NUM_TIERS NUM_TIERS CHAR(32) NOT NULL, SIRET_FOURNISSEUR SIRET_CLIENT SIRET_CLIENT CHAR(32) NOT NULL, DELAI_LIVRAISON DECOUVERT_AUTORISE DECOUVERT_AUTORISE NUMBER(4) , RAISON_SOCIALE ADRESSE_LIVRAISON ADRESSE_LIVRAISON CHAR(32) NOT NULL, ADRESSE RAISON_SOCIALE RAISON_SOCIALE CHAR(32) NOT NULL, ADRESSE ADRESSE CHAR(32) NOT NULL, CONSTRAINT PK_CLIENT PRIMARY KEY (SIRET_CLIENT), CONSTRAINT FK_GENERALISATION1 FOREIGN KEY (NUM_TIERS) REFERENCES TIERS (NUM_TIERS) ); CREATE TABLE FOURNISSEUR ( NUM_TIERS CHAR(32) NOT NULL, SIRET_FOURNISSEUR CHAR(32) NOT NULL, DELAI_LIVRAISON DATE NOT NULL, RAISON_SOCIALE CHAR(32) NOT NULL, ADRESSE CHAR(32) NOT NULL, CONSTRAINT PK_FOURNISSEUR PRIMARY KEY (SIRET_FOURNISSEUR), CONSTRAINT FK_GENERALISATION2 FOREIGN KEY (NUM_TIERS) REFERENCES TIERS (NUM_TIERS) );
Michel Dubois UML pour les bases de donnes- p. 365

Chapitre 10 Les options procdurales d Oracle


Michel Dubois
I.U.T. de Vannes
Michel.Dubois@univ-ubs.fr

Michel Dubois

UML pour les bases de donnes- p. 366

PLAN Les options procdurales (cf. Annexe A) Le langage PL/SQL (cf. Annexe B) Exemples de gestion de certaines contraintes d intgrits.
Michel Dubois UML pour les bases de donnes- p. 367

EXCLUSION DE PARTICIPATION D UNE ENTIT PLUSIEURS RELATIONS Un article donn ne peut la fois tre achet un fournisseur et approvisionner auprs d une unit de production.
Acheter
1,n

FOURNISSEUR num fournisseur

0,n

ARTICLE num article X

0,n

Approvisionner

0,n

UNITE num unite


UML pour les bases de donnes- p. 368

Michel Dubois

CONTRAINTE D'EXCLUSION
ACHETER FOURNISSEUR

DROP TRIGGER X_ACHETER_APPROVISIONNER; NUM_FOURNISSEUR NUM_FOURNISSEUR NUM_ARTICLE CREATE TRIGGER X_ACHETER_APPROVISIONNER BEFORE INSERT ON Acheter FOR EACH ROW ARTICLE NUM_ARTICLE DECLARE nb_article_approvisionner number; BEGIN SELECT COUNT(*) INTO nb_article_approvisionner UNITE APPROVISIONNER NUM_UNITE NUM_UNITE FROM Approvisionner NUM_ARTICLE WHERE Num_Article=:new.Num_Article; IF nb_article_approvisionner >0 THEN raise_application_error(-20002, 'C''est un article d''approvisionnement'); END IF; END; / DROP TRIGGER X_APPROVISIONNER_ACHETER; CREATE TRIGGER X_APPROVISIONNER_ACHETER BEFORE INSERT ON Approvisionner FOR EACH ROW DECLARE nb_article_acheter number; BEGIN SELECT COUNT(*) INTO nb_article_acheter FROM Acheter WHERE Num_Article=:new.Num_Article; IF nb_article_acheter >0 THEN raise_application_error(-20002, 'C''est un article acheter'); END IF; Michel Dubois UML pour les bases de donnes- p. 369 END; /

CONTRAINTES D'EXCLUSION DE RELATIONS SUR D'AUTRES RELATIONS Une personne ne peut tre locataire et propritaire d'un mme logement.
Louer
0,n

LOGEMENT num logement

0,n

0,1

PERSONNE
Michel Dubois

0,n

Possder
UML pour les bases de donnes- p. 370

num personne

CONTRAINTE D'EXCLUSION
DROP TRIGGER X_LOUER_LOGEMENT; CREATE TRIGGER X_LOUER_LOGEMENT BEFORE INSERT OR UPDATE ON Louer FOR EACH ROW DECLARE possede_deja number; BEGIN SELECT COUNT(*) INTO possede_deja FROM Logement WHERE Num_Proprietaire=:new.Num_personne AND Num_Logement=:new.Num_Logement; IF possede_deja >0 THEN raise_application_error(-20002, 'C''est le propritaire du logement'); END IF; END; / LOUER LOGEMENT DROP TRIGGER X_LOGEMENT_LOUER; NUM_LOGEMENT NUM_LOGEMENT CREATE TRIGGER X_LOGEMENT_LOUER NUM_PROPRIETAIRE NUM_PERSONNE BEFORE UPDATE OR INSERT ON Logement FOR EACH ROW WHEN (new.Num_Proprietaire IS NOT NULL) DECLARE Possder deja_locataire number; PERSONNE BEGIN NUM_PERSONNE SELECT COUNT(*) INTO deja_locataire FROM Louer WHERE Num_Logement=:new.Num_Logement AND Num_Personne=:new.Num_Proprietaire; IF deja_locataire >0 THEN raise_application_error(-20002, 'C''est un locataire du logement'); END IF; END; / Michel Dubois UML pour les bases de donnes- p. 371

ASSOCIATION N:M -> (1,N)-(0,N)


La rgle n3 s applique. Mais il y a aussi une contrainte de dpendance fonctionnelle totale :
Porter.num_commande->(T)Commande.num_commande Toute commande de la relation commande se retrouve dans la relation porter.

COMMANDE[num_commande]=PORTER[num_commande] <=>PORTER[num_commande]COMMANDE[num_commande] : FK et COMMANDE[num_commande] PORTER[num_commande] On teste :


COMMANDE [num_commande] - PORTER[num_commande] = ...WHERE NOT EXISTS ( SELECT num_commande FROM commande MINUS SELECT num_commande FROM porter)
COMMANDE
Michel Dubois

ARTICLE
1,n

num commande date commande status

Porter quantite

0,n

num article designation quantite stock UML pour les bases de donnes- p. 372 prix

ASSOCIATION N:M -> (1,N)-(0,N)


CREATE TABLE COMMANDE ( NUM_COMMANDE NUMBER(4) NOT NULL, DATE_COMMANDE DATE , STATUS CHAR(32) , CONSTRAINT PK_COMMANDE PRIMARY KEY (NUM_COMMANDE) ); CREATE TABLE ARTICLE ARTICLE COMMANDE ( PORTER NUM_ARTICLE NUM_COMMANDE NUM_ARTICLE CHAR(32) NOT NULL, DESIGNATION DATE_COMMANDE NUM_COMMANDE QUANTITE_STOCK DESIGNATION CHAR(32) NOT NULL, STATUS NUM_ARTICLE PRIX QUANTITE QUANTITE_STOCK NUMBER(4) , PRIX NUMBER(4) NOT NULL, CONSTRAINT PK_ARTICLE PRIMARY KEY (NUM_ARTICLE) ); CREATE TABLE PORTER ( NUM_COMMANDE NUMBER(4) NOT NULL, NUM_ARTICLE CHAR(32) NOT NULL, QUANTITE NUMBER(4) NOT NULL, CONSTRAINT PK_PORTER PRIMARY KEY (NUM_COMMANDE, NUM_ARTICLE), CONSTRAINT FK_COMMANDE FOREIGN KEY (NUM_COMMANDE) REFERENCES COMMANDE (NUM_COMMANDE), CONSTRAINT FK_ARTICLE FOREIGN KEY (NUM_ARTICLE) REFERENCES ARTICLE (NUM_ARTICLE) );
Michel Dubois UML pour les bases de donnes- p. 373

DCLENCHEURS ET SQUENCES : GESTION DE L'IDENTIFIANT DE LA TABLE COMMANDE


-- gestion automatique de l'identifiant de la table commande drop sequence seq_commande; create sequence seq_commande increment by 1 start with 1 / drop trigger tseq_commande; create trigger tseq_commande before insert or update on commande for each row declare iCounter commande.Num_Commande%type; cannot_change_counter exception; begin if inserting then select seq_commande.nextval into iCounter from dual; :new.Num_Commande:=iCounter; end if; if updating then if not (:new.Num_Commande=:old.Num_Commande) then raise cannot_change_counter; end if; end if; exception when cannot_change_counter then raise_application_error(-20000, 'Je ne peux pas changer ce compteur automatique !'); end; / Michel Dubois UML pour les bases de donnes- p. 374

PROCDURES STOCKES ET PACKAGE : GESTION DE LA CONTRAINTE DE TOTALIT (1/3)


CREATE OR REPLACE PACKAGE GererDFTCom AS PROCEDURE INSERT_COMMANDE( article_cmd IN Article.NUM_Article%TYPE, quantite_cmd IN Porter.quantite%TYPE, date_cmd IN Commande.Date_Commande%TYPE, status_cmd IN Commande.status%TYPE); PROCEDURE DEL_INVALIDE_COMMANDE; END GererDFTCom; /SHOW ERROR -- implementation (corps des traitements publics, definitions des types et curseurs publics -- et eventuellement objets prives uniquement accessible dans le package CREATE OR REPLACE PACKAGE BODY GererDFTCom AS PROCEDURE DEL_INVALIDE_COMMANDE IS BEGIN DELETE FROM COMMANDE WHERE NUM_COMMANDE IN ( SELECT NUM_COMMANDE FROM COMMANDE MINUS SELECT NUM_COMMANDE FROM PORTER ); COMMIT; EXCEPTION WHEN OTHERS THEN ROLLBACK; END DEL_INVALIDE_COMMANDE;

Michel Dubois

UML pour les bases de donnes- p. 375

PROCDURES STOCKES ET PACKAGE : GESTION DE LA CONTRAINTE DE TOTALIT (2/3)


PROCEDURE INSERT_COMMANDE ( article_cmd IN Article.Num_Article%TYPE, quantite_cmd IN Porter.quantite%TYPE, date_cmd IN Commande.Date_Commande%TYPE, status_cmd IN Commande.status%TYPE ) IS trace NUMBER; qte_invalide EXCEPTION; totalite_invalide EXCEPTION; art Article.Num_Article%TYPE; BEGIN -- la condition de dependance fonctionnelle totale ? IF (article_cmd IS NULL OR quantite_cmd IS NULL) THEN RAISE totalite_invalide; END IF; -- l'article existe-t-il ? trace :=2; SELECT Num_Article INTO art FROM ARTICLE WHERE Num_Article=article_cmd; -- la quantite est elle valide ? IF (quantite_cmd<=0) THEN RAISE qte_invalide; END IF; -- Memoriser la commande comme transaction atomique INSERT INTO Commande VALUES (1,date_cmd,status_cmd); INSERT INTO Porter VALUES (seq_commande.currval,article_cmd,quantite_cmd); COMMIT; Michel Dubois UML pour les bases de donnes- p. 376

PROCDURES STOCKES ET PACKAGE : GESTION DE LA CONTRAINTE DE TOTALIT (3/3)


PROCEDURE INSERT_COMMANDE ( ... ) IS trace NUMBER; qte_invalide EXCEPTION; totalite_invalide EXCEPTION; art Article.Num_Article%TYPE; BEGIN ... EXCEPTION WHEN NO_DATA_FOUND THEN IF (trace=2) THEN RAISE_APPLICATION_ERROR(-20010,'Desole mais l''article '||article_cmd||' n''est pas dans la base.'); END IF; WHEN qte_invalide THEN RAISE_APPLICATION_ERROR(-20010,'Desole mais la quantit commande n''est pas valide !'); WHEN totalite_invalide THEN RAISE_APPLICATION_ERROR(-20010,'Desole mais la condition de totalite n''est pas valide !'); WHEN OTHERS THEN ROLLBACK; END INSERT_COMMANDE; -- fin du corps du package END GererDFTCom; / SHOW ERROR

Michel Dubois

UML pour les bases de donnes- p. 377

GESTION DES DROITS ET JEU DE TEST


-- Oprations faites par lutilisateur exercice GRANT SELECT,INSERT,UPDATE ON exercice.Article TO ops$duboism; GRANT SELECT ON exercice.Porter TO ops$duboism; GRANT SELECT ON exercice.Commande TO ops$duboism; GRANT EXECUTE ON exercice.GererCom TO ops$duboism; -- Oprations faites par lutilisateur ops$duboism; DROP SYNONYM ARTICLE; CREATE SYNONYM ARTICLE FOR exercice.Article; DROP SYNONYM COMMANDE; CREATE SYNONYM COMMANDE FOR exercice.Commande; DROP SYNONYM PORTER; CREATE SYNONYM PORTER FOR exercice.Porter; DROP SYNONYM GererDFTCom; CREATE SYNONYM GererDFTCom FOR exercice.GererDFTCom; INSERT INTO ARTICLE VALUES('A1','Article 1',1,1000); INSERT INTO ARTICLE VALUES('A2','Article 2',20,1000); INSERT INTO ARTICLE VALUES('A3','Article 3',20,1000); INSERT INTO ARTICLE VALUES('A4','Article 4',20,1000); INSERT INTO COMMANDE VALUES(1,SYSDATE,'commandee'); --refus car pas le droit INSERT INTO COMMANDE VALUES(2,SYSDATE,'livree'); --refus car pas le droit INSERT INTO COMMANDE VALUES(3,SYSDATE,'payee'); --refus car pas le droit INSERT INTO COMMANDE VALUES(4,SYSDATE,'commandee'); --refus car pas le droit INSERT INTO PORTER VALUES(1,'A1',100); --refus car pas le droit INSERT INTO PORTER VALUES(1,'A2',200); --refus car pas le droit INSERT INTO PORTER VALUES(2,'A1',100); --refus car pas le droit INSERT INTO PORTER VALUES(3,'A1',100); --refus car pas le droit EXECUTE GererDFTCom.INSERT_COMMANDE('A1',100,SYSDATE,'commandee'); --refus EXECUTE GererDFTCom.INSERT_COMMANDE('A6',100,SYSDATE,'livree'); --refus EXECUTE GererDFTCom.INSERT_COMMANDE('A1',-20,SYSDATE,'commandee'); --refus car mauvaise quantit EXECUTE GererDFTCom.INSERT_COMMANDE(NULL,100,SYSDATE,'commandee'); --refus car contrainte de totalit EXECUTE GererDFTCom.DEL_INVALIDE_COMMANDE(); --utile si les droits d insertion, de mise a jour, ou de suppression -- directs un sur les tables COMMANDES et PORTER sont attribus (au propritaire ou a un autre utilisateur)

Michel Dubois

UML pour les bases de donnes- p. 378

LE MODLE DEXCUTION DEFINER RIGHTS


Permet de centraliser laccs aux structures de donnes Les rles ne sont pas pris en compte. Seuls les privilges directement accords sont reconnus. Ce modle peut poser des problmes qui peuvent tre rsolues par celui du "INVOKER RIGHTS" apparu avec Oracle 8i. Il suffit de prciser le modle choisi lors de la spcification
OE Code
Order_Mgt
Place Cancel

Sam_Sales
Close Old Orders

OE Data

Orders

Ne peut pas modifier la table directement

[ AUTHID { DEFINER | CURRENT_USER } ]


Michel Dubois

Note: Les paquetages livrs avec Oracle ont depuis longtemps la possibilit de sexcuter selon le modle invoker rights.
UML pour les bases de donnes- p. 379

LE MODLE INVOKER RIGHTS


Les rles sont pris en compte pour la vrification des privilges. Un schma peut possder la gestion centralise (code applicatif) et voir ses rfrences aux donnes rsolues lexcution vers le schma de lappelant. Central Code schema
PACKAGE acct_mgr
make
AUTHID CURRENT_USER

User/Data schema
PROCEDURE mng_account IS BEGIN ... code.acct_mgr.destroy(...); END;

modify destroy

...FROM accounts WHERE...

accounts table

Michel Dubois

UML pour les bases de donnes- p. 380

DEFINER VERSUS INVOKER

Michel Dubois

UML pour les bases de donnes- p. 381

Вам также может понравиться