domenica 20 dicembre 2009

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.

Nessun commento:

Posta un commento