5° Anno TEORIA 3. Un modello logico: il modello relazionale | Page 9

15 . Il modello relazionale Vers . 6.2 – Gennaio 2023
Esempio : Supponiamo che un certo Dottore può compilare nessuna o più ricette e che viceversa una ricetta può essere compilata da nessuno o un solo Dottore ( essendo possibile che la segretaria le compili per lui )
Utilizzando il diagramma ER la situazione è la seguente
Cognome Nome
CodDott
Dottore
Compila 1 N
Compila E ’ Compilata
CodRic
Ricetta
Descrizione
Operando il mapping come visto si ha :
Dottore ( CodDott , Cognome , Nome )
Ricetta ( CodRic , Descrizione , CodDott )
Chiave primaria
Chiave primaria

CodDott Cognome Nome D01 ROSSI MARIO D02 BIANCHI GIULIO D03 VERDI LUIGI D04 NERI DANIELA

CodRic Descrizione CodDott

Chiave esterna su relazione Dottore
R01 Ves D01 R02 Radiografia D02 R03 Sangue D03 R04 Urina NULL R05 Tiroide D02
Per mantenere la correlazione tra Dottore e Ricetta secondo il mapping dobbiamo aggiungere alla relazione Ricetta – quella lato N - la chiave esterna della relazione Dottore . La parzialità dell ’ associazione diretta “ Compila ” si esplica nel fatto che vi è il Dottore con CodDott = " D04 " che non ha compilato alcuna ricetta ( quindi non partecipa alla relazione ). La parzialità dell ’ associazione inversa “ E ’ Compilata ” si esplica nel fatto che vi è la Ricetta con CodRic = " R04 " che non è stata compilata da alcun dottore ( valore NULL della chiave esterna ) ( quindi non partecipa alla relazione ).
Per convenzione nella nuova relazione per gli attributi chiavi esterne è meglio utilizzare lo stesso nome ( eventualmente con l ' aggiunta di un progressivo numerico ) dell ’ attributo relativo alla chiave primaria .
N . B . NON DEVONO ESSERE IMPOSTI VINCOLI DI INTEGRITA ’ REFERENZIALI
In questo esempio si ha una inconsistenza dei dati se dalla relazione Dottore si cancella l ’ istanza relativa al dottore con codice " D01 ". Infatti in tal caso nella relazione Ricetta avremo ben tre ricette che farebbero riferimento ad un ’ istanza non più esistente all ’ interno del database .
Per assicurare l ’ integrità referenziale prima di cancellare una qualsiasi ennupla , occorre verificare che non vi siano ennuple in altre relazioni che facciano riferimento alla ennupla da cancellare .
Autore : Rio Chierego ( email : riochierego @ libero . it - sito web : www . riochierego . it ) Pag . 9