Molteplicità e relazioni ternarie in UML e ER

0

Con i diagrammi entità-relazione, ci sono due convenzioni di denotare molteplicità, (I) e (II):

Dì, un insegnante T sta dando ‹G› ad alcune lezioni L . Quindi possiamo scrivere questo come

        1       M
 (I)  T ———‹G›——— L,

lettura

“Every teacher is giving multiple lectures and every lecture is given by exactly one teacher.”,

o come

        M       1
(II)  T ———‹G›——— L,

lettura

“Any teacher participates in multiple giving-relations and any lecture participates in exactly one giving-relation”.

L'immagine diventa più complicata quando introduciamo relazioni ternarie, diciamo che vogliamo esprimere che un insegnante sta tenendo lezioni in una certa stanza R :

       1       ?                  M       1
 (I) T ———‹G›——— L    and  (II) T ———‹G›——— L
           |                          |
           | ?                        | MC
           R                          R

Mentre posso interpretare (II) leggendolo come

“Any teacher participates in multiple giving-relations, any lecture participates in exactly one giving-relation, and any room participates in none or multiple giving-relations.”

e tutto ha perfettamente senso, non vedo alcun modo per interpretare o esprimere la situazione nel caso di (I).

Ad esempio, vogliamo (ancora) dire che

“Every lecture is being given by exactly one teacher in exactly one room.”

Quindi questo sembra determinare la molteplicità '1' nell'insegnante (come già inserito). Ma poi, dal punto di vista della stanza, la relazione avrebbe letto come

“In every room, there are being given (multiple) lectures by exactly one teacher.”

Questo è già falso, poiché potrebbero esserci molti insegnanti che tengono lezioni in una certa stanza.

Come capisco, l'interpretazione (I) è usata nei diagrammi delle classi UML (e, naturalmente, a volte nei diagrammi ER) - come viene risolto? Cosa devo compilare per i punti interrogativi? Sto leggendo questa roba in modo errato?

    
posta k.stm 25.05.2015 - 20:53
fonte

1 risposta

1

Non penso che UML prescriva il significato esatto. La mia impressione è che UML si limiti a definire il possibile numero di cose su ciascuna estremità.

Ad esempio, girando su Sparx EA, creo un nuovo modello UML di base e un diagramma di classe. Faccio una "insegnante" di classe e una "lezione" di classe, quindi disegno una relazione di "aggregazione" da "lezione" a "insegnante" in modo tale che il diamante vuoto sia alla fine "insegnante".

(Questo sembra essere approssimativamente quello che hai in mente sopra)

UML (Sparx) mi consente quindi felicemente di assegnare moltiplicazioni di "1- *" a ciascuna estremità. Cosa significa ESATTAMENTE l'aggregazione non è chiarita da UML. Penso che questo tipo di persistente "esercizio lasciato al lettore" sia una delle ragioni per cui UML non tenta di prescrivere il comportamento dei generatori di codice.

Spero che questo aiuti ...

    
risposta data 26.05.2015 - 16:28
fonte

Leggi altre domande sui tag