UML BDR .pdf
À propos / Télécharger Aperçu
Ce document au format PDF 1.2 a été généré par Windows NT 4.0 / Acrobat Distiller 3.01 pour Power Macintosh, et a été envoyé sur fichier-pdf.fr le 18/04/2015 à 19:17, depuis l'adresse IP 105.101.x.x.
La présente page de téléchargement du fichier a été vue 582 fois.
Taille du document: 26 Ko (16 pages).
Confidentialité: fichier public
Aperçu du document
Des diagrammes objets vers le modèle
Relationnel
J. Guyot - Université de Genève
1
Résumé des concepts
Modèle Objet
Modèle Relationnel
Classe
Relation
Attribut
Attribut
Méthode
(vue, fonction, attribut,
procédure)
Association
0..1,1..1
Attribut
0..n, n..m
Relation
Association attribuée
(voir la cardinalité de
l’association)
Agrégation
0..1,1..1
Attribut (+valeur null)
0..n, n..m
Relation
Généralisation
Attribut (+valeur null)
Relation
Objet
>> implémentation
>> Relationnel
Relationnel
>> interprétation
>> Objet
J. Guyot - Université de Genève
2
Classe -> Relation
Exemple:
Rectangle
largeur
hauteur
surface( )
périmètre( )
agrandir( )
diagonal( )
identifier les objets ?
->ajouter une clé artificielle si une clé naturelle n’existe pas
Oid = Numéro d’objet
Create Table Rectangle (
Id_rectangle integer primary key,
largeur number,
hauteur number)
J. Guyot - Université de Genève
3
Que faire avec les méthodes ?
Pas de langage procédural (PL/SQL, Visual Basic, …)
attributs mémorisés pour les méthodes calculées
Create Table Rectangle (
…
surface number,
perimetre number, …)
OU vues
Create vue V_rectangle as
Select
Id_rectangle,
argeur,
hauteur
largeur*hauteur surface,
2*(largeur+hauteur) perimetre)
from Rectangle
pour les autres méthodes, utiliser des mises à jour si
possible
Update Rectangle
Set largeur=2*largeur, hauteur=2*hauteur
Where num_rectangle= …
Si langage procédural alors il faut l’utiliser ! mais ne
remplace pas les méthodes (héritage …)
J. Guyot - Université de Genève
4
Association
A
Clé_A
min..maxA
r
B
min..maxB Clé_B
Objectif: mémoriser l’association entre A et B
Solution dépend de la cardinalité de r (maxA et maxB)
MaxA
1
>1
MaxB
1
- si la clé de A = la
Ajouter la clé de A
cléde B, ne rien
dans la relation de B
faire
comme attribut
- sinon choisir une
des autres solutions
>1
Ajouter la clé de A
Créer une relation r
dans la relation de B
ayant comme attribut
comme attribut
la clé de A et la clé de
B
J. Guyot - Université de Genève
5
Exemple max=1
Rattachée à
Canton
1
Ville
1..n
Create Table Canton(
NomCanton varchar(20) primary key,
Surface number
…)
Create Table Ville(
NomVille varchar(20) primary key,
Rattache_A varchar(20) references Canton(NomCanton),
Population number
…)
J. Guyot - Université de Genève
6
Exemple max=1
Personne
conjointe
0..1
conjoint
0..1
marié a
Create Table Personne(
Id_personne number primary key,,
Nom varchar(20),
Prenom varchar(20),
DateNaiss date,
Conjoint number references Personne(Id_personne),
…)
problèmes ?
Maintenir la symétrie (redondance)
J. Guyot - Université de Genève
7
association max>1
Auteurs
Ecrit par
0..*
Livres
1..*
Create Table Auteur(
Id_auteur number primary key,,
Nom varchar(20),
Prenom varchar(20),
…)
Create Table Livre(
ISBN number primary key,,
Titre varchar(20),
…)
Create Table Livre(
Id_auteur number references Auteur,
ISBN number references Livre,
J. Guyot - Université de Genève
8
association max>1
Personne
0..*
0..*
Ami de
Create Table Personne(
Id_personne number primary key,,
Nom varchar(20),
Prenom varchar(20),
DateNaiss date,
…)
Create Table Ami_de(
Id_personne number,
Id_ami references Personne(id_personne))
problèmes ?
Maintenir la symétrie (redondance) ?
Maintenir la transitivité (redondance) ?
J. Guyot - Université de Genève
9
Association attribuée
Personne
0..n
travailler à
Ville
0..n
depuis
jusqua
Solution: ajouter les attributs de l’association là où se
trouve représentée l’association.
Create Table Personne(
Id_personne number primary key,,
Nom varchar(20),
Prenom varchar(20),
DateNaiss date,
…)
Create Table Ville(
NomVille varchar(20) primary key,
Population number
…)
Create Table Travail_a(
Id_personne number references Personne,
NomVille varchar(20) references Ville,
Depuis date,
Jusqua date)
J. Guyot - Université de Genève
10
Agrégation et composition
Traiter comme une association
(la dépendance entre les classes est souvent une
indication pour l’utilisation du delete cascade !)
Polygone
Point
1
3..n
Create Table Polygone(
Id_polygone number primary key,
Couleur varchar(20),
…)
Create Table Point(
Id_polygone number references Polygone,
num_ordre number,
x number,
y number)
J. Guyot - Université de Genève
11
Généralisation:TOUT dans UN
Solution 1: tout dans la même table et gestion des null
Général
est un
Particulier 1
Particulier 2
create table Général(
id_général number primary key,
attribut_de_général,
…
est_un_particulier1 Char(1), -- ‘N’=non, ‘O’=oui
attribut_de_particulier1,
…
est_un_particulier2 Char(1), -- ‘N’=non, ‘O’=oui
attribut_de_particulier2,
…)
- Les attributs non utilisés sont laissés à null
- Créer une vue pour chaque classe pour retrouver
exactement la bonne description
J. Guyot - Université de Genève
12
Généralisation:CHACUN a sa place
Solution 2: chaque classe est une relation, on gère
l’éclatement des informations
Général
est un
Particulier 1
Particulier 2
create table Général(
id_général number primary key,
attribut_de_général,
…)
create table Particulier1(
id_général number references Général,
attribut_de_particulier2,
…)
create table Particulier2(
id_général number references Général,
attribut_de_particulier2,
…)
- Le type d’un objet est déterminé par sa présence dans
une sous-relation (éventuellement ajouter un attribut
dans Général)
- Créer une vue pour chaque classe pour retrouver
exactement l’ensemble de la description
Plus difficile à gérer que la solution 1, mais plus précise
J. Guyot - Université de Genève
13
Exemple: Solution 1
Boisson
nom_boisson
commentaire
sel_mineral
nom_sel
formule
mineral
source
alcoolisee
teneur_en_alcool
quantite_mg
Create table Boisson(
Nom_boisson varchar(20) primary key,
Commentaire varchar(1000),
Est_un_mineral char(1),
Source varchar(20),
Est_un_alcoolise char(1),
Teneur_en_alcool number)
Create table Sel_mineral(
Nom_sel varchar(20) primary key,
Formule varchar(100))
Create table Composition(
Nom_boisson varchar(20) references Boisson,
Nom_sel varchar(20) references Sel_mineral,
Quantite_mg number)
Exemple de vue:
Create view Mineral as
Select Nom_boisson, Commentaire, Source
From Boisson
Where est_un_mineral =’O’
J. Guyot - Université de Genève
14
Exemple: Solution 1
Boisson
nom_boisson
commentaire
sel_mineral
nom_sel
formule
mineral
source
alcoolisee
teneur_en_alcool
quantite_mg
Create table Boisson(
Nom_boisson varchar(20) primary key,
Commentaire varchar(1000))
Create table Mineral(
Nom_boisson varchar(20) primary key
references Boisson,
Source varchar(20))
Create table Alcoolise (
Nom_boisson varchar(20) ) primary key
references Boisson,
Teneur_en_alcool number)
Create table Sel_mineral(
Nom_sel varchar(20) primary key,
Formule varchar(100))
Create table Composition(
Nom_boisson varchar(20) references Mineral,
Nom_sel varchar(20) references Sel_mineral,
Quantite_mg number)
Exemple de vue:
Create view Mineral as
Select m.Nom_boisson, b.Commentaire, m.Source
From Boisson b, Mineral m
Where m.nom_boisson=b.nom_boisson
J. Guyot - Université de Genève
15
Exercice
Discuter les avantages et les inconvénients des solutions 1
et 2 pour modéliser la généralisation, pour les points
Performance,
Validation des contraintes,
Evolutivité,
…
J. Guyot - Université de Genève
16