ricevo
Buonasera prof. Batini.
Le scrivo per chiederle un chiarimento in
merito alla traduzione degli identificatori esterni nel modello logico
relazionale. Il mio dubbio è il seguente: si supponga di avere 3 entità,
ad esempio CITTA', LOCALE e BUTTAFUORI, dove CITTA' è in relazione 1 a
molti con LOCALE, che a sua volta è in relazione 1 a molti con
BUTTAFUORI. Inoltre, CITTA' ha un suo id univoco, LOCALE ha un codice
che è unico per città, mentre BUTTAFUORI ha un codice univoco per
locale. Nel diagramma ER quindi sia LOCALE che BUTTAFUORI dovrebbero
avere un identificatore esterno, che verrebbe tradotto come nel modello
logico? La mia soluzione sarebbe:
città(ID, ...)
locale(ID, città, ...)
città(ID, ...)
buttafuori(ID, locale, città, ...)
Mi sa dire se è corretta?
Inoltre, se si modificassero i requisiti supponendo che un buttafuori possa lavorare in più locali all'interno della stessa città, modificando quindi la relazione da 1-molti a molti-molti, avrebbe ancora senso considerare un identificatore esterno in buttafuori? In caso negativo, sarebbe essenziale ora per un buttafuori avere un codice univoco che non dipenda più da nessun'altra entità, o si potrebbe aggirare il problema in qualche modo?
Inoltre, se si modificassero i requisiti supponendo che un buttafuori possa lavorare in più locali all'interno della stessa città, modificando quindi la relazione da 1-molti a molti-molti, avrebbe ancora senso considerare un identificatore esterno in buttafuori? In caso negativo, sarebbe essenziale ora per un buttafuori avere un codice univoco che non dipenda più da nessun'altra entità, o si potrebbe aggirare il problema in qualche modo?
Grazie per l'attenzione, cordiali saluti
rispondo
anzitutto complimento per l'esempio molto originale, a me non sarebbe mai venuto in mente un esempio con buttafuori, non la sto assolutamente criticando, anzi, ci vedo una qualche ironia o estemporaneità
detto questo passiamo alle sue domande
1. Mi sa dire se è corretta?
certo che è corretta, ed è un ottimo esempio in cui la metodologia per passi che ho definito nella prima dellepresentazioni su progettazione logica viene applicata "in cascata" alle relaizoni che rappresentano città, locale e buttafuori, per cui la chiave di locale va arricchita con la chiave di città e la chiave di buttafuori va arricchita con la chiave di locale. una sola notazione tra l'estetico e il pignolo: i tre id delle tre relaizoni hanno significati diversi, d'accordo? per cui si potrebbe dargli nomi un pò ridondati ma diversi, tipo idcittà, ecc.
2. Inoltre,
se si modificassero i requisiti supponendo che un buttafuori possa
lavorare in più locali all'interno della stessa città, modificando
quindi la relazione da 1-molti a molti-molti, avrebbe ancora senso
considerare un identificatore esterno in buttafuori?
assolutamente no, proprio perchè ora id-locale aggiunto a id-buttafuori non lo identifica più in virtù della molti a molti.
3. In caso negativo,
sarebbe essenziale ora per un buttafuori avere un codice univoco che non
dipenda più da nessun'altra entità, o si potrebbe aggirare il problema
in qualche modo?
questa domanda è la più anomala tra le tre, anche per come viene espressa. la progettaizone concettuale e la logica non sonofartte per aggirare problemi, (so bene che non era sua intenzione aggiugnere una connotazione "furbesca") ma pre rappresentare la realtà nel modo più fedele possibile, compatibilmente con
a. i requisiti
b. la ricchezza espressiva del modello di rappresentazione
c. chi paga il progetto (può sembrarle strano, ma veda più avanti)
no, non è essenziale, lei può definire un codice univoco per tutti i buttafuori della città, caso 1, oppure un codice univoco per tutti i buttafuori d'italia, caso b. nel primo caso, lei può identificare univocamente i buttrafuori nell'ambito della città, con un codice progressivo nell'ambito della città, il buttafuori 12 di milano.
oppure può definire un codice univco in italia, utilizzando un identificastore che esiste da prima che lei è nato, il codice fiscale. oppure se esiste un ordine nazionale dei buttafuori, una matricola nazionale associata ai buttafuori, oppure se esistono ordini di buttafuori regione, una matricola nell'ambito della regione.
dipende al solito dai requisiti, e dal committente, cioè da chi paga il progetto. lei può sottoporre tutte queste alternative e poi lui decide.
nella realtà le cose non sono così semplici, perchè la scelta degl iidentificatori, anche se nel modello ER che viene usato solo nella progettaizone concettuale, può tenere conto con che cosa ci si fa con la base di dati. se per esempio paga l'ordine dei buttafuori, allora viene naturale consigliare loro di istituire una anagrafe nazionale dei buttafuori (vedi di nuovo il ragionamento sopra), se pagano i comuni, insomma le città dove i buttafuori operano, e che vogliono tenere il fenomeno sotto controllo, allora conviene un identificatore tipo codice fiscale senza tanti problemi di status. . insomma la natura delle relationship influenza la scelta degli identificatori di entità, ma non solo quella.
carlo batini