IL MODELLO RELAZIONALE Istituto Tecnico Commerciale Statale “G. Dell’Olio Bisceglie IL MODELLO RELAZIONALE Informatica gestionale – Indirizzo Mercurio
RELAZIONI marito moglie Giovanni Anna Luigi Elena A={Giovanni, Mario, Luigi, Andrea} 4 elementi B={Elena, Anna} 2 elementi Si può formare il prodotto cartesiano (8 coppie): AxB={ (Giovanni; Elena), (Giovanni; Anna), (Mario; Elena), (Mario; Anna), (Luigi; Elena), (Luigi; Anna), (Andrea; Elena), (Andrea; Anna) } La relazione “x è sposato con y” è uno dei possibili sottinsiemi del prodotto AxB marito moglie Giovanni Anna Luigi Elena Riga o N-upla o Tupla cardinalità grado
Dal modello ER (MODELLO CONCETTUALE) alle relazioni (MODELLO LOGICO) Ogni entità diventa una relazione Ogni associazione uno a molti comporta che si introduca una chiave esterna Ogni associazione molti a molti diventa una nuova relazione REGOLE DI INTEGRITA’ REFERENZIALE FORNITORI ARTICOLI Non è possibile immettere un valore nel campo chiave esterna della tabella correlata che non esiste nella chiave primaria della tabella primaria. È possibile, comunque, immettere un valore Null nella chiave esterna, specificando che i record non sono correlati Non è possibile modificare un valore chiave primaria nella tabella primaria, se quel record dispone di record correlati Non è possibile eliminare un record da una tabella primaria, se esistono record corrispondenti in una tabella correlata è possibile specificare se si desidera utilizzare automaticamente le opzioni di aggiornamento a catena e di eliminazione a catena per i record correlati
Operazioni relazionali: SELEZIONE ARTICOLI codice descrizione colore Codfornitore C01 C15 C21 C08 C35 Cartella A4 Penna biro Raccoglitore Cartella cuoio Agenda Rosso Blu Verde Marrone F01 F02 La selezione genera una nuova relazione costituita solo dalle n-uple (le righe) che soddisfano una determinata condizione SELEZIONE DI ARTICOLI PER COLORE=“ROSSO”; codice descrizione colore Codfornitore C01 C35 Cartella A4 Agenda Rosso F01 SELECT * FROM ARTICOLI WHERE COLORE=“ROSSO”;
Operazioni relazionali: PROIEZIONE ARTICOLI codice descrizione colore Codfornitore C01 C15 C21 C08 C35 Cartella A4 Penna biro Raccoglitore Cartella cuoio Agenda Rosso Blu Verde Marrone F01 F02 La proiezione genera una nuova relazione estraendo solo alcune colonne codice descrizione C01 C15 C21 C08 C35 Cartella A4 Penna biro Raccoglitore Cartella cuoio Agenda PROIEZIONE DI ARTICOLI SU CODICE, DESCRIZIONE; SELECT CODICE, DESCRIZIONE FROM ARTICOLI;
Operazioni relazionali: CONGIUNZIONE La congiunzione combina 2 relazioni aventi un attributo in comune generando una nuova relazione INNER JOIN (join interno) si abbinano le sole righe con valori identici negli attributi comuni JOIN naturale se gli attributi hanno stesso nome, es codfornitore e codfornitore EQUI-JOIN se gli attributi hanno nomi diversi, es codfornitore e codice OUTER JOIN (join esterno) si abbinano tutte le righe anche se non sono presenti valori identici negli attributi comuni LEFT-JOIN se dalla tabella del verso 1 si prendono comunque tutte le righe RIGHT-JOIN se dalla tabella del verso MOLTI si prendono comunque tutte le righe FULL-JOIN se da entrambe le tabelle si prendono tutte le righe SELF JOIN Righe di una tabella vengono combinate con righe della stessa tabella
Operazioni relazionali: CONGIUNZIONE ARTICOLI codice descrizione colore Codfornitore C01 C15 C21 C08 C35 Cartella A4 Penna biro Raccoglitore Cartella cuoio Agenda Rosso Blu Verde Marrone F01 F02 INNER JOIN (join interno) FORNITORI codice nominativo F01 F02 F03 Alberto Mario Cicoria Fabio Marino Vito La congiunzione combina 2 relazioni aventi un attributo in comune generando una nuova relazione in cui ◙ compaiono gli attributi (le colonne) di entrambe le relazioni ◙ si abbinano le sole righe con valori identici negli attributi comuni JOIN naturale se gli attributi hanno stesso nome, es codfornitore e codfornitore EQUI-JOIN se gli attributi hanno nomi diversi, es codfornitore e codice
Operazioni relazionali: EQUI-JOIN ARTICOLI FORNITORI codice descrizione colore Codfornitore C01 C15 C21 C08 C35 Cartella A4 Penna biro Raccoglitore Cartella cuoio Agenda Rosso Blu Verde Marrone F01 F02 codice nominativo F01 F02 F03 Alberto Mario Cicoria Fabio Marino Vito CONGIUNZIONE DI ARTICOLI SU CODFORNITORE E DI FORNITORI SU CODICE; ARTICOLI INNER JOIN FORNITORI codice descrizione colore Codfornitore nominativo C01 C15 C21 C08 Cartella A4 Penna biro Raccoglitore Cartella cuoio Rosso Blu Verde Marrone F01 F02 Alberto Mario Cicoria Fabio SELECT articoli.codice, descrizione, colore, codfornitore, nominativo FROM articoli INNER JOIN fornitori ON articoli.codfornitore=fornitori.codice;
Operazioni relazionali: CONGIUNZIONE ARTICOLI codice descrizione colore Codfornitore C01 C15 C21 C08 C35 Cartella A4 Penna biro Raccoglitore Cartella cuoio Agenda Rosso Blu Verde Marrone F01 F02 OUTER JOIN (join esterno) FORNITORI codice nominativo F01 F02 F03 Alberto Mario Cicoria Fabio Marino Vito La congiunzione combina 2 relazioni aventi un attributo in comune generando una nuova relazione in cui ◙ compaiono gli attributi (le colonne) di entrambe le relazioni ◙ si abbinano tutte le righe anche se non sono presenti valori identici negli attributi comuni LEFT-JOIN se dalla tabella del verso 1 si prendono comunque tutte le righe RIGHT-JOIN se dalla tabella del verso MOLTI si prendono comunque tutte le righe FULL-JOIN se da entrambe le tabelle si prendono tutte le righe
Operazioni relazionali: LEFT-JOIN ARTICOLI FORNITORI codice descrizione colore Codfornitore C01 C15 C21 C08 C35 Cartella A4 Penna biro Raccoglitore Cartella cuoio Agenda Rosso Blu Verde Marrone F01 F02 codice nominativo F01 F02 F03 Alberto Mario Cicoria Fabio Marino Vito dalla tabella del verso 1 si prendono tutte le righe FORNITORI ARTICOLI ARTICOLI LEFT JOIN FORNITORI codice descrizione colore Codfornitore nominativo C01 C15 C21 C08 Cartella A4 Penna biro Raccoglitore Cartella cuoio Rosso Blu Verde Marrone F01 F02 F03 Alberto Mario Cicoria Fabio Marino Vito SELECT articoli.codice, descrizione, colore, codfornitore, nominativo FROM articoli LEFT JOIN fornitori ON articoli.codfornitore=fornitori.codice;
Operazioni relazionali: RIGHT-JOIN ARTICOLI FORNITORI codice descrizione colore Codfornitore C01 C15 C21 C08 C35 Cartella A4 Penna biro Raccoglitore Cartella cuoio Agenda Rosso Blu Verde Marrone F01 F02 codice nominativo F01 F02 F03 Alberto Mario Cicoria Fabio Marino Vito dalla tabella del verso Molti si prendono tutte le righe FORNITORI ARTICOLI ARTICOLI LEFT JOIN FORNITORI codice descrizione colore Codfornitore nominativo C01 C15 C21 C08 C35 Cartella A4 Penna biro Raccoglitore Cartella cuoio Agenda Rosso Blu Verde Marrone F01 F02 Alberto Mario Cicoria Fabio SELECT articoli.codice, descrizione, colore, codfornitore, nominativo FROM articoli RIGHT JOIN fornitori ON articoli.codfornitore=fornitori.codice;
Operazioni relazionali: FULL-JOIN ARTICOLI FORNITORI codice descrizione colore Codfornitore C01 C15 C21 C08 C35 Cartella A4 Penna biro Raccoglitore Cartella cuoio Agenda Rosso Blu Verde Marrone F01 F02 codice nominativo F01 F02 F03 Alberto Mario Cicoria Fabio Marino Vito Da entrambe le tabelle si prendono tutte le righe FORNITORI ARTICOLI ARTICOLI FULL JOIN FORNITORI codice descrizione colore Codfornitore nominativo C01 C15 C21 C08 C35 Cartella A4 Penna biro Raccoglitore Cartella cuoio Agenda Rosso Blu Verde Marrone F01 F02 F03 Alberto Mario Cicoria Fabio Marino Vito In ACCESS non lo si può ottenere con una query semplice
Operazioni relazionali: SELF-JOIN MEDICI codice ruolo cognome nome codprimario m1 assistente lovero anna m6 m2 marini valeria m3 luisi carlo m4 primario mancini bianca m7 m5 linuzzi luigi mondelli giovanni dirigente franci francesco Righe di una tabella vengono combinate con righe della stessa tabella SELECT medici.codice, medici.ruolo, medici.cognome, medici.nome, medici.codprimario, medici_1.cognome AS [cognome primario], medici_1.nome AS [nome primario] FROM medici LEFT JOIN medici AS medici_1 ON medici.codprimario = medici_1.codice; codice ruolo cognome nome codprimario cognome primario nome primario m1 assistente lovero anna m6 mondelli giovanni m2 marini valeria m3 luisi carlo m4 primario mancini bianca m7 franci francesco m5 linuzzi luigi dirigente
NORMALIZZAZIONE PRIMA FORMA NORMALE E’ il processo di trasformazione dei dati esistenti nella forma relazionale; tale processo si basa su diversi passaggi. una tabella non deve avere attributi che contengono una molteciplità di valori PRIMA FORMA NORMALE ordini abitazioni cliente ordine 36 11 54 89 205 25 143 civico piano 2 1 2 15 1 3 PRIMA FORMA NORMALE ordine cliente 11 36 54 89 25 205 143 piano civico 1 2 1 15 3 http://groups.msn.com/ProgrammazioneVisualBasic-Net/programmazionedatabasepag2.msnw
NORMALIZZAZIONE SECONDA FORMA NORMALE Se una tabella ha una chiave primaria composta da più attributi, allora tutti gli attributi di una riga devono dipendere dall'intera chiave primaria SECONDA FORMA NORMALE opera artista Anno produzione Anno nascita La primavera Botticelli 1477 1445 L’adorazione dei Magi Botticelli 1476 La Vergine della melagrana 1487 1445 L’urlo Munch 1893 1863 opere opera artista Anno produzione La primavera Botticelli 1477 L’adorazione dei Magi Botticelli 1476 La Vergine della melagrana 1487 L’urlo Munch 1893 artista Anno nascita Botticelli 1445 Botticelli 1445 Munch 1863 http://groups.msn.com/ProgrammazioneVisualBasic-Net/programmazionedatabasepag2.msnw
NORMALIZZAZIONE TERZA FORMA NORMALE In una tabella nessun attributo deve dipendere da un altro attributo che non sia chiave primaria TERZA FORMA NORMALE filiali codfiliale indirizzo città CAP Num abitanti C01 Via Piave Napoli 80100 1.212.387 C02 Via Milano 1.212.387 C03 Via Delfini Napoli Via Bolzano Bologna 40100 374.367 codfiliale indirizzo città C01 Via Piave Napoli C02 Via Milano C03 Via Delfini Napoli Via Bolzano Bologna città CAP Num abitanti Napoli 80100 1.212.387 1.212.387 Napoli Bologna 40100 374.367 http://groups.msn.com/ProgrammazioneVisualBasic-Net/programmazionedatabasepag2.msnw