domenica 20 dicembre 2009

Entità intrinsecamente deboli


In molti casi una stessa entità può essere “forte” in un certo modello Entità-Relazioni, “debole” in un altro. Queste differenze rispecchiano sia i differenti modelli di business dai quali i modelli E-R sono stati derivati, sia un certo margine di soggettività da parte di chi definisce il modello E-R.

Sui modelli E-R ci sono inevitabili margini di soggettività, dovuti al fatto che sia l’utente che definisce la sua visione del business, sia l’analista che definisce il modello E-R, sono “umani”, quindi possono avere visioni differenti, soggettive, di una stessa realtà.

Esistono però diversi esempi di entità “intrinsecamente deboli”, cioè entità che sono
“predestinate” ad essere “deboli” in qualunque modello E-R. Si tratta delle entità che già nel mondo reale devono necessariamente essere identificate per mezzo di altre entità.

Ecco alcuni esempi.



CAP, Via e NumeroCivico. Tutti sappiamo, quando ad esempio scriviamo una cartolina, che il solo numero civico del destinatario non basta, da solo, a individuarlo: sono necessari anche il Codice di Avviamento Postale (CAP) e la via. A sua volta, anche la via non può essere individuata, in modo univoco, senza il CAP.
In qualunque modello E-R che contenga degli indirizzi, Numero Civico sarà un’entità “debole”, dipendente dalle entità CAP e Via. Anche l’entità Via sarà un’entità “debole”, dipendente da CAP.





Specie e Genere.
Nella “classificazione binomiale” delle specie viventi, introdotta da Linneo, le varie specie sono identificate da un genere (ad esempio, Homo) e dal nome della specie stessa (ad esempio, Sapiens). Il nome di una specie (ad esempio, Homo Sapiens) non basta, da solo, a identificare una specie: infatti esistono (rari) casi di specie con lo stesso nome appartenenti a generi diversi.
In qualunque modello E-R, l’entità Specie sarà, inevitabilmente, un’entità debole: per essere identificata, avrà bisogno della chiave dell’entità sovrastante, il Genere.




Titolo e Cedola.
Nel mondo della finanza, le obbligazioni (bonds) sono individuate da un codice univoco (codice ISIN). Le cedole (coupons) sono individuate dal codice dell’obbligazione e da un progressivo. Le cedole sono un’entità intrinsecamente debole: non hanno, nel mondo reale, una chiave che le identifichi in maniera univoca indipendentemente dal codice dell’obbligazione a cui appartengono. Questa situazione sarà inevitabilmente rispecchiata da qualunque modello E-R che rappresenti le entità Obbligazione e Cedola.


Riassumendo: alcuni concetti del mondo reale possono essere associati, in un modello E-R, a entità “deboli” o “forti”, a seconda della visione di chi definisce il modello. Ad esempio, abbiamo visto in un esempio precedente, che le entità Impiegato e Figlio possono essere rappresentate, in un modello E-R, in modo diverso. Altre entità (ad esempio, il numero civico di un indirizzo postale sono “intrinsecamente deboli”: in qualunque modello E-R, l’entità Numero Civico sarà sempre dipendente dall’entità Via e dall’entità CAP.

Il significato delle chiavi in un modello E-R



Il modello concettuale dei dati (modello E-R) deve rispecchiare, per definizione, la visione dei dati che ha l’utente finale dell’applicazione, senza alcun vincolo di tipo “tecnico”. In quest’ottica, le chiavi delle entità del modello hanno un ruolo fondamentale. Il fatto che un analista definisca due entità del modello E-R con la stessa chiave non può essere una scelta casuale, perché deve rispecchiare il significato, il valore semantico, che le entità hanno per l’utente finale.

Dire che due entità sono in gerarchia IsA implica che, nel modello, le due entità debbano avere la stessa chiave. Viceversa, il fatto che, in un modello E-R-, due entità del modello abbiano la stessa chiave, non può essere casuale: deve rispecchiare il fatto che, nella visione dell’utente, le due entità partecipano alla stessa gerarchia IsA, oppure una è attributiva dell’altra.

Se, come nella figura precedente, l’analista decide che due entità partecipano ma una gerarchia IsA (Impiegato IsA Dipendente, Dirigente IsA Dipendente) allora le due entità dovranno avere, nel modello E-R, la stessa chiave. In questo esempio, il nome della chiave comune alle due entità Impiegato e Dirigente potrebbe essere, ad esempio, (CodiceDipendente).

Si noti che, nella fase di realizzazione di un modello E-R ci sono notevoli margini di soggettività. Partendo dagli stessi business requirements, analisti diversi potrebbero creare modelli E-R diversi che li rappresentino. Ad esempio, si può immaginare un modello E-R dove Impiegato e Dirigente non partecipino nella stessa gerarchia IsA. Ma, in questo caso, l’analista dovrà scegliere, per le due entità, due chiavi differenti: ad esempio, (CodiceImpiegato) e (Codice Dirigente).

Ricapitolando: se l’analista del modello E-R decide che due entità (Impiegato e Dirigente) devono far parte di una stessa gerarchia IsA, nel modello E-R dovrà necessariamente dare alle due entità la stessa chiave.

Passiamo ora a un altro concetto: il significato delle chiavi nella rappresentazione della dipendenza tra due entità del modello. Le entità di un modello E-R che dipendono da altre entità si dicono “entità deboli”. In molti casi, il concetto di dipendenza, o “debolezza”, è relativo: una stessa entità può essere indipendente da altre entità (ovvero, “forte”) in un certo modello E-R, e invece essere dipendente da altre entità (ovvero, “debole”) in un altro modello E-R.


Vediamo un esempio: le entità Impiegato e Figlio (dell’impiegato) memorizzate in un modello E-R per un’applicazione aziendale. L’analista dell’applicazione ha diverse scelte per individuare le chiavi primarie delle due entità. Ad esempio, l’entità Impiegato potrebbe avere la chiave primaria (CodiceImpiegato), e l’entità Figlio potrebbe avere la chiave primaria (CodiceFiscale). In questo caso, le due entità sarebbero indipendenti tra loro, e la rappresentazione del legame tra un impiegato ed i suoi figli richiederebbe un relazione “molti a molti” con chiave (CodiceImpiegato, CodiceFiscaleFiglio).

Una seconda possibilità è quella di dare alle due entità Impiegato e Figlio la stessa chiave primaria, ad esempio (CodiceFiscale). Anche in questo caso, le due entità sarebbero indipendenti, ma farebbero parte di una stessa gerarchia IsA, che possiamo, ad esempio, chiamare Persona. In questo caso, la rappresentazione del legame tra impiegato e figlio richiederebbe una relazione “molti a molti”
riflessiva tra Persona e Persona, la cui chiave si potrebbe chiamare (CodiceFiscalePadre, CodiceFiscaleFiglio).

Una terza possibilità è quella di individuare l’impiegato con la chiave (CodiceImpiegato), ed i figli con una chiave dipendente da quella di Impiegato: ad esempio, (CodiceImpiegato, ProgressivoFiglio). In questo caso, basandosi sulla relazione di inclusione tra le chiavi delle due entità Impiegato e Figlio,
Figlio sarebbe, per definizione, un’entità debole.

Riassumendo, in molti casi è possibile disegnare modelli E-R che rappresentano le stesse entità (ad esempio, Impiegato e Figlio) in modi differenti. E un’entità (in questo caso, Figlio) può essere “debole” o “forte”, secondo le scelte fatte da chi definisce il modello E-R.