MODELLO RELAZIONALE Definizione Chiavi esterne Integrit Referenziale Forme

  • Slides: 28
Download presentation
MODELLO RELAZIONALE Definizione Chiavi esterne Integrità Referenziale Forme normali

MODELLO RELAZIONALE Definizione Chiavi esterne Integrità Referenziale Forme normali

DEFINIZIONE Il modello relazionale si sviluppa durante la fase di progettazione logica. Esso viene

DEFINIZIONE Il modello relazionale si sviluppa durante la fase di progettazione logica. Esso viene ricavato dal modello ER trasformando le entità in tabelle e gli attributi di ogni entità in campi (colonne) della tabella. La chiave dell'entità diventa chiave primaria della tabella

Ad esempio consideriamo il seguente modello E-R IDPer sona IDCitt à Città Nome Cogn

Ad esempio consideriamo il seguente modello E-R IDPer sona IDCitt à Città Nome Cogn ome Residenti abita Cap Tel Nome

Il modello relazionale ricavato da questo modello ER è costituito da due tabelle: Città

Il modello relazionale ricavato da questo modello ER è costituito da due tabelle: Città e Residenti che possono essere definite usando la seguente notazione breve: Città(IDCITTA’, NOME, CAP) Residenti(IDPERSONA, NOME, COGNOME, TEL, CODCIT TA’) In grassetto vengono segnate le chiavi primarie e in corsivo quelle esterne (il cui significato spiegheremo nelle slides successive)

CHIAVE ESTERNA Nel modello relazionale la relazione (detta anche associazione) tra due tabelle viene

CHIAVE ESTERNA Nel modello relazionale la relazione (detta anche associazione) tra due tabelle viene espressa mediante la chiave esterna Se le tabelle da relazionare si chiamano Tabella 1 e Tabella 2, la chiave esterna è un campo della Tabella 2 che può assumere per valori solo quelli della chiave primaria della Tabella 1

CHIAVE ESTERNA Esempio: Ritorniamo al nostro esempio precendete Città(IDCITTA’, NOME, CAP) Residenti(IDPERSONA, NOME, COGNOME,

CHIAVE ESTERNA Esempio: Ritorniamo al nostro esempio precendete Città(IDCITTA’, NOME, CAP) Residenti(IDPERSONA, NOME, COGNOME, TEL, CODCITT A’) La relazione Città e Residenti è uno a molti, poiché in una città ci possono essere molte persone, ma una persona può risiedere solo in una città!

CHIAVE ESTERNA IDCITTA’ NOME CAP 01 Roma 80132 02 Napoli 80135 03 Firenze 81135

CHIAVE ESTERNA IDCITTA’ NOME CAP 01 Roma 80132 02 Napoli 80135 03 Firenze 81135 IDPERSONA NOME 1 Mario 2 Nicola COGNOME TEL CODCITTA’ Rossi 08114197249712 02 TABELLA CITTA’ Amore 0819237592 TABELLA REsidenti 01

CHIAVE ESTERNA Nella Tabella Anagrafe-Residenza il campo CODCITTA’ è la chiave esterna della relazione

CHIAVE ESTERNA Nella Tabella Anagrafe-Residenza il campo CODCITTA’ è la chiave esterna della relazione tra le due tabelle e può assumere solo e solamente i valori assunti dal campo IDCITTA’ che è chiave primaria della Tabella Città. Ovvero CODCITTA’ può assumere solamente i valori 01, 02, 03. Se l’utente gli assegnasse il valore 04 il DBMS gli segnalerebbe l’errore dal momento che è chiave esterna!

CHIAVE ESTERNA NB: se la relazione non è uno a molti, ma molti si

CHIAVE ESTERNA NB: se la relazione non è uno a molti, ma molti si costruisce una tabella ponte intermedia che contiene la sua chiave primaria e le due chiavi esterne di ENTRAMBE le tabelle

INTEGRITA’ REFERENZIALE L'integrità referenziale (referential integrity ) è un insieme di regole del modello

INTEGRITA’ REFERENZIALE L'integrità referenziale (referential integrity ) è un insieme di regole del modello relazionale che garantiscono l'integrità dei dati quando si hanno tabelle associate tra loro attraverso la chiave esterna. Queste regole servono per rendere valide le associazioni tra le tabelle e per eliminare gli errori di inserimento, cancellazione o modifica di dati collegati tra loro. E’ il DBMS che si occupa che l’integrità venga rispettata

INTEGRITA’ REFERENZIALE Ad esempio consideriamo il modello relazionale costituito dalle due seguenti tabelle: CLIENTI(Codice,

INTEGRITA’ REFERENZIALE Ad esempio consideriamo il modello relazionale costituito dalle due seguenti tabelle: CLIENTI(Codice, Ragione sociale, Indirizzo) ORDINI(Num. Ordine, Data, Codice. Cliente) Tali tabelle sono collegate da una relazione una a molti che nel modello relazionale si esprime con la chiave esterna Codice. Cliente.

CLIENTI ORDINI INTEGRITA’ REFERENZIALE

CLIENTI ORDINI INTEGRITA’ REFERENZIALE

INTEGRITA’ REFERENZIALE In modo più preciso quando viene applicata l'integrità referenziale, è necessario osservare

INTEGRITA’ REFERENZIALE In modo più preciso quando viene applicata l'integrità referenziale, è necessario osservare le tre seguenti regole pratiche: 1. non è possibile un valore nella chiave esterna della tabella associata , se tale valore non esiste tra le chiavi della tabella primaria. Ad esempio nelle due tabelle successive il record evidenziato in rosso nelle seconda tabella non è consentito, poiché il cliente corrispondente non esiste.

CLIENTI ORDINI INTEGRITA’ REFERENZIALE

CLIENTI ORDINI INTEGRITA’ REFERENZIALE

INTEGRITA’ REFERENZIALE 2. non è possibile eliminare un record (n-upla) della tabella primaria, se

INTEGRITA’ REFERENZIALE 2. non è possibile eliminare un record (n-upla) della tabella primaria, se esistono righe legate ad essa attraverso la chiave esterna nella tabella correlata Ad esempio nelle due tabelle successive non è consentito eliminare il record evidenziato in verde nelle prima tabella, poiché in tal caso nella seconda resterebbe un codicecliente non collegato a nessun cliente!.

CLIENTI ORDINI INTEGRITA’ REFERENZIALE

CLIENTI ORDINI INTEGRITA’ REFERENZIALE

INTEGRITA’ REFERENZIALE 3. inoltre non si può modificare, come è ovvio, il valore alla

INTEGRITA’ REFERENZIALE 3. inoltre non si può modificare, come è ovvio, il valore alla chiave nella tabella primaria se ad essa corrispondono righe nella tabella correlata. Ad esempio nelle due tabelle successive non è consentito modificare il codice del record evidenziato in verde nelle prima tabella, poiché in tal caso nella seconda resterebbe un codicecliente non collegato a nessun cliente!.

CLIENTI ORDINI INTEGRITA’ REFERENZIALE

CLIENTI ORDINI INTEGRITA’ REFERENZIALE

LA NORMALIZZAZIONE DELLE RELAZIONI Nella definizione della struttura di una relazione (o tabella )

LA NORMALIZZAZIONE DELLE RELAZIONI Nella definizione della struttura di una relazione (o tabella ) occorre evitare la ripetizione e la ridondanza dei dati, per non creare problemi di inconsistenza nelle operazioni di modifica o cancellazione di record Quindi a partire da una data tabella, vengono create altre tabelle, secondo un processo che viene indicato con il termine di normalizzazione

LA NORMALIZZAZIONE DELLE RELAZIONI Tale operazione avviene attraverso tre fasi successive che prendono il

LA NORMALIZZAZIONE DELLE RELAZIONI Tale operazione avviene attraverso tre fasi successive che prendono il nome di riduzione a prima seconda e terza forma normale

LA NORMALIZZAZIONE DELLE RELAZIONI Prima forma normale Una relazione è in prima forma normale

LA NORMALIZZAZIONE DELLE RELAZIONI Prima forma normale Una relazione è in prima forma normale (1 FN) quando: 1. Tutte le righe della tabella contengono lo stesso numero di colonne; 1. Gli attributi rappresentano informazioni elementari; 1. I valori che compaiono in una colonna sono dello stesso tipo, cioè appartengono allo stesso dominio; 1. Ogni riga è diversa da tutte le altre, cioè non ci possono essere due righe con gli stessi valori nelle colonne; 1. L'ordine con il quale le righe compaiono nella tabella è irrilevante.

LA NORMALIZZAZIONE DELLE RELAZIONI Esempio di riduzione a prima forma normale Supponiamo di avere

LA NORMALIZZAZIONE DELLE RELAZIONI Esempio di riduzione a prima forma normale Supponiamo di avere la tabella Dipendenti (Matricola, Nome, Indirizzo, Familiari. ACarico) Tale tabella non è nella prima forma normale in quanto l'attributo Familiari. ACarico non è elementare, essendo costituito da un gruppo di attributi ripetuti dello stesso tipo ( i nomi dei familiari).

LA NORMALIZZAZIONE DELLE RELAZIONI Per eliminare questo problema la tabella può essere opportunamente convertita

LA NORMALIZZAZIONE DELLE RELAZIONI Per eliminare questo problema la tabella può essere opportunamente convertita in due tabelle: Dipendenti (Matricola, Nome, Indirizzo); Familiari (Codice. Fam, Nome. Fam, Matricola. Dip); Unite da una relazione una- a- molti mediante la chiave esterna Matricola. Dip

Dipendenti LA NORMALIZZAZIONE DELLE RELAZIONI Familiari

Dipendenti LA NORMALIZZAZIONE DELLE RELAZIONI Familiari

LA NORMALIZZAZIONE DELLE RELAZIONI Seconda forma normale Una relazione è in seconda forma normale

LA NORMALIZZAZIONE DELLE RELAZIONI Seconda forma normale Una relazione è in seconda forma normale (2 FN) quando: È in prima forma normale e se tutti gli attributi sono dipendenti dall’intera chiave primaria (essendo possibile che la chiave primaria sia composta) Ad esempio nella tabella successiva la chiave primaria è composta da Titolo. Libro, Editore, Anno. Edizione. Chiaramente l’attributo Indirizzo. Editore dipende da una parte della chiave (Editore)

LA NORMALIZZAZIONE DELLE RELAZIONI La tabella quindi è in prima forma normale, ma deve

LA NORMALIZZAZIONE DELLE RELAZIONI La tabella quindi è in prima forma normale, ma deve essere ridotta alla seconda forma. Questo può essere ottenuto scindendo tale tabella in due tabelle collegate da una relazione uno-a-molti rappresentata dalla chaive esterna Cod. Editore: Libri(Titolo. Libro, Anno. Edizione, Prezzo. Libro, Cod. Editore) Editori(Matricola. Ed, Editore, Indirizzo. Editore)

LA NORMALIZZAZIONE DELLE RELAZIONI Terza forma normale Una relazione è in terza forma normale

LA NORMALIZZAZIONE DELLE RELAZIONI Terza forma normale Una relazione è in terza forma normale (3 FN) se è in seconda forma normale e se tutti gli attributi che non sono chiavi candidate sono mutualmente indipendenti In questo caso è molto evidente che esiste un legame di dipendenza tra la regione in cui opera il rappresentante e la capitale della regione e che il database quindi non è in 3 FN

LA NORMALIZZAZIONE DELLE RELAZIONI . Per mettere il DB in 3 FN occorre scindere

LA NORMALIZZAZIONE DELLE RELAZIONI . Per mettere il DB in 3 FN occorre scindere le due tabelle in due altre tabelle collegate da una relazione uno-a-molti rappresentata dalla chiave esterna IDRegione Rappresentanti(IDRappresentante, Nome, Indirizzo, IDRe gione) Regioni(IDRegione, Nome, Capoluogo)