Bonjour Waldar et merci à vous.
Envoyé par
Waldar
il me semble que la traduction du MCD vers le MPD est erronée
En fait, elle est juste... On est ici dans le mode de représentation propre à PowerAMC et l’instruction CREATE TABLE ci-dessous est celle qui a été fournie par l’AGL :
1 2 3 4 5 6 7 8
| CREATE TABLE TELEPHONE
(
PersonneId INTEGER NOT NULL
, TelephoneId TINYINT NOT NULL
, TelephoneNumero VARCHAR(24) NOT NULL
, CONSTRAINT TEL_PK PRIMARY KEY (PersonneId, TelephoneId)
, CONSTRAINT TEL_PSN_PK FOREIGN KEY (PersonneId) REFERENCES PERSONNE ON DELETE CASCADE
) ; |
Instruction qui comporte donc la clé composite (PersonneId, TelephoneId). Notez aussi la clause CASCADE confirmant que TELEPHONE n’est jamais qu’une propriété multivaluée de PERSONNE.
Cette clé composite est la conséquence de l’utilisation de l’identification relative, symbolisée dans le cas de PowerAMC par la mise entre parenthèses de la cardinalité 1,1 :
[PERSONNE]----0,n----(POSSEDER)----(1,1)----[TELEPHONE]
Si on ôte les parenthèses :
[PERSONNE]----0,n----(POSSEDER)---- 1,1----[TELEPHONE]
Alors l’identification est absolue et PowerAMC produit l’instruction suivante :
1 2 3 4 5 6 7 8
| CREATE TABLE TELEPHONE
(
PersonneId INTEGER NOT NULL
, TelephoneId TINYINT NOT NULL
, TelephoneNumero VARCHAR(24) NOT NULL
, CONSTRAINT TEL_PK PRIMARY KEY (TelephoneId)
, CONSTRAINT TEL_PSN_PK FOREIGN KEY (PersonneId) REFERENCES PERSONNE ON DELETE NO ACTION
) ; |
En l’occurrence et conceptuellement parlant, TELEPHONE est élevée au rang d’entité-type forte, faisant qu’on ne peut pas supprimer une personne ayant un téléphone (en tout cas au niveau sémantique, ce que l’on confirme au plan technique avec la clause NO ACTION), ce qui dans le cas de l’univers de Kropernic ne vaut pas puisqu’on y considère un téléphone comme une banale propriété (multivaluée) de la personne.
Pour l’anecdote, les autres AGL ont chacun leur façon de représenter l’identification relative mais produisent tous l’instruction CREATE TABLE ci-dessus :
WinDesign :
[PERSONNE]----0,n----(POSSEDER)---- 1,1 (R)----[TELEPHONE]
Open ModelSphere :
[PERSONNE]----0,n----(POSSEDER)---- 1, 1----[TELEPHONE]
Pour sa part, UML est sémantiquement encore plus précis, grâce à la relation de composition :
[PERSONNE]◄►-1,1--------------------- 0,N----[TELEPHONE]
Etc.
Merci Waldar de votre visite
Partager