Parleremo di ….. La storia Cos’è una base di dati? In altre parole … A cosa serve una base di dati ? Quali problemi provocano gli archivi tradizionali? Cosa deve garantire un database? Il DBMS Database o DBMS? Come può il DBMS superare i limiti della gestione tradizionale? Come si realizza l’integrazione degli archivi? Dov’è collocato un database? I modelli per il database Il modello gerarchico Il modello reticolare Il modello relazionale I database orientati agli oggetti Il modello relazionale: concetti fondamentali requisiti fondamentali la chiave primaria le regole di derivazione gli operatori relazionali Parleremo di ….. Il modello relazionale: la selezione la proiezione congiunzione operazioni sugli insiemi Normalizzazione 1FN 2FN 3FN L’integrità referenziale Osservazioni sul modello relazionale La gestione del database La gestione del database: funzioni del DBMS La gestione del database: il dizionario I linguaggi per le basi di dati: DDL (Data Definition Language) DMCL (Device Media Control Language) DML (Data Manipulation Language) DCL (Data Control Language) Query Languages Relational DBMS (RDBMS) Gli utenti La storia La storia dei database inizia, parallelamente a quella dell'elaborazione elettronica, negli anni '50. A partire dagli anni '60, grazie all'introduzione della distinzione tra il valore fisico dei dati ed il loro significato logico, si è lentamente passati da una modellizzazione focalizzata sui processi aziendali ad una modellizzazione basata sui dati aziendali, che sono entità meno soggette a variazioni rispetto ai processi. La storia Negli anni ’70: il modello reticolare ha una discreta diffusione soprattutto nei sistemi di elaborazione di grandi dimensioni; nel 1970 nasce il modello relazionale, proposto da Edward E.Codd, ricercatore IBM, come idea di un modello logico molto semplice e nello stesso tempo in grado di superare i limiti degli altri modelli utilizzati. La storia Negli anni '80: viene introdotto nell’uso corrente il modello relazionale. Si inizia a parlare di un nuovo software il database management systems (DBMS). Un DBMS controlla tutte le funzioni di input, immagazzinamento, elaborazione e recupero dei dati da un database e genera, basandosi sulle relazioni, vari tipi di informazione. La storia Lo sviluppo dei prodotti DBMS è stato possibile grazie all'introduzione di supporti di memorie di massa, magnetici e soprattutto ma recentemente anche ottici, che consentono grandi capacità oltre che tempi di accesso e di trasferimento in memoria centrale molto bassi. Cos’è una base di dati (database)? E’ un insieme di archivi di dati: organizzati in modo integrato attraverso tecniche di modellazione dei dati gestiti sulle memorie di massa dei computer attraverso appositi software In altre parole … Un database è una collezione di archivi di dati ben organizzati e ben strutturati, in modo che possano costituire una base di lavoro per utenti diversi con programmi diversi. A cosa serve una base di dati ? O b i e t t i v o ? Raggiungere una grande efficienza trattamento e nel ritrovamento dei dati, nel Superare i limiti presenti nelle organizzazioni tradizionali degli archivi quali: mancanza di integrazione fra gli archivi; legame fra l'accesso ai dati ed il tipo di organizzazione assegnata agli archivi. legame fra gli archivi ed i programmi, Quali problemi provocano gli archivi tradizionali? Ridondanza Produc e Incongruenza Produc e Inconsistenza I dati sono ridondanti se compaiono in maniera duplicata (questo è un aspetto di inefficienza nella gestione). Un dato è incongruente se può essere aggiornato in un archivio e non in un altro, oppure possono essere presenti valori diversi per lo stesso dato. I dati sono inconsistenti se non sono più affidabili, perché non si sa in modo certo quale dei diversi valori sia quello corretto. Quali problemi provocano gli archivi tradizionali? L'accesso ai dati è determinato dall’organizzazione assegnata agli archivi L’organizzazione assegnata agli archivi, le chiavi stabilite per i record e l'ordine con cui i campi compaiono nella struttura del record. Influisce su Accesso ai dati Operazioni che si possono effettuare sugli archivi I dati contenuti negli archivi possono inoltre essere trattati solo elaborando i file record per record. Quali problemi provocano gli archivi tradizionali? I programmi sono legati agli archivi che gestiscono Tutti i linguaggi di programmazione tradizionali (per esempio il Pascal o il Cobol) richiedono la specificazione, all'interno del programma, degli archivi utilizzati e della struttura dei loro record. Implica che Qualsiasi modifica alla struttura del record, richiede la modifica di tutti i programmi che utilizzano quel tipo di record. Cosa deve garantire un database? Efficienza Produttività Un database deve consentire di ritrovare facilmente le informazioni desiderate anche a fronte di una velocità nell'elaborazione, mole di dati sicurezza dei dati, rilevante. integrità delle registrazioni. Cosa deve garantire un database? Deve essere garantita la consistenza degli archivi. I dati in essi contenuti devono essere: significativi, effettivamente utilizzabili nelle applicazioni dell'azienda. Cosa deve garantire un database? I dati devono quindi essere protetti per impedire perdite accidentali dovute a: cadute del sistema, guasti hardware, interventi dannosi da parte di: utenti, ad esempio interventi dolosi sui dati dovuti ad accessi non autorizzati, programmi. Impedir e la perdita di integrità Il DBMS (Data Base Management System) Il superamento dell’uso tradizionale degli archivi basato su accessi esplicitati nel percorso da parte del programmatore con comandi di apertura, chiusura, lettura, scrittura e posizionamento. È garantito dal Software per la gestione di database denominato DBMS (Database Management System). Il DBMS (Data Base Management System) Il DBMS consente all'utente collocarsi in una posizione: di più lontana dall'hardware, dalle memorie di massa e dal Sistema Operativo più vicina all'applicazione che utilizza i dati contenuti negli archivi. Il DBMS (Data Base Management System) Accresce la differenza tra: struttura concettuale: modo attraverso il quale l'utente pensa all'organizzazione e al ritrovamento dei dati, struttura fisica dei dati: tecniche utilizzate dal Sistema Operativo per registrare e leggere negli archivi. Database o DBMS ? Nell’uso dei database … Database … come nell'uso degli archivi tradizionali Archivi di dati Insieme di dati DBMS Sistema per la gestione del database File System Come può il DBMS superare i limiti della gestione tradizionale? Indipendenza dalla struttura fisica dei dati I programmi applicativi sono indipendenti dai dati fisici. Possibile modificare i supporti con cui i dati sono registrati e le modalità di accesso alle memoria di massa senza modifiche alle applicazioni. Come può il DBMS superare i limiti della gestione tradizionale? Indipendenza dalla struttura logica dei dati I programmi applicativi sono indipendenti dalla struttura logica con cui i dati sono organizzati negli archivi Possibile modificare la definizione delle strutture della base di dati senza modificare il software applicativo. Come può il DBMS superare i limiti della gestione tradizionale? Utilizzo da parte di più utenti I diversi utenti del database possono avere anche una visione parziale del database. Le operazioni svolte da utenti diversi in modo concorrente non interferiscano una con l'altra. Come può il DBMS superare i limiti della gestione tradizionale? Eliminazione di: Ridondanza Inconsistenza Gli stessi dati non compaiono più volte in archivi diversi, cioè il database è costituito da archivi integrati di dati. Il database non può presentare campi uguali con valori diversi in archivi diversi. Come può il DBMS superare i limiti della gestione tradizionale? Facilità d’uso Il ritrovamento dei dati è facilitato e svolto con grandi velocità, anche nel caso di richieste provenienti contemporaneamente da più utenti. Come può il DBMS superare i limiti della gestione tradizionale? Sono previste procedure di controllo per: Integrità dei dati Sicurezza dei dati Consentire che le operazioni sui dati richieste dagli utenti vengono eseguite fino al loro completamento in modo da assicurare la consistenza dei dati. Impedire accessi non autorizzati ai dati contenuti nel database e di protezione da guasti accidentali. Come può il DBMS superare i limiti della gestione tradizionale? Uso di linguaggi per la gestione del database Il database viene gestito attraverso comandi per la manipolazione comandi per l’interrogazioni I comandi non agiscono su un singolo record per volta, ma su gruppi di record per volta. Come operano gli utenti del database ? Gli utenti della base di dati: elaborano in modo locale gli archivi che hanno a disposizione nel proprio sistema accedono in modo remoto a sistemi centrali attraverso le linee di comunicazione database locali database remoti Come si realizza l’integrazione degli archivi ? L'integrazione degli archivi è realizzata quindi a livello logico, nella visione che di essi hanno gli utenti finali, anche se i dati fisicamente possono risiedere su sistemi distanti. Dov’è collocato un database ? Gli archivi integrati che costituiscono la base di dati aziendale possono: dati risiedere su un unico accentrat computer; i essere distribuiti sulle memorie di massa di database computer diversi facenti distribuiti parte di una rete aziendale. I modelli per il database Il database è un modello della realtà considerata: i contenuti della base di dati rappresentano gli stati in cui si trova la realtà da modellare. gli eventi che avvengono nell'ambiente in cui opera l'azienda rappresentano i cambiamenti che vengono apportati alla base di dati I modelli per il database Il progetto è indipendente: dal computer, dai supporti fisici destinati a contenere le informazioni, dalle caratteristiche del DBMS. Contrariamente quanto accadeva nell’organizzazione convenzionale degli archivi. I modelli per il database Dallo schema concettuale entità/associazioni Progetto e realizzazione del database passando al modello logico cioè alle strutture di dati che consentono di organizzare i dati per consentire le operazioni di manipolazione e di interrogazione. I modelli per il database Clienti N possiede 1 Conto 1 ogni conto deve essere posseduto da uno o più clienti ogni cliente deve possedere uno ed un solo conto ogni conto può essere variato da uno o più movimenti e ci possono essere conti non movimentati ogni movimento deve variare uno ed un solo conto variare N Movimento I modelli per il database Nello sviluppo della teoria dei database, dal 1960 in poi, sono emersi tipi diversi di modelli per le basi di dati: gerarchico, reticolare, relazionale, database orientati agli oggetti. Il modello gerarchico Il modello gerarchico è particolarmente adatto per rappresentare situazioni nelle quali è possibile fornire all'insieme dei dati una struttura nella quale ci sono entità che stanno in alto ed entità che stanno in basso. Il modello gerarchico Il modello gerarchico rappresenta le entità secondo uno schema ad albero, nel quale: i nodi rappresentano le entità gli archi rappresentano le associazioni. Il modello gerarchico è particolarmente adatto a rappresentare le associazioni 1:N (uno a molti) ed ha avuto in passato una larga diffusione. Il modello gerarchico Nella pratica: l'entità è un file, l'istanza è un record, gli attributi sono i campi del record. Il modello gerarchico: esempio La caratteristica del modello gerarchico di ammettere un solo genitore per ogni nodo, crea un problema nel descrivere l'associazione tra i record di Clienti e i record di Conti a causa del record relativo al numero di conto 5100. Questo record ha due genitori: il record dei clienti di nome Gialli e quello di nome Verdi. Il modello gerarchico: esempio Per rispettare l'unicità del genitore del record di Conti si deve costruire l' albero: Il modello gerarchico: esempio La rigidità del modello gerarchico della struttura di dati creata non riesce ad evitare la ridondanza dei dati. Ridondanza provoca solo l'aumento dello spazio occupato dal database ed è una possibile causa di incongruenza dei dati Nonostante questi limiti, il modello gerarchico ha avuto in passato una larga diffusione, per il grande numero di implementazioni su modelli diversi di computer, e anche perché molte situazioni presentano in modo naturale una struttura di dati di tipo gerarchico. Il modello reticolare Questo modello è un’estensione del modello di albero gerarchico, essendo consentite anche associazioni tra entità che stanno in basso, e non solo dall'alto verso il basso come avviene nel modello gerarchico. Il modello reticolare Nel modello reticolare: Le entità rappresentano i nodi, Le associazioni rappresentano gli archi di uno schema a grafo orientato. Esempio di grafo orientato Avere simpatia per… Il modello reticolare Un database reticolare consiste di due insiemi di dati: un insieme di record, un insieme di legami. I legami sono realizzati memorizzando le coppie di chiavi delle entità associate. I tipi record sono fatti di campi tra i quali ci deve essere anche un campo chiave. Il modello reticolare: esempio Non esiste una gerarchia predefinita tra le entità quindi si evita la ridondanza dei dati perché un record figlio può avere un numero qualsiasi di padri. Il modello reticolare Nel database costruiti secondo il modello reticolare: risulta più complessa: la gestione delle informazioni in quanto deve essere utilizzata una struttura a grafo; l'implementazione; la costruzione del software applicativo. risultano più elevate: prestazioni perché è più vicino alla struttura fisica delle memorie di massa. Il modello relazionale Rappresenta il database insieme di tabelle. come un Viene considerato attualmente il modello più semplice ed efficace, perché è più vicino al modo consueto di pensare i dati, e si adatta in modo naturale alla classificazione e alla strutturazione dei dati. Il modello relazionale: esempio Clienti N possiede 1 Conto 1 variare N Movimento Confronto….. Le operazioni sui database gerarchici e reticolari sono complesse, agiscono su singoli record e non su gruppi di record. I modelli non relazionali sono fondamentalmente basati sulla programmazione di applicazioni, l'utente deve specificare i percorsi per ritrovare i dati e la velocità nel ritrovare le informazioni dipende dal software di gestione; nel modello relazionale invece i percorsi per le interrogazioni sono a carico del sistema. Il modello OODB (Object Oriented DataBase) I database orientati agli oggetti sono stati introdotti nel tentativo di superare alcune caratteristiche dei database relazionali che apparivano inadeguate per la gestione di dati complessi in modo vicino alla realtà (testi, grafici, audio, video, documenti e risorse Internet). Il modello OODB (Object Oriented DataBase) Il modello è basato sulla programmazione ad oggetti e consente di utilizzare: tecnologie più avanzate; prestazioni tipiche della programmazione ad oggetti (C++ etc.). E’ in grado di gestire: concetti quali il metodo e l'ereditarietà; oggetti e classi. Il modello OODB (Object Oriented DataBase) Il modello object-oriented offre la possibilità di: usare tipi di dati definiti Viene applicato dall'utente (cosa che non è al possibile nel database database il concetto relazionale), poter associare ai dati routine di codice che rappresentano le modalità di accesso ai dati. di oggetto, con i dati e i metodi. Il modello relazionale: concetti fondamentali Il modello relazionale si basa su alcuni concetti fondamentali tipicamente matematici e assegna grande importanza all'uso rigoroso del linguaggio matematico, con due obiettivi importanti: utilizzare un linguaggio conosciuto a livello universale, quale è il linguaggio matematico, eliminare i problemi di ambiguità nella terminologia e nella simbologia. Il modello relazionale: concetti fondamentali Il modello relazionale si chiama così perché è basato sul concetto matematico di relazione tra insiemi di oggetti: dati n insiemi A1, A2, A3, ..., An, si dice relazione un sottoinsieme dell'insieme di tutte le 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 modello relazionale: concetti fondamentali Rn Relazione Tabella Entità Numero n Grado Numero colonne Numero degli attributi Insieme Ai Dominio Una colonna Insieme dei valori di un attributo Insieme n-upla o tupla Riga Istanza dell’entità Cardinalità Numero righe Istanze dell’entità {a1, a2, a3, ..., an} Numero n-uple Il modello relazionale: concetti fondamentali a1 tupla Relazione Rn A1 Domin i a2 rosso verde Tipo Colore Mela Rosso Kiwi Verde Cocomero Rosso Banana Giallo Limone Giallo Grado giallo A2 bianco …. C a r d i n a l i t à Il modello relazionale: concetti fondamentali La chiave o chiave primaria è l'insieme di uno o più attributi che identificano in modo univoco una riga della tabella; La chiave candidata è l'insieme di uno o più attributi che possono svolgere la funzione di chiave; L’attributo non-chiave è un campo che non fa parte della chiave primaria; Il modello relazionale: concetti fondamentali La dipendenza funzionale tra attributi si ha quando il valore di un attributo A1 determina un singolo valore dell'attributo A2 si indica con A1 -> A2 la dipendenza transitiva si ha quando un attributo A2 dipende da A1 e l'attributo A3 dipende da A2; allora A3 dipende transitivamente da A1 si indica con A1 ->A2 A2 -> A3 allora A1 -> A3 in modo transitivo Il modello relazionale: concetti fondamentali 1. Tutte le righe della tabella contengono lo stesso numero di colonne, corrispondenti agli attributi, 2. Gli attributi rappresentano informazioni elementari (o atomiche), non scomponibili ulteriormente, 3. I valori assunti da un campo appartengono al dominio dei valori possibili per quel campo, e quindi sono dello stesso tipo; Il modello relazionale: concetti fondamentali 4. Non ci possono essere due righe con gli stessi valori dei campi, 5. Le n-uple presenti nella tabella non seguono un ordine prefissato. Il modello relazionale: la chiave primaria Se non ci sono due righe con gli stessi valori dei campi esiste un attributo (combinazione di più attributi) che identifica univocamente ogni tupla e che assume funzione di chiave primaria della relazione. Per il modello relazionale sussiste la prima regola d’integrità sull'entità (entity integrity), secondo la quale nessuna componente primaria può avere valore nullo della chiave Il modello relazionale: le regole di derivazione Le tabelle vengono ricavate dal modello concettuale E/R applicando semplici regole di derivazione del modello logico: 1. ogni entità diventa una relazione; 2. ogni attributo di un'entità diventa un attributo della relazione, cioè il nome di una colonna della tabella; 3. ogni attributo della relazione eredita le caratteristiche dell'attributo dell'entità da cui deriva; 4. l‘identificatore univoco di un'entità diventa la chiave primaria della relazione derivata; Il modello relazionale: le regole di derivazione 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 (foreign key) dell'entità di arrivo associata, cioè i suoi attributi identificatori univoci diventano attributi della seconda relazione; 7. l'associazione con grado molti a molti diventa una nuova relazione (in aggiunta alle relazioni derivate dalle entità) composta dagli identificatori univoci delle due entità e dagli eventuali attributi dell'associazione. Il modello relazionale: le operazioni relazionali Gli operatori relazionali agiscono su una relazione per ottenere una nuova relazione. Le operazioni relazionali consentono di effettuare le interrogazioni alla base di dati per: ottenere le informazioni desiderate estraendo da una tabella una sottotabella, combinare tra loro due o più tabelle generando nuove relazioni. Il modello relazionale: la selezione Genera una nuova relazione costituita solo dalle n-uple della relazione di partenza che soddisfano a una determinata condizione. Grado La relazione ha lo stesso grado di quella originaria. Cardinalità. La cardinalità può essere minore o uguale alla tabella di partenza, ma è ragionevole pensare che sia solitamente minore. Il modello relazionale: esempio Selezione: Città = “Roma” Cognome Nome Indirizzo Verdi Andrea Via Milano, 99 Roma Rossi Mario Via Verdi, 10 Roma Rossi Mario Via Verdi, 10 Firenze Verdi Andrea Via Rossi, 25 Palermo Bianchi Maria Via Rossi, 25 Cagliari ……. ……… ……. ….. R4: Grado = 4 - Cardinalità = 6 R’4: Grado = 4 - Cardinalità = 2 Città Il modello relazionale: la proiezione Genera una nuova relazione estraendo dalla tabella iniziale due o più colonne corrispondenti agli attributi prefissati. Grado. Il grado è minore o uguale al grado della relazione di partenza. Cardinalità. La cardinalità di norma è uguale a quella di partenza, è minore quando sono presenti righe uguali che vengono ridotte a una. Il modello relazionale: esempio R4 : Grado = 4 Proiezione: Cognome, Nome Delle righe uguali ne viene conservata una sola perché il modello relazionale non consente righe uguali tra loro. Cardinalità = 6 Cognome Nome Indirizzo Verdi Andrea Via Milano, 99 Roma Rossi Mario Via Verdi, 10 Roma Rossi Mario Via Verdi, 10 Firenze Verdi Andrea Via Rossi, 25 Palermo Bianchi Maria Via Rossi, 25 Cagliari ……. ……… ……. ….. R’4: Grado = 2 Cardinalità = 3 Città Il modello relazionale: natural join e equijoin Serve a combinare due relazioni aventi uno o più attributi in comune, generando una nuova relazione che contiene le righe della prima e della seconda tabella, che possono essere combinate secondo i valori uguali (equijoin) dell'attributo comune. Grado. Se i gradi sono rispettivamente N1 e N2, il grado della relazione generata è uguale a N1+N2-1, perché l'attributo comune compare una sola volta (natural join). Cardinalità. Non è prevedibile a priori. Il modello relazionale: outer join L’outer join può avere varie forme: join esterno Congiunzione che restituisce le righe dell'una e dell'altra tabella anche se non sono presenti valori uguali per l'attributo comune. Di tutte queste vengono combinate solo le righe per le quali il valore dell'attributo comune nella prima tabella trova un valore uguale nella colonna tabella. dell'attributo comune nella seconda Il modello relazionale: esempio left join Elenca comunque tutte le righe della prima tabella congiungendo tra le righe della seconda solo quelle per le quali si trovano valori corrispondenti per l'attributo comune. right join Elenca tutte le righe della seconda tabella e di queste congiunge con le righe della prima tabella solo quelle per le quali si possono trovare comune. valori corrispondenti per l'attributo Il modello relazionale: self-join Il self-join è una congiunzione con la quale vengono combinate righe di una tabella con le righe della stessa tabella quando sono presenti valori corrispondenti per attributi, cioè due attributi con lo stesso dominio. Il modello relazionale: operazioni sugli insiemi Se le tabelle su cui si opera hanno una struttura tabellare omogenea (colonne con lo stesso numero di attributi, dello stesso tipo e nello stesso ordine): l'unione consente di ottenere una nuova tabella, che contiene le righe della prima e della seconda tabella con riduzione a una di quelle ripetute; Il modello relazionale: operazioni sugli insiemi l'intersezione genera, a partire da due tabelle omogenee, una nuova tabella che contiene soltanto le righe comuni; la differenza genera una nuova tabella che contiene soltanto le righe della prima tabella che non sono contenute nella seconda tabella. Il modello relazionale: normalizzazione Nella definizione della struttura di una relazione occorre evitare la ripetizione e la ridondanza dei dati. Per evitare queste anomalie, a partire da una data relazione, vengono create altre relazioni, secondo un processo detto normalizzazione. La normalizzazione di una relazione avviene a livelli crescenti normali. a cui corrispondono diverse forme Il modello relazionale: 1FN Una relazione è in prima forma normale (1FN) quando rispetta i requisiti fondamentali del modello relazionale ed in particolare gli attributi devono essere informazioni: semplici ovvero non strutturati, non multivalore, Attributo multivalore: un valore può essere costituito da un insieme di valori. Attributo strutturato: un possibile valore è una tupla di valori. Il modello relazionale: esempio 1FN Dipendenti(Matricola, Nominativo, Indirizzo, FamiliariACarico) E’ possibile ritrovare le informazioni originarie attraverso un'operazione di congiunzione tra la relazioni Attributi strutturati Attributo multivalore sull'attributo comune. Dipendenti(Matricola, Nome, Cognome, Via, Città) FamiliariACarico(MatricolaDip, CodiceFam, NomeFam, Età) Il modello relazionale: 2FN Una relazione è in seconda forma normale (2FN) quando è: 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. Per le relazioni con chiavi composte la 2FN elimina la dipendenza parziale degli attributi dalla chiave. Il modello relazionale: esempio 2FN Merci (Codice, Magazzino, Quantità, LocalitàMagazzino) La soluzione consiste nel costruire nuove relazioni, togliendo dalla relazione di partenza gli attributi che dipendono solo parzialmente dalla chiave primaria. Merci (Codice, Magazzino, Quantità) Depositi (Magazzino, LocalitàMagazzino) Il modello relazionale: esempio 2FN Se la relazione R1(A1,A2,A3,A4,A5) con: (A1,A2) A3 (A1,A2) A4 A2 A5 non è in 2FN. Può essere trasformata nelle relazioni in 2NF: R21(A1,A2,A3, A4) R22(A2,A5) Non ci deve essere perdita complessiva delle informazioni. I dati possono essere ritrovati attraverso operazioni di congiunzione Il modello relazionale: 3FN Una relazione è in terza forma normale (3FN) quando è: in seconda forma normale tutti gli attributi non-chiave dipendono direttamente dalla chiave, cioè non possiede attributi non-chiave che dipendono da altri attributi non-chiave. La 3FN elimina la dipendenza transitiva degli attributi dalla chiave. Il modello relazionale: esempio 3FN Studente (Nome,Scuola, TelefonoScuola) La normalizzazione in 3FN si ottiene scomponendo la relazione di partenza in due nuove relazioni, nelle quali tutti gli attributi dipendono direttamente dalla chiave, togliendo gli attributi non-chiave che dipendono da un altro attributo non-chiave. Studente (Nome, Scuola) Istituti (Scuola, TelefonoScuola) Il modello relazionale: esempio 3FN Se la relazione R2(A1,A2,A3,A4) con: A1 A2 A1 A3 A2 A4 non è in 3FN. Può essere trasformata nelle relazioni in 3NF: R31(A1,A2,A3) R32(A2,A4) Non ci deve essere perdita complessiva delle informazioni. I dati possono essere ritrovati attraverso operazioni di congiunzione Osservazioni sulla normalizzazione Nella progettazione del modello relazionale non sempre è conveniente arrivare a gradi elevati di normalizzazione, anche perché nella realtà è raro trovare situazioni che vengono tradotte con tabelle normalizzate con ordine normale. superiore alla terza forma L’integrità referenziale Il modello relazionale possiede due regola di integrità: integrità sull’entità (entity integrity): che non consente valori nulli per la chiave; integrità referenziale (referential integrity): per ogni valore non nullo della chiave esterna, esiste un valore corrispondente della chiave primaria nella tabella associata. Questa regola garantisce l'integrità dei dati quando si hanno relazioni associate tra loro attraverso la chiave esterna. L’integrità referenziale: esempio In un database relazionale che contiene la tabella: Clienti (Codice, RagioneSociale, Indirizzo) Ordini (NumOrdine, Data, CodiceCliente) si applica l’integrità referenziale per garantire che per ogni valore presente nella tabella Ordini per la chiave esterna CodiceCliente abbia un corrispondente valore di Codice in una delle righe della tabella Clienti. Osservazioni sul modello relazionale Il modello relazionale ha portato poi benefici nel lavoro di progettazione del database. Il progettista del database può costruire il modello dei dati considerando con attenzione le entità, le associazioni e le dipendenze tra gli attributi nel modello della realtà. La gestione del database Il DBMS (Database Management System) è il software che consente di costruire e gestire una base di dati, realizzandola nella pratica su memoria di massa, a partire da un progetto e da uno schema dei dati definiti a livello concettuale e tradotto poi in un modello logico dei dati. La gestione del database La gestione del database: funzioni del DBMS Implementazione del modello logico sul sistema di elaborazione Definizione dei dati e delle strutture dati derivate dallo schema logico (le tabelle del modello relazionale), con documentazione sul modello. produzione della La gestione del database: funzioni del DBMS Implementazione del modello logico sul sistema di elaborazione Definizione dei sottoschemi (viste), cioè visioni del database legate alle particolari applicazioni dei singoli utenti e che consentono agli utenti di accedere ai dati che servono, ottenute attraverso proiezioni o congiunzioni; la vista si chiama anche tabella virtuale, rispetto alle tabelle del database, dette anche tabelle primarie. Le viste sono finestre dinamiche sulle tabelle del database, in quanto ogni modifica ai dati sulla tabella primaria si riflette sulla vista e viceversa. La gestione del database: funzioni del DBMS Implementazione del modello logico sul sistema di elaborazione Organizzazione fisica dei dati sui supporti di memorizzazione, utilizzando le tecniche che ottimizzano l'occupazione della memoria di massa e i tempi di accesso alle registrazioni. La gestione del database: funzioni del DBMS Manipolazione e interrogazione sulla base di dati Inserimento dei dati nel database e trattamento dei dati già registrati con operazioni di modifica o cancellazione; La gestione del database: funzioni del DBMS Manipolazione e interrogazione sulla base di dati Interfaccia tra i programmi degli utenti (scritti con i tradizionali linguaggi di programmazione) e la base di dati, utilizzando le funzionalità del DBMS per migliorare l'organizzazione dei dati e le prestazioni dei programmi nelle operazioni di ritrovamento dei dati; La gestione del database: funzioni del DBMS Manipolazione e interrogazione sulla base di dati Accesso ai dati contenuti nel database per le interrogazioni, attraverso interfacce o comandi semplici che facilitano soprattutto l'utente finale non specialista. La gestione del database: funzioni del DBMS Controllo dell'integrità dei dati integrità sulle entità; integrità referenziale; integrità definite dall'utente. Vincoli specifici per un particolare database, come conseguenza di politiche commerciali dell'azienda oppure di norme legislative e fiscali. La gestione del database: funzioni del DBMS Sicurezza e protezione garanzia di sicurezza dei dati contro i danni causati da malfunzionamenti di componenti hardware o software o da interventi dolosi; protezione dei dati da eventuali danneggiamenti per garantire l'integrità dei dati, offrendo anche la possibilità di attivare procedure di recovery in caso di perdita dei dati; La gestione del database: funzioni del DBMS Sicurezza e protezione autorizzazione degli utenti che accedono alla base di dati e protezione dei dati dagli accessi non autorizzati; controllo degli accessi in modo concorrente al database da parte di più utenti. La gestione del database: il dizionario Inoltre il DBMS si occupa della gestione del dizionario (o catalogo del database), contenente le informazioni su: nomi delle tabelle e delle colonne, associazioni, viste, vincoli di integrità, utenti e proprietari, autorizzazioni degli accessi. La gestione del database: il dizionario Il dizionario contiene i metadati, cioè i dati che descrivono i dati organizzati nel database. Anche le informazioni del dizionario sono organizzate in modo relazionale, cioè come valori in tabelle. Gli utenti autorizzati possono quindi accedere alle informazioni del dizionario con le stesse modalità con le quali operano per ritrovare i dati nel database. I linguaggi per le basi di dati Le prestazioni del DBMS vengono attivate dall'utente usando appositi comandi, che costituiscono a tutti gli effetti un linguaggio, attraverso il quale l'utente può comunicare con il sistema di elaborazione che gestisce il database. I linguaggi per le basi di dati Unificando in un unico linguaggio le funzioni dei numerosi linguaggi per le basi di dati si parla di linguaggio per basi di dati, intendendo un insieme completo di comandi che: consente e facilita le operazioni di definizione del database (DDL), di manipolazione dei dati (DMCL, DML, DCL), di interrogazione da parte degli utenti (Query Language). I linguaggi per le basi di dati I linguaggi per database relazionali si basano sulla visione tabellare dei dati che facilita l'utente in quanto non contiene nessuna informazione sul percorso per l'accesso fisico ai dati. Database La formulazione delle richieste di dati viene quindi semplificata, perché libera l'utente dagli aspetti riguardanti la navigazione all'interno della base di dati. I linguaggi per le basi di dati I comandi che il DBMS mette a disposizione possono essere classificati nelle seguenti categorie di linguaggi: DDL (Data Definition Language) DMCL (Device Media Control Language) DML (Data Manipulation Language) DCL (Data Control Language) Query Language Relational DBMS I linguaggi per le basi di dati: DDL Il linguaggio per la descrizione dei dati, delle tabelle e delle viste, detto DDL (Data Definition Language), consente all'utente, facendo riferimento al proprio schema logico, ordina al DBMS la creazione della struttura fisica del database e la definizione dei sottoschemi relativi alle applicazioni contenute nei programmi dei singoli utenti. I linguaggi per le basi di dati: DMCL Il linguaggio di controllo dei supporti di memorizzazione dei dati, detto DMCL (Device Media Control Language), permette di riferire la struttura fisica del database alle specifiche unità di memoria di massa utilizzate dal sistema di elaborazione. I linguaggi per le basi di dati: DML Il linguaggio per il trattamento (o manipolazione) dei dati contenuti nel database, detto DML (Data Manipulation Language), consente le usuali operazioni di accesso per inserimenti, modifiche o cancellazioni I linguaggi per le basi di dati: DCL Il linguaggio per fissare i vincoli di integrità, per stabilire le autorizzazioni agli accessi e i tipi di permessi consentiti agli utenti (inserimento di nuovi dati, sola lettura, modifica dei dati) è detto DCL (Data Control Language). I linguaggi per le basi di dati: QL Il linguaggio per le interrogazioni alla base di dati, detto Query Language, consente il ritrovamento dei dati che interessano, sulla base dei criteri di ricerca richiesti dall'utente. I moderni DBMS mettono a disposizione dell’utente interfacce, a menu o grafiche, che facilitano l'interazione. I linguaggi per le basi di dati: RDBMS Lo sviluppo e il raffinamento delle tecniche di gestione delle basi di dati hanno dato vita a linguaggi formati da comandi specifici, per consentire agli utenti un facile uso delle prestazioni del DBMS per basi di dati relazionali (detti RDBMS, cioè Relational DBMS). I linguaggi per le basi di dati: RDBMS Questi comandi possono essere richiamati: dall'interno (Embedded SQL) di un programma scritto con i tradizionali linguaggi di programmazione (Cobol, Pascal, C), detto host language; tramite linguaggi orientati alla gestione delle basi di dati con caratteristiche di linguaggi a sé stanti. Gli utenti L’accresciuta differenza fra struttura concettuale e struttura fisica aumenta la distinzione tra le diverse figure degli utenti del computer: DBA (Database Administrator) Programmatore Utente finale Gli utenti: DBA (Database Administrator) E’ il responsabile della gestione del database e utilizza, per svolgere le sue funzioni, le prestazioni e i linguaggi del DBMS. Gli utenti: DBA (Database Administrator) sistemista, Collabora con le altre figure: analista, responsabile dello sviluppo software, programmatore progettazione del database, Nelle diverse fasi: costruzione delle applicazioni, traduzione dello schema del database nel modello fisico da creare su memoria di massa, manutenzione dei dati nel tempo Gli utenti: DBA (Database Administrator) Il DBA ha i seguenti compiti: implementazione del modello logico del database nel sistema di elaborazione sui supporti fisici delle memorie di massa; gestione e trattamento dei dati inserimenti, modifiche, cancellazioni); (controllo di autorizzazione degli accessi; definizione delle viste per accessi parziali di utenti alla base di dati; Gli utenti: DBA (Database Administrator) … ed inoltre: controllo dei programmi applicativi che richiedono l'uso del database; manutenzione del database nel tempo, in termini di efficienza e di ottimizzazione delle risorse; controllo sugli interventi di recupero, nel caso di cattivi funzionamenti, e sulle copie di salvataggio periodiche; controllo della disponibilità degli spazi su memoria di massa. Gli utenti: programmatori Con i loro programmi operano sui dati organizzati in un database, utilizzando: un linguaggio DML (Data Manipulation Language), comandi che sono un'estensione dei tradizionali linguaggi di programmazione, un linguaggio specifico per basi di dati. Agiscono sotto il controllo del gruppo di progetto e di produzione del software applicativo a cui partecipa anche il DBA. Gli utenti: utenti finali Usano le informazioni contenute nel database. Accedono alla base di dati attraverso: i comandi di un linguaggio di interrogazione (Query Language), se sono utenti esperti, interfacce software che presentano sul video il menu o le icone, se, al contrario, sono utenti poco esperti Fine Dizionario ….. Grafo Un grafo è la rappresentazione grafica di una relazione dove: gli elementi del grafo sono detti nodi, i segmenti che li uniscono sono detti archi. Avere simpatia per… Essere amico di … Se la relazione fra gli elementi non è biunivoca il grafo si dice orientato.