digilander.iol.it/airone82/ 1/7 Appunti sui database Realizzati da Ligo On line al sito digilander.iol.it/airone82/ 1] DATABASE 1.1) Definizione Insieme di dati rivolti alla rappresentazione di uno specifico sistema informativo di tipo aziendale, informatico, … Il DB deve rappresentare i diversi aspetti della realtà, e in particolare: La struttura dei dati: questi vengono descritti come aggregazione di elementi base e classificati secondo la loro struttura comune. Le relazioni tra dati: il DB deve contenere non solo le informazioni strutturali relative a ciascuna categoria di dati, ma anche rappresentare le eventuali relazioni logiche presenti tra le varie categorie. NB.: 1. non bisogna creare copie di dati 2. DB deve essere utilizzabile da più utenti (quando parlo di utenti mi riferisco a persone fisiche ma anche a programmi che operano sul DB) 3. I dati devono essere permanenti 1.2) Tipi di Database 1) Gerarchico: anche chiamato ad albero si sviluppa partendo da una radice, che sarà l’entità principale ampliandosi poi verso il basso. Esempio: Livello 1 (root o radice) Livello 2 Livello 3 2) Reticolare: le entità rappresentano i nodi e le associazioni rappresentano gli archi di uno schema grafo orientato: si tratta cioè di una estensione del modello di albero gerarchico, essendo consentite anche associazioni tra entità che stanno in basso, e non solo dall’alto verso il basso I rettangoli in giallo sono le entità, mentre quelli in verde rappresentano le relazioni descritte come record, in cui in un campo c’è il elemento della tabella A e nell’altro campo un Ligo digilander.iol.it/airone82/ 2/7 elemento della tabella B, e questi due elementi sono quelli su cui si basa la relazione indicata dalla freccia tra la tabella A e la tabella B 3) Relazionale (quello in uso ora in tutto il mondo): si basa su alcuni concetti fondamentali tipicamente matematici e assegna grande importanza all’uso rigoroso del linguaggio matematico, con due obbiettivi importanti: utilizzare un linguaggio conosciuto a livello universale, quale è quello matematico eliminare i problemi di ambiguità nella terminologia e nella simbologia Il modello relazionare ha preso questo nome poiché si basa sul concetto matematico di relazione tra insiemi di oggetti. Dal punto di vista matematico, dati n insiemi A1, A2, A3, …, An, si dice relazione l’insieme delle n-uple a1, a2, a3, …, an che si possono costruire prendendo nell’ordine un elemento a1, dal primo insieme A1, a2 dal secondo insieme A2, e così via. Il numero n si chiama grado della relazione, gli insiemi Ai si chiamano domini della relazione, e il numero delle n-uple si chiama cardinalità della relazione. A1 A2 ….. An relazione a1 a2 …. n-upla (o tupla) an Cardinalità Grado La relazione viene rappresentata con una tabella, avente tante colonne quanti sono i domini e tante righe quante sono le n-uple I nomi dei domini sono i nomi delle colonne La chiave della relazione è una combinazione di attributi (elementi) che identificano univocamente le n-uple all’interno della relazione Requisiti fondamentali che caratterizzano il modello relazionale: tutte le righe della tabella contengono lo stesso numero di colonne, corrispondenti agli attributi gli attributi rappresentano informazioni elementari, non scomponibili ulteriormente, cioè non ci sono campi di gruppo che contengono per ogni riga un insieme di valori anziché un solo valore. I valori assunti dai campi, all’incrocio tra una riga e una colonna, 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. Per fare questo esiste un attributo o una combinazione di attributi che identificano univocamente la n-upla, e che assumono perciò la funzione di chiave primaria della relazione Le n-uple compaiono nella tabella secondo un ordine non prefissato Ligo digilander.iol.it/airone82/ 3/7 La chiave (formata da uno o più attributi) identifica la n-upla all’interno della tabella: ogni dato elementare contenuto nel modello relazionale deve essere accessibile attraverso la combinazione di nome della tabella, nome e valore della chiave, nome della colonna contenente il dato. Per questo motivo il modello relazionale fissa una regola di integrità sui dati, detta integrità sull’entità, secondo la quale nessuna componente della chiave primaria può avere valore nullo. Dal modello concettuale al modello logico 1. Ogni entità diventa una tabella 2. Ogni attributo di un’entità diventa un attributo della relazione, cioè il nome di una colonna della tabella 3. Ogni attributo della relazione eredità le caratteristiche dell’attributo dell’entità (tabella) da cui deriva 4. L’identificatore univoco di un’entità diventa chiave primaria della relazione derivata 5. L’associazione uno a uno diventa un’unica relazione che contiene gli attributi della prima e della seconda entità 6. L’identificatore univoco dell’entità di partenza nell’associazione uno a molti diventa chiave esterna dell’entità di arrivo associata, cioè i suoi attributi identificatori univoci diventano attributi della seconda relazione. (Riprenderò meglio più avanti questo concetto) 7. La relazione con grado molti a molti diventa una nuova relazione composta dagli identificatori univoci delle due entità e dagli eventuali attributi dell’associazione Esempi per specificare meglio i punti 5, 6 ,7 Uno-uno (5) Esempio di relazione uno a uno è il rapporto tra codice fiscale e cittadino, infatti a ogni cittadino corrisponde un unico codice fiscale, e ogni codice fiscale identifica uno e un solo cittadino. Rappresentiamo ora questa relazione con uno schema E/R (Entity Relationship) Codice Fiscale 1 1 Cittadino Secondo quanto detto nel punto 5 si può creare un’unica entità che contenga gli attributi di entrambe le entità. Chiamo questa entità somma AnagrafeTributaria, e sarà così formata Anagrafe Tributaria AnagrafeTributaria (CodiceFiscale, Cognome, Nome, DataNascita) (CodiceFiscale era l’attributo di Codice Fiscale e Cognome, Nome, DataNascita erano gli attributi di Cittadino.) NB.: Con questa scrittura si indicano gli attributi dell’entità indicata fuori dalle tonde. L’attributo con doppia sottolineatura è l’attributo chiave primaria, quello con singola sottolineatura è l’attributo chiave esterna. Ligo digilander.iol.it/airone82/ 4/7 Uno-Molti (6) Un esempio di relazione uno a molti è la relazione tra contratto e dipendente, infatti un tipo di contratto può essere adottato per più dipendenti e più dipendenti possono avere lo stesso tipo di contratto. Contratto 1 N Dipendenti Con lo schema E/R per indicare la relazione uno-molti si usa la freccia orientata verso l’entità a cui si riferisce molti e si indica con 1 (per indicare uno) e N (per indicare molti) Secondo quanto detto nel punto 6 bisogna aggiungere una chiave esterna alla tabella Dipendente (quella a molti), costituita dall’insieme degli attributi che formano la chiave primaria della relazione Contratto Nell’esempio fatto si avrà: Contratto (Codice, Descrizione, StipendioBase, DataScadenza) Dipendente (Matricola, Cognome, Nome, Indirizzo, Qualifica, CodiceContratto) Quindi agli attributi dell’entità Dipendente (a molti) è stata aggiunta come chiave esterna CodiceContratto, cioè la chiave dell’entità Contratto (a uno) Regola Generale Dal modello concettuale vengono derivate le tabelle che rappresentano le entità e l’associazione uno a molti viene tradotta aggiungendo agli attributi dell’entità a molti la chiave dell’entità a uno. Molti a Molti (7) Esempio di relazione molti a molti è la relazione tra docente e classe, infatti un docente può avere più classi e una classe può avere più docenti. Tradotto nello schema E/R si ha: Docente N N Classe Come detto nel punto 7 accanto alle tabelle Docente e Classe viene aggiunta una nuova tabella che ha come chiave primaria, la combinazione delle chiavi primarie delle due entità, e come attributi gli elementi comuni alle due tabelle. Le due entità si legano con la nuova con la relazione uno a molti. Nell’esempio precedente si ha: Docente 1 N Insegna Docente (Codice, Nome, Qualifica, Materia) Classe (Sigla, NumeroAlunni, Aula) Ligo N 1 Classe digilander.iol.it/airone82/ 5/7 Insegna (CodiceDocente, SiglaClasse, NumeroOre) 1.3) Regole Di Normalizzazione La normalizzazione è un processo formalizzato con il quale le tabelle vengono trasformate in modo tale che ogni tabella corrisponda a un singolo oggetto della realtà rappresentata con il modello di database: le regole della normalizzazione sono definite per evitare inconsistenza dei dati e anomalie nelle operazioni di aggiornamento. In sostanza la normalizzazione consente di creare tabelle ben definite, che facilitino le operazioni di aggiunta, modifica e cancellazione delle informazioni, e che rendono possibili i cambiamenti nella struttura del modello con l’evolvere delle esigenze aziendali e degli utenti del database. 1.3.1) Prima Forma Normale Una relazione è in prima forma normale (1FN) quando rispetta i requisiti fondamentali del modello relazionale che sono: tutte le righe della tabella contengono lo stesso numero di colonne, corrispondenti agli attributi gli attributi rappresentano informazioni elementari, non scomponibili ulteriormente, cioè non ci sono campi di gruppo che contengono per ogni riga un insieme di valori anziché un solo valore. I valori assunti dai campi, all’incrocio tra una riga e una colonna, 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. Per fare questo esiste un attributo o una combinazione di attributi che identificano univocamente la n-upla, e che assumono perciò la funzione di chiave primaria della relazione Le n-uple compaiono nella tabella secondo un ordine non prefissato 1.3.2) Seconda Forma Normale Una relazione è in Seconda Forma Normale (2FN) quando è in prima forma normale e 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 eliminala dipendenza parziale degli attributi dalla chiave e riguarda il caso di relazioni con chiavi composte, cioè formate da più attributi 1.3.3) Terza Forma Normale Una relazione è in terza forma normale (3FN) quando è in seconda forma normale e tutti gli attributi non-chiave dipendono direttamente dalla chiave, cioè non possiede attributi non-chiave che dipendono da altri attributi non-chiave. La terza forma normale elimina la dipendenza transitiva degli attributi della chiave N.B.: dipendenza transitiva: si ha quando un attributo a2 dipende da un attributo a1 e l’attributo a3 dipende dall’attributo a2; allora a3 dipende da a1 a1 a2 a2a3 a1 a3 in modo transitivo Ligo digilander.iol.it/airone82/ 6/7 1.3.4) Forma Normale di Boyce-Codd Una relazione è in forma normale di Boyce-Codd (BCNF) quando è in seconda forma normale e in essa ogni determinante è una chiave candidata, cioè ogni attributo dal quale dipendono altri attributi può svolgere la funzione di chiave primaria. Esempio: Ho la tabella anagrafe così formata: Anagrafe (ID_CodFisc, Cognome, Nome, CodiceFiscale) Ho come chiave primaria ID_CodFisc che mi identifica CodiceFiscale, e ho CodiceFiscale che è chiave candidata cioè CodiceFiscale può svolgere la funzione di chiave primaria, e che mi identifica Cognome e Nome. Per mettere Anagrafe in forma normale di Boyce-Codd introduco una seconda entità Anagrafe (ID_CodFisc, Cod_CodiceFiscale) Cittadini (CodiceFiscale, Cognome, Nome) N.B.: in questo caso la soluzione migliore sarebbe stata modificare Anagrafe togliendo l’attributo ID_CodFisc e mettendo CodiceFiscale come chiave primaria. 1.4) Integrità Referenziale L’integrità Referenziale è un insieme di regole del modello relazionale che garantiscono l’integrità dei dati quando si hanno relazioni 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 DBMS (Data Base Management System) Il DBMS è un software che permette una facile gestione del Database. Senza DBMS: App1 App2 App3 App1, App2, App3,… accedono direttamente agli archivi di dati, quindi ognuna di esse deve caricare la struttura interna degli archivi dei dati e quindi deve soddisfare i requisiti di: 1. non bisogna creare copie di dati 2. DB deve essere utilizzabile da più utenti (quando parlo di utenti mi riferisco a persone fisiche ma anche a programmi che operano sul DB) 3. I dati devono essere permanenti Con i DBMS: App1 App2 App3 Ligo DB digilander.iol.it/airone82/ 7/7 Il DBMS fa la sua comparsa grazie alla comparsa della programmazione modulare. Il DBMS non è altro che un modulo che ha lo scopo di gestire i dati svincolando da tale dovere le varie applicazioni (composte da moduli che richiamano il DBMS). Con l’uso del DBMS si ha: indipendenza dei dati dall’applicazione riservatezza nell’accesso ai dati gestione dell’integrità fisica dei dati gestione dell’integrità logica dei dati sicurezza e ottimizzazione nell’uso dei dati Conseguenze dell’introduzione del DBMS 1. L’applicazione non deve più fare riferimento alla struttura fisica dei dati, poiché i dati hanno una struttura che prescinde dall’applicazione. 2. Il DBMS crea automaticamente copie parziali dei dati per consentire l’uso contemporaneo dei dati da parte di più utenti. 3. Protegge i collegamenti logici tra le diverse tabelle. Il DBMS applica quindi tutte le regole viste nell’integrità referenziale Ligo