Con il termine Object-Relation impedance mismatch ci si
riferisce ad un insieme di problematiche concettuali e tecniche che si
incontrano quando si vuole far dialogare un RDBMS, basato su un modello
relazionale cioè un modello matematico con un programma scritto con un
linguaggio di programmazione orientato agli oggetti ( basato sul paradigma
object-oriented).
Negli ultimi anni, con l’avvento dell’object oriented, esso
è stato oggetto di numerose pubblicazioni. Una trattazione dell’argomento degna
di nota è quella in http://blogs.tedneward.com/2006/06/26/The+Vie%20tnam+Of+Computer+Science.aspx
, dove l’object-relation impedance mismatch viene etichettato come “The Vietnam
of Computer Science”.
Di soluzioni in letteratura ve ne sono parecchie. La più
famosa è l’utilizzo di un ORM.
Tuttavia, lo scopo di questo articolo è concentrarsi sul problema cioè spiegare a livello concettuale quali sono le differenze tra i due modelli:
Di seguito le diverse problematiche:
N.
|
Problema
|
Descrizione del problema
|
1
|
Struttura, Ereditarietà, Interfaccia e Polimorfismo
|
Una classe specifica gli attributi e i metodi che devono avere gli
oggetti che appartengono ad essa. Una classe può anche far parte di una
gerarchia (Concetto di ereditarietà).
Il modello relazionale non contempla il concetto di “classe” di
oggetti e non fornisce una analogia per le gerarchie, interfacce e
polimorfismo.
|
2
|
Incapsulamento
|
Lo stato di un oggetto è incapsulato ed è accessibile attraverso i metodi.
Lo stato di una riga di una tabella non contempla questo aspetto e può essere
modificato in maniera diretta.
|
3
|
Identità
|
Gli oggetti esistono indipendentemente dal loro stato. Essi possono
essere identici o uguali. Se due oggetti sono identici, essi sono lo stesso
oggetto. Se sono uguali, essi contengono gli stessi valori. Nel modello
relazionale, invece, le righe sono identificate solo dai valori che esse
contengono.
|
4
|
Associazioni
|
Il modello relazionale contempla solo un tipo di associazione: l’utilizzo
di una chiave esterna, che si riferisce ad una chiave primaria di un’altra
tabella. Il paradigma Object-Oriented contempla diverse tipologie di
associazione: uno a uno, uno a molti, molti a molti.
|
5
|
Coesione
|
Tutte le proprietà di un oggetto sono contenuto all’interno di esso. Invece,
i dati relazioni che corrispondono ad una stessa entità possono essere stati
suddivisi in più tabelle (fase di ristrutturazione dello schema logico)
|
6
|
Granularità dei tipi di dato
|
Tipi di dati composti sono tipicamente rappresentati nei linguaggi OO mediante classi
di oggetti, mentre nel modello relazionale non si prevede alcun meccanismo per
la definizione di tipi di dato composti. Esempio: Indirizzo.
|
0 commenti:
Posta un commento