COS’E’ UN SISTEMA INFORMATIVO? Un sistema informativo organizza e gestisce tutte le informazioni necessarie per eseguire gli scopi di una organizzazione Introduzione ai database relazionali 1 SISTEMA INFORMATICO 2 Dati e informazioni Un sistema informativo/informatico presenta 2 nozioni fondamentali che è bene distinguere: il concetto di dato e di informazione SISTEMA INFORMATIVO Quando viene automatizzato tramite strumenti elettronici diventa un SISTEMA INFORMATICO 3 4 1 Dato ed informazione Dato ed informazione Dato: valore in sé (un numero, una data, una frase) Informazione: conoscenza dei fatti, significato del dato, associazione tra uno o più dati. I dati da soli potrebbero non avere alcun significato, e generalmente non forniscono informazione I dati assumono un significato quando vengono interpretati in un contesto e/o correlati in maniera opportuna 5 6 ESEMPIO: UNA INFORMAZIONE ESEMPIO: UN DATO 02/03/2015 Che informazione ci da? Data inizio lezioni studenti 02/03/2015 Sicuramente rappresenta un giorno, ma di per sé non significa nulla. Ma associando a tale dato un contesto che gli dà significato questo diventa una informazione Il dato diventa una informazione 7 8 2 ESEMPIO: UN DATO CONTESTO: ASSOCIAZIONE DI 2 DATI MANZONI ALESSANDRO MANZONI ALESSANDRO Che informazione ci da? I PROMESSI SPOSI Il dato messo in un certo contesto assume un certo significato 9 CONTESTO: 10 FORMALMENTE Manzoni Alessandro Residente in Piazza Europa 26, 10110 Torino Lo stesso dato in un contesto diverso assume un significato diverso 11 Dato: un valore registrato su un supporto di memoria INFORMAZIONE Associazione tra dato e suo significato Significato Cosa rappresenta il dato memorizzato 12 3 Cos’è una BASE DI DATI (DATABASE)? I DATI E LE LORO CORRELAZIONI FORNISCONO INFORMAZIONI E’ una raccolta organizzata di informazioni. Una collezione di dati opportunamente raggruppati ed organizzati in modo da poter rappresentare le informazioni di interesse Informazione 2 Dato7 Dato8 Informazione 1 Dato1 Dato2 Dato3 13 Cos’è una BASE DI DATI (DATABASE)? 14 DATABASE - DBMS E’ un modello del mondo reale (una rappresentazione informatica della realtà di interesse) che permette l’utilizzo dei dati a utenti diversi con applicazioni diverse e di convertirli in informazioni utilizzabili 15 La sigla DBMS (Data Base Management System) indica il software utilizzato per la gestione di un database I programmi per la realizzazione di database (come ACCESS) esistono per permettere la catalogazione, la modifica e la facile estrazione delle informazioni 16 4 OBIETTIVI DI UN DATABASE DATABASE DISTRIBUITI Consistenza: i dati in essa contenuti devono essere significativi ed essere effettivamente utilizzabili nelle applicazioni dell'azienda Sicurezza: impedire che il data base venga danneggiato da interventi accidentali o non autorizzati Integrità: garantire che le operazioni effettuate sul data base da utenti autorizzati non provochino una perdita di consistenza ai dati Gli archivi che compongono una base di dati possono risiedere sulle memorie di massa di computer diversi, facenti parte di una rete aziendale, i cui nodi possono essere anche fisicamente lontani Quando si verifica questo siamo di fronte ad un database distribuito In tal caso gli archivi sono integrati da un punto di vista logico 17 18 ESEMPIO DI APPROCCIO TRADIZIONALE NON INTEGRATO ORGANIZZAZIONE DEI DATI L’organizzazione dei dati è un aspetto di fondamentale importanza. Aver organizzato i dati in maniera corretta evita di doverli riorganizzare successivamente con grave dispendio di risorse. Un database ben strutturato consente di avere una organizzazione INTEGRATA dei dati. Un'azienda utilizza in uffici diversi due diversi archivi A e B A) Informazioni sui dipendenti che lavorano nei reparti di un’azienda Matricola# Nome Età Reparto Badget …. B) Informazioni sui dipendenti per i diversi progetti Dipendente# Nome Progetto# Nome Progetto Tempo % …. Ognuno dei due modelli soddisfa le esigenze specifiche. Ma cosa succede se vogliamo sapere quali sono i reparti che hanno dipendenti che lavorano al progetto X ? 19 20 5 DIFETTI NELLA ORGANIZZAZIONE NON INTEGRATA DEI DATI ESEMPIO DI APPROCCIO TRADIZIONALE NON INTEGRATO A Matricola# Nome B Dipendente# Nome Età Progetto# Reparto Badget Ridondanza dei dati, cioè gli stessi dati compaiono in maniera duplicata (inefficienza) …. Nome Progetto Tempo % …. Difetti nella gestione non integrata: • Sinonimi: gli stessi dati hanno codici differenti (Matricola# in A e Dipendente# in B) • Lo stesso nome per dati differenti: Nome in A per dipendente e Nome in B per Dipendente • Ridondanza dei dati: Reparto e Budget del reparto ripetuto per ogni dipendente; Progetto# e Nome Progetto ripetuti per ogni dipendente • Rischio di anomalie negli aggiornamenti: una modifica effettuata sui valori dei dati in un archivio, ma non nell’altro, provoca inconsistenza dei dati La ridondanza può portare all’incongruenza, nel caso in cui un dato venga aggiornato in un archivio e non in un altro, oppure siano presenti valori diversi per lo stesso dato L’incongruenza porta all’inconsistenza dei dati, cioè i dati aziendali non sono più affidabili, perché non si sa in modo certo quale dei diversi valori sia quello corretto Tutto ciò deriva dal fatto che i dati sono organizzati in archivi diversi, in modo non integrato tra loro 21 22 CORRETTA LOGICA DI UN DATABASE Indipendenza dalla struttura fisica dei dati. I programmi applicativi sono indipendenti dai dati fisici Indipendenza dalla struttura logica dei dati. E’ possibile apportare modifiche alla definizione delle strutture della base di dati senza modificare il software applicativo. Utilizzo da parte di più utenti. Garantisce che le operazioni svolte da utenti diversi in modo concorrente non interferiscano una con l’altra e garantisce l’accesso specifico ad alcune tabelle a seconda dell’utenza. Eliminazione della ridondanza. Gli stessi dati non compaiono più volte in archivi diversi. Eliminazione della inconsistenza. Il database non può presentare campi uguali con valori diversi in archivi diversi Facilità di accesso. Il ritrovamento dei dati è facilitato e svolto con grandi velocità Integrità dei dati. Vengono previsti controlli per evitare anomalie ai dati causate dai programmi e dalle applicazioni degli utenti. Sicurezza dei dati. Sono previste procedure di controllo per impedire accessi non autorizzati ad dati contenuti nel database e i protezione da guasti accidentali. 23 VANTAGGI DEI DATABASE Il vero vantaggio di un database sono le operazioni sui dati organizzati • • manipolazione o trattamento dei dati, cioè la possibilità di inserire, modificare e cancellare i dati interrogazione, cioè la possibilità di ritrovare i dati, richiesti da un’applicazione, in modo semplice e veloce 24 6 Passi da seguire per la costruzione di DBMS Come costruire un database REALTA’ (Problema reale) DATABASE LOGICO REALTA’ Progettazione DATABASE LOGICO ANALISI REALIZZAZIONE FISICA DEL DATABASE Entità (tabelle) Associazioni (interconnessioni tra le tabelle) MODELLO LOGICO CONCETTUALE MODELLO FISICO Realizzazione fisica del DBMS (ad es. in Access) IMPLEMENTAZIONE Implementazione Si rappresenta la realtà dei dati e le associazioni tra essi attraverso uno schema Si definisce l’organizzazione, la composizione ed il formato dei dati negli archivi elettronici (Access: tabelle, relazioni, query, maschere, report, ecc.) 25 IL LIVELLO CONCETTUALE: IL METODO RELAZIONALE MODELLO E/R 26 MODELLO RELAZIONALE I dati vengono catalogati in tabelle dette Entità Le Entità vengono correlate tramite Associazioni (Relazioni) Le proprietà di entità e associazioni vengono descritte tramite gli Attributi Il modello entità/associazioni (in inglese E/R = Entity/Relationship), introdotto nel 1976 da Peter P. Chen, permette di costruire un modello concettuale dei dati indipendente dalle applicazioni Gli elementi di un modello E/R sono: Entità e attributi Associazioni (relazioni) 27 28 7 REQUISITI MODELLO RELAZIONALE tutte le righe di una tabella contengono lo stesso numero di colonne, corrispondente agli attributi; gli attributi rappresentano informazioni elementari, non scomponibili ulteriormente, cioè non ci sono campi che contengono per ogni riga un insieme di valori anziché un solo valore; i valori assunti da un campo appartengono al dominio dei valori possibili per quel campo, e quindi sono valori omogenei tra loro, cioè sono dello stesso tipo; in una relazione, ogni riga è diversa da tutte le altre, cioè non ci possono essere due righe con gli stessi valori dei campi: questo significa che esiste un attributo o una combinazione di più attributi che identificano univocamente la riga (n-upla), e che assumono perciò la funzione di chiave primaria della relazione; le n-uple compaiono nella tabella secondo un ordine non prefissato, cioè non è rilevante il criterio con il quale le righe sono sistemate nella tabella. ENTITA’ Cos’è? E’ una qualsiasi cosa che può essere distintamente identificata Cioè un oggetto che Ha una propria individualità (sia distinguibile concettualmente da altri oggetti) Abbia per noi rilevanza 29 ENTITA’ – istanze (individui) 30 ASSOCIAZIONE (Relazione) L’entità è un oggetto (concreto o astratto) utile per descrivere la realtà che si vuole rappresentare Ad esempio una persona, un modello di automobile, un movimento contabile, una prova sostenuta da uno studente, possono essere considerate entità Infatti gli studenti sono classificabili nel tipo entità Studente, i diversi modelli di automobile sono classificabili nel tipo entità Automobile Ciascuno studente rappresenta un’istanza (un individuo) del tipo entità Studente, ciascuna automobile rappresenta un’istanza (un individuo) del tipo entità Automobile 31 Cos’è? L’associazione (in inglese relationship) è un legame che stabilisce un’interazione tra le entità Per esempio tra l’entità Persona e l’entità Automobile esiste un’associazione che può essere descritta nel linguaggio naturale secondo due versi: una persona possiede una o più automobili e un’automobile è posseduta da una persona Quindi si può dire che tra l’entità Persona e l’entità Automobile esiste l’associazione Possiede; tra l’entità Automobile e l’entità Persona esiste l’associazione Posseduta da. 32 8 ATTRIBUTI ATTRIBUTI Le caratteristiche di ogni attributo sono: Cos’è? Un attributo è una proprietà di una entità o di una associazione Rimanendo all’esempio precedente delle autovetture, per l’entità automobile possiamo avere i seguenti attributi: Modello, Produttore, Cilindrata, PrezzoListino. Notare che Modello e Produttore potrebbero essere individuate come Entità e non come attributi e ciò dipenderà esclusivamente da ciò che si deve fare, cioè dalla nostra analisi della realtà. Il formato cioè il tipo di valori che può assumere; per esempio: il tipo carattere, numerico o data/ora La dimensione cioè la quantità massima di caratteri o cifre che possono essere inseriti L'opzionalità cioè la possibilità di non essere sempre valorizzato: l’attributo è obbligatorio se deve avere valore non nullo, facoltativo se sono accettabili valori nulli 33 34 ATTRIBUTI MODELLO LOGICO Entità Valore Nullo: Il valore nullo, in inglese Null, (da non confondere con la stringa di caratteri blank o con un numero di valore zero) rappresenta un’informazione mancante, inapplicabile o sconosciuta Attributi (campi) Tipi di dato Chiave primaria Associazione / Relazione Dominio: I diversi valori assunti dagli attributi determinano le diverse istanze dell’entità. L'insieme dei possibili valori assunti da un attributo si chiama dominio dell'attributo 1a1 1aM MaM Chiave: Si indica con il termine chiave o chiave primaria (primary key) l'insieme di uno o più attributi che consentono di distinguere un’istanza dall'altra: esempi di chiavi sono il codice di un prodotto o la matricola di un dipendente 35 36 9 Rappresentazione grafica. Schema E/R Rappresentazione grafica. Schema E/R La rappresentazione classica ERD = Entity-Relationship Diagram Entità: si rappresenta con un rettangolo contenente all'interno il nome dell'entità Associazione: è rappresentata da una linea, che unisce le due entità interessate Versi dell’associazione: la descrizione compare a fianco della linea e dell’entità di partenza del verso La rappresentazione classica ERD = Entity-Relationship Diagram Attributi Individuazione della chiave Codice studente STUDENTE si compone degli Fa parte della Cognome STUDENTE CLASSE Nome .... 37 38 ESEMPIO: REALTA’: SCUOLA Istruzione superiore ENTITA’ Vogliamo catalogare le anagrafiche di una scuola STUDENTI INSEGNANTI QUALI POTREBBERO ESSERE LE NOSTRE ENTITA’? CLASSI 39 40 10 ATTRIBUTI ESEMPIO SCUOLA Sono le caratteristiche di una entità che desideriamo conservare, catalogare. Sono le proprietà che caratterizzano una entità o anche una associazione STUDENTI INSEGNANTI Cognome Nome Indirizzo Cap Città Provincia Telefono Data nascita Luogo nascita …. Cognome Nome Indirizzo Cap Città Provincia Telefono Materia CLASSI Nome classe Aula 41 42 TABELLE ↔ ENTITA’ TIPO DI DATO Una entità è per noi una tabella dove le righe sono le istanze, gli individui (i record) dell’entità e le colonne sono gli Attributi ENTITA’ Record Attributo (campo) Nome Cognome Data nascita Luogo Nascita Mario Rossi 02/04/1975 Milano Francesca Alberto Verdi Bianchi 24/11/1974 14/12/1974 Prato Roma … … … … 43 Ogni attributo deve avere un tipo di dato definito. Ovvero ogni colonna della tabella deve avere valori dello stesso tipo NOME DESCRIZIONE ACCESS Byte Intero da 0 a 255 Numerico Byte Smallint Intero da -32.768 a 32.768 Numerico Intero Integer Intero da -2.147.483.648 a 2.147.483.647 Numerico Numerico Intero lungo Contatore Float Numero reale Numerico Numerico Numerico Precisione singola Precisione doppia Valuta Datetime Data/ora Data/Ora Char Testo fino a 255 caratteri Testo Memo Testo esteso fino a più di 64.000 caratteri Memo Boolean True e false Si/No 44 11 CHIAVE PRIMARIA CHIAVE PRIMARIA Una chiave primaria è la colonna (o l’insieme di più colonne) che definisce un individuo (una riga) di una entità (tabella) in modo univoco. Alcune entità (poche) hanno una chiave primaria naturale altre hanno bisogno di una chiave artificiale (il “codice”) Addirittura per catalogare una persona si ha bisogno del “Codice Fiscale” che non è nient’altro che un attributo artificiale UNIVOCO che garantisce che la persona sia individuata in maniera univoca 45 PROCEDENDO CON L’ANALISI 46 ASSOCIAZIONI Una volta individuate entità, attributi, chiavi primarie si deve procedere con l’individuare le ASSOCIAZIONI (RELAZIONI) che intercorrono tra le varie entità. Un’associazione tra le entità può essere: obbligatoria quando il legame tra le entità deve essere sempre presente opzionale quando può essere presente 47 48 12 ASSOCIAZIONI ASSOCIAZIONE 1 a 1 Il grado del verso dell'associazione indica quante istanze dell'entità di arrivo si associano all'istanza dell'entità di partenza. Il grado può essere: 1a1 1aM MaM Associazione 1:1 (uno a uno) o biunivoca Ogni istanza (ogni individuo) della prima entità si deve associare ad una sola istanza (ad un solo individuo) della seconda entità e viceversa. Biunivoca Uno a molti Molti a molti 49 ASSOCIAZIONE 1 a 1 ASSOCIAZIONE 1 a M Ad un elemento di una entità corrisponde uno ed un solo elemento della seconda entità Anagrafica Codice persona Nome Cognome Indirizzo Cap Città Provincia Telefono Cellulare Email 1 1 50 Associazione 1:M (uno a molti) o semplice Ogni istanza (individuo) della prima entità si può associare a una o più istanze (individui) della seconda entità, mentre ogni istanza della seconda entità si deve associare ad una sola istanza della prima. Nascita Codice persona Data nascita Luogo nascita Provincia Nome padre Cognome padre Nome madre Cognome madre 51 52 13 IMPIEGATI + FIGLI A CARICO ASSOCIAZIONE 1 a M Supponiamo di voler catalogare gli impiegati della nostra azienda con eventuali figli a carico. Nella nostra analisi dobbiamo individuare le entità per questa realtà. L’entità che individuiamo immediatamente è la tabella “Impiegati”. L’entità impiegato in formato tabellare Codice impiegato Nome Cognome Impiegati Codice impiegato Nome Cognome ……. Come fare a catalogare i figli a carico? 53 54 SOLUZIONE ERRATA Codice impiegato Nome Cognome … Figlio 1 Figlio 2 Figlio 3 SOLUZIONE C’è un errore di analisi: i figli a carico vanno visti come Entità separata e non come attributi dell’entità impiegati. … IMPIEGATI • Cosa succede se un impiegato ha più figli di quanto previsto? Quanto è abbastanza? 3? 5? 20? • Anche se prevediamo 20 figli, nel caso di 1/2/3 figli tutti gli altri campi rimarranno vuoti: abbiamo spreco di spazio • Come fare per esempio a trovare tutti i figli di nome Michele? Su quale campo cercare? Figlio 1? Figlio 2? …. Figlio 20? • Come fare se in un futuro vogliamo aggiungere ulteriori informazioni riguardanti i figli? 55 1 M FIGLI A CARICO La relazione che esiste tra gli impiegati ed i figli a carico è di tipo 1 a M 1 impiegato può avere M Figli a carico 1 IMPIEGATO M FIGLI 1 figlio a carico può avere un solo padre che è impiegato e che lo tiene a carico 1 IMPIEGATO 1 FIGLIO A CARICO 56 14 ASSOCIAZIONE M a M ASSOCIAZIONE M a M Entità: Libri e Autori Associazione M:M (molti a molti) o complessa AUTORI Codice autore Nome Cognome Email Ogni istanza (individuo) della prima entità si può associare a una o più istanze (individui) della seconda entità e viceversa M M LIBRI Codice libro Titolo Sottotitolo Descrizione Anno pubblicazione Codice casa editrice 1 Autore M Libri (Un Autore può scrivere più libri) 1 Libro M Autori (Un libro può anche essere scritto da più autori) 57 ASSOCIAZIONE M a M CHIAVI, ATTRIBUTI E RELAZIONI Come si realizza una associazione 1 a 1 ? Entità: Studenti universitari ed esami sostenuti STUDENTI Matricola Nome Cognome …… M M 58 ESAMI Codice esame Nome ….. Tabella 1 1 Studente M Esami (Uno Studente può avere sostenuto più esami) 1 Esame M Studenti (Un esame può essere stato effettuato da più studenti) 59 1 1 Tabella 2 La chiave primaria della Tabella 1 è uguale alla chiave primaria della tabella 2 60 15 ESEMPIO RELAZIONE 1 A 1 ESEMPIO RELAZIONE 1 A 1 (con l’asterisco sono indicati i campi che sono in chiave primaria) Le chiavi primarie delle due tabelle sono uguali Anagrafica Codice persona * Cognome Nome Indirizzo Cap Città Provincia Telefono Cellulare Email 1 Nascita 1 Codice persona * Data nascita Luogo nascita Provincia Nome padre Cognome padre Nome madre Cognome madre Cod. persona Cognome Nome Indirizzo 1242 Rossi Franco Via Leopardi … 1318 Verdi Alberto Largo Umberto … 1 Data Nascita Luogo Nascita 1 1242 Cod. persona 23/07/1961 Milano 1318 12/10/1980 Roma 61 RELAZIONE 1 A M 1 A M (PADRE – FIGLIO) La chiave primaria della tabella 2 (figlia) contiene la chiave primaria della tabella 1 (padre) Come si realizza una associazione 1 a M? Tabella 1 1 62 M Tabella 2 IMPIEGATI Codice impiegato * Cognome Nome ….. ESISTONO 2 MODI • Padre-Figlio - La chiave primaria della tabella 1 (padre) è contenuta nella chiave primaria della tabella 2 (figlia) • Lookup - La chiave primaria della tabella 1 (padre) è un attributo della tabella 2 (figlia) 63 1 M FIGLI A CARICO Codice impiegato * Codice figlio * Nome Cognome …. 64 16 1 A M (LOOKUP) RELAZIONE M A M (1) La chiave primaria della tabella 1 (padre) è un attributo della tabella 2 (figlia) CASE EDITRICI Come si realizza una associazione M a M? 1 Codice casa editrice * M M Tabella 1 LIBRI Codice libro * Titolo Sottotitolo Descrizione Anno pubblicazione Ragione sociale Indirizzo Cap Città Telefono Fax Provincia URL Email M Tabella 2 Tramite una tabella aggiuntiva e 2 relazioni 1 a M Codice casa editrice 65 66 RELAZIONE M A M (2) RELAZIONE M A M (3) La relazione N ad M viene spezzata tramite 2 relazioni 1 a M AUTORI Codice autore * Nome Cognome Email ….. M M LIBRI Codice libro * Titolo Sottotitolo Descrizione Anno pubblicazione AUTORI Codice autore * 1 1 Nome Cognome Email ….. Codice casa editrice Titolo Sottotitolo Descrizione Anno pubblicazione LIBRI AUTORI Codice libro * M Codice autore * 67 LIBRI Codice libro * Codice casa editrice M 68 17 NORMALIZZAZIONE NORMALIZZAZIONE Una volta creata una prima bozza di uno schema logico relazionale, è necessario effettuare una serie di verifiche sulla correttezza del procedimento svolto. Queste potranno portare a modificare la struttura dello schema al fine di renderlo corretto ed evitare il verificarsi, nella gestione dei dati, di errori difficilmente ovviabili a posteriori. Tale processo è detto normalizzazione ed è effettuabile mediante procedimenti di tipo algebrico matematico, basati sul concetto di dipendenza funzionale. Vediamone in maniera informale le regole principali. È un processo con il quale le tabelle vengono trasformate in altre tabelle in modo che ognuna di esse corrisponda a un singolo oggetto della realtà rappresentata Le regole della normalizzazione sono definite per evitare inconsistenza dei dati e anomalie nelle operazioni di aggiornamento 69 70 NORMALIZZAZIONE DEFINIZIONI Chiave (chiave primaria): l'insieme di uno o più attributi che identificano in modo univoco una n-upla (riga della tabella) Uno schema logico concettuale può definirsi “corretto” se rispetta: Attributo non-chiave: un campo che non fa parte della chiave primaria Dipendenza funzionale tra attributi: il valore di un attributo A1 determina un singolo valore dell'attributo A2 (in simboli A1 è A2) • Prima forma normale • Seconda forma normale • Terza forma normale Dipendenza transitiva: un attributo A2 dipende da A1 e l'attributo A3 dipende da A2; allora A3 dipende transitivamente da A1 se A1 71 A2 e A2 A3 allora A1 A3 in modo transitivo 72 18 Prima forma normale 1FN Prima forma normale 1FN Requisiti della Prima forma normale tutte le righe della tabella contengono lo stesso numero di colonne gli attributi rappresentano informazioni elementari i valori che compaiono in una colonna appartengono allo stesso dominio ogni riga è diversa da tutte le altre l’ordine con il quale le righe compaiono nella tabella è irrilevante La prima forma normale stabilisce che in una tabella non possono esistere colonne definite per contenere una molteplicità di valori. Una tabella quindi non può contenere una struttura vettoriale (array). Le tabelle che contengano una colonna non rispondente a questa condizione vanno trasformate, creando per ciascuna riga della tabella di partenza tante righe quanti sono i valori multipli presenti nella colonna considerata In particolare gli attributi devono essere informazioni non ulteriormente scomponibili, cioè non devono avere sottoattributi, né essere gruppi di attributi ripetuti. 73 Esempio 1FN Esempio 1FN Con un processo di normalizzazione la tabella deve essere trasformata in 2 tabelle IMPIEGATI Cod. impiegato Cognome Nome Data nascita Figli a carico 001242 Franco 09/11/1961 001318 74 Rossi Verdi Alberto 24/04/1963 Marco Giuseppe Sandra Cod. impiegato Cognome Nome 001242 Rossi Franco 09/11/1961 001318 Verdi Alberto 24/04/1963 1 Sonia Claudio Una tabella di questo genere NON è in Prima forma normale in quanto l’attributo figli a carico contiene più valori. M 75 Data nascita Cod. impiegato Cod. Figlio Nome 001242 01 Marco 001242 02 Giuseppe 001242 03 Sandra 001318 01 Sonia 001318 02 Claudio 76 19 Seconda forma normale 2FN Seconda forma normale 2FN Requisiti della Seconda forma normale E’ in prima forma normale tutti i suoi attributi non-chiave dipendono dall’intera chiave, cioè non possiede attributi che dipendono soltanto da una parte della chiave La seconda forma normale riguarda quindi le tabelle in cui la chiave primaria sia composta da più attributi e stabilisce che, in questo caso, tutte le colonne corrispondenti agli altri attributi dipendano dall’intera chiave primaria. La seconda forma normale elimina la dipendenza parziale degli attributi dalla chiave. Esempio: ESEMPIO: Inventario La Tabella T1(A1,A2,A3,A4,A5) con (A1, A2) A3 A1 A4 A2 CodArticolo CodMagazzino DescArticolo Quantità IndirizzoMagazzino T2(A1,A2,A3) T3(A1,A4) T4(A2,A5) A5 non è in 2FN, e può essere normalizzata in 2FN con le tabelle: Chiave primaria: Codarticolo + CodMagazzino 77 Esempio 2FN 78 Esempio 2FN Inventario Inventario CodArticolo CodMagazzino DescArticolo Quantità IndirizzoMagazzino Problemi • indirizzo del magazzino ripetuto per ogni prodotto (ridondanza) • Descrizione dell’articolo ripetuto per ogni magazzino (ridondanza) • se cambia l’indirizzo magazzino, occorre modificare molte righe • con errori nell’aggiornamento si avrebbero indirizzi diversi per lo stesso magazzino o descrizioni diverse per lo stesso articolo(inconsistenza) • se non ci sono prodotti in un magazzino, non si può conoscere il suo indirizzo o la descrizione dell’articolo • se l’articolo non è presente in nessun magazzino, non si può conoscere la sua descrizione esatta Chiave primaria CodArticolo + CodMagazzino Dipendenze funzionali (CodArticolo, CodMagazzino) CodMagazzino CodArticolo CodArticolo CodMagazzino DescArticolo Quantità IndirizzoMagazzino Quantità IndirizzoMagazzino DescArticolo Si ha dipendenza parziale dalla chiave: NON E’ in 2FN 79 80 20 Esempio 2FN Terza forma normale 3FN Requisiti della Terza forma normale E’ in Seconda forma normale tutti gli attributi non-chiave dipendono direttamente dalla chiave, cioè non possiede attributi che dipendono da altri attributi che non sono in chiave Inventario CodArticolo CodMagazzino DescArticolo Quantità IndirizzoMagazzino Soluzione: mettere in 2FN Articolo Magazzino CodArticolo DescArticolo CodMagazzino IndirizzoMagazzino La terza forma normale elimina la dipendenza transitiva degli attributi dalla chiave. Esempio: 1 1 M Inventario La Tabella T1(A1,A2,A3,A4) con A2 A4 non è in 3FN, e può essere normalizzata in 3FN con le tabelle: M T2(A1,A2,A3) T3(A2,A4) CodArticolo CodMagazzino Quantità 81 Terza forma normale 3FN Esempio 3FN Impiegato La terza forma normale stabilisce che non esistano dipendenze tra le colonne di una tabella se non basate sulla chiave primaria. CodImpiegato Nome Nome Reparto TelefonoReparto Problemi • telefono del Reparto ripetuto per ogni Impiegato di quel Reparto (ridondanza) • se il telefono cambia, occorre modificare molte righe • con errori di aggiornamento, si avrebbero telefoni differenti • se un Reparto non ha impiegati, non si può conoscere il suo telefono ESEMPIO: Impiegati CodImpiegato 82 Reparto TelefonoReparto Chiave primaria CodImpiagato Dipendenze funzionali CodImpiegato Reparto Soluzione: mettere in 3FN Reparto Impiegato TelefonoReparto CodImpiegato 83 Reparto Nome Reparto Reparto TelefonoReparto 84 21 RIASSUMENDO RIASSUMENDO Prima forma normale Con la normalizzazione: possiede i requisiti fondamentali del modello relazionale, in particolare ogni attributo è elementare, non ci sono righe uguali, non ci sono attributi di gruppo o ripetuti la tabella iniziale viene scomposta in più tabelle complessivamente forniscono le stesse informazioni di partenza mantengono le dipendenze tra gli attributi in ciascuna di esse ogni attributo dipende direttamente dalla chiave vengono evitati problemi di ridondanza e di inconsistenza dei dati non ci deve essere perdita complessiva delle informazioni Seconda forma normale è in prima forma normale e non ci sono attributi non-chiave che dipendono parzialmente dalla chiave Terza forma normale è in seconda forma normale e non ci sono attributi non-chiave che dipendono transitivamente dalla chiave 85 Integrità referenziale 86 Integrità referenziale Per ogni valore non nullo della chiave esterna, deve esistere un valore corrispondente della chiave primaria nella tabella associata Per integrità referenziale si intende l’insieme di regole che garantiscono l’integrità dei dati di un modello relazionale rendendo valide le associazioni tra le tabelle ed eliminando gli eventuali errori di inserimento, cancellazione o modifica di dati collegati tra loro. Tabella 1 Chiave1 ChiaveE2 Tabella 2 Chiave2 Ogni valore di ChiaveE2 della Tabella 1 deve avere un valore presente nella Chiave2 della tabella 2 oppure il valore di ChiaveE2 deve essere nullo 87 88 22 Effetti integrità referenziale Effetti integrità referenziale Non è possibile immettere un valore nella chiave esterna di una tabella associata, se tale valore non esiste tra le chiavi della tabella primaria Esempio: Se esiste una integrità referenziale (Foreign key) tra l’ordine ed il cliente: un ordine non può essere assegnato ad un cliente che non esiste nella tabella dei clienti. Non è possibile eliminare una riga dalla tabella primaria, se esistono righe legate ad essa attraverso la chiave esterna nella tabella correlata Non si può modificare il valore assegnato ad una chiave nella tabella primaria, se essa compare in qualche riga della tabella correlata Esempio: Non è possibile modificare il valore alla chiave di un cliente se si sono ordini per quel cliente già registrati nella tabella degli ordini. Esempio: Non è possibile eliminare un cliente dalla tabella dei clienti se ci sono ordini assegnati a quel cliente nella tabella degli ordini. 89 90 23