Archivi e database Lezione n. 7 Dagli archivi ai database (1) I dati non sempre sono stati considerati dall’informatica oggetto separato di studio e di analisi Nei primi tempi i dati erano parte integrante del programma e venivano organizzati seguendo la logica sia dell’algoritmo sia del supporto fisico di memorizzazione. Si utilizzavano i modelli degli archivi Se per esempio si aveva a disposizione un tape ossia un nastro per archiviare i dati di una banca, necessariamente i dati dovevano essere trattati con algoritmi sequenziali a causa del mezzo fisico di memorizzazione Dagli archivi ai database (2) Questo creava problemi di diversa natura e si è iniziato a pensare a modellare i dati come oggetto indipendente Nasce la disciplina dell’organizzazione dell’informazione spesso chiamata “Sistemi informativi e database” Scopo di questa disciplina è di organizzare concettualmente e logicamente i dati per rappresentarli così come ontologicamente sono, indipendentemente dal supporto fisico di memorizzazione (memorie di massa) o dalla funzione che devono assolvere (programma) Dagli archivi ai database (3) La definizione dei dati era embedded nei programmi applicativi piuttosto che essere memorizzaza separatamente e indipendentemente Nessun controllo sugli accessi e la manipolazione di dati se non quella imposta dal programma applicativo Database: un sistema di gestione dati integrato in cui i dati sono mantenuti in modo non ridondante e in cui l’utente può specificare con un comando unico una richiesta (query) per una varietà di dati DBMS - Data Base Management System Un sistema software che consente all’utente di definire, creare, e mantenere il database e fornisce accesso controllato ad esso Limiti dei sistemi di gestione di archivi - I Separazione e isolamento dei dati Ogni programma gestisce il proprio insieme di dati : gli utenti di un programma non hanno possibilità di accedere a dati utili gestiti da altri programmi Duplicazione dei dati Gli stessi dati sono gestiti da programmi diversi. Spazio di memoria sprecato e talora valori e format diversi per lo stesso dato Limiti dei sistemi di gestione di archivi - II Data dependence La struttura dei file è definita nel codice del programma Format incompatibili per i dati I programmi sono scritti in linguaggi diversi e non possono accedere agli file altrui Query fisse e proliferazione dei programmi applicativi I programmi sono scritti per funzioni particolari; ogni nuova esigenza richiede un nuovo programma Dato come risorsa Dato - la più piccola unità significativa atomica che rappresenta un oggetto, un evento, un fatto, un’astrazione, un concetto a senso compiuto Il Dato ha un ciclo di vita, un valore, una necessità per qualche unità organizzativa Un dato si dice persistente quando spento il calcolatore mantiene la sua integrità Il dato è una risorsa preziosa Il dato merita di essere rappresentato nel suo valore intensionale e astratto indipendentemente dalle attuali e contingenti applicazioni Triangolo semiotico: intensione ed estensione Intensione concetto astratto Significante classe o entità Estensione o istanza specifica oggetto Gottlob Frege [1848 - 1925], Charles Sanders Peirce [1839 - 1914], e Ferdinande de Saussure [1857 -1913] Differenza fra archivi e database Il dato può essere visto come valore (estensionale), come valore del significante e come elemento di una classe (intensionale) Es. La classe dei numeri primi P = {x l x ∈ N e x non ha divisori diversi da 1 e da se stesso} – definizione intensionale tramite le proprietà P = {I numeri primi } - abbiamo dato un nome a questa classe – definizione del significante tramite una categoria (primi) P = {1,3,5,7, 11, 13, … } - abbiamo dato una definizione tramite i dati oggettivi concreti ossia le istanze concrete dell’insieme dei numeri primi, abbiamo elencato i membri dell’insieme che sono i valori estensionali Negli archivi hanno una struttura lineare e registrano la sola rappresentazione entensionale, la rappresentazione intensionale è modellata nei programmi applicativi Nei DBMS poichè abbiamo la rappresentate delle relazioni e degli attributi riespetto ad ogni entità riusciamo a catturare anche la rappresentazione estensionale Dato e gli archivi Il dato persistente viene memorizzato in apposite strutture dati dette ARCHIVI o file Un archivio è una collezione di dati organizzati secondo uno schema detto record logico- lung. fissa o lung. variabile Esempio: l’archivio AGENDA NOME COGN. INDIRIZZO TELEFONO1 TELEFONO2 Record logico Operazioni sui dati in generale Indipendentemente se usiamo archivi o database abbiamo alcune operazioni di basilari da compiere con i dati lettura scrittura - inserimento modificazione cancellazione ricerca Come è fatto un archivio - il record Per comprendere come è formato un archivio occorre partire dall’unità di base ossia il Record o registrazione: unità logica minima di dati cui il computer può accedere negli archivi strutturati: suddiviso in campi, ciascuno dei quali codifica una singola informazione elementare, numerica o alfanumerica negli archivi di testo: l’intero record è costituito da una riga o paragrafo Un formato di record Nome: Cognome: Via: Città: CAP: testo, testo, testo, testo, Numero 15 caratteri 20 caratteri 30 caratteri 20 caratteri intero Il contenuto di un record Matricola: Nome: Cognome: Via: Città: CAP: 00004356789 Mario Rossi Verdi, 30 Milano 204378 Archivio o file: definizione File strutturato: file destinato a contenere un insieme di record dotati della medesima struttura (formato) Viene creato o modificato mediante apposite istruzione del linguaggio di programmazione relativo (o mediante apposite interfacce grafiche) Diversi tipi di file: Sequenziale Accesso diretto Accesso con chiave Inverted file File sequenziali I dati sono memorizzati in sequenza e si accedono in sequenza Per leggere l’ultimo record occorre scorrere tutto il file Per poter scrivere un nuovo record occorre leggere tutto il file, posizionarsi sull’ultimo record e poi accodare il nuovo record File ad accesso diretto I dati sono memorizzati casualmente sul supporto di memoria secondaria La posizione dei dati viene calcolata sulla base di un campo detto chiave. Tale campo serve da input ad un algoritmo detto di hashing che calcola l’indirizzo del dato trasformazione Hashing(dato) indirizzo dove il dato è memorizzato fisicamente Si accede al dato in modo diretto sia in lettura sia in scrittura File con chiave (I) I dati sono memorizzati a blocchi sequenziali sul supporto di memoria secondaria I singoli record sono identificati mediante un campo unico detto chiave primaria Le chiavi sono inserite in un file a parte detto indice (come un indice di libro) Per accedere ai dati si utilizza il file indice che rimanda al blocco di memoria dove sono memorizzati i dati File con chiave (II) I N D I C E Chiave Indirizzo di blocco 0-99 99-199 200-299 300-399 400-499 500-599 600-699 699-800 1 2 3 4 5 6 7 8 hash Blocco 1 Esempio: accedo ai dati del cliente mediante il suo codice univoco Chiave Denom. P.I. 20 50 80 99 Chiave Blocco 2 110 180 200 250 FIAT BMW ALFA LANCIA Denom. ONDA Mercedes DUCATI Ferrari P.I. File invertiti (I) Tutti i dati del record sono chiavi di accesso ai dati Si costruiscono delle tabelle accessorie per la costruzione degli accessi ai dati Poiché lo stesso dato può ricorrere in più record si costruisce una tabella di valori associati agli indirizzi dei record in cui questo valore si trova La ricerca agisce sulle tabelle dei valori e recupera gli indirizzi dei record in cui questi valori ricorrono File invertiti (II) F i l e _ i n v e r t i t o Esempio: ricerco tutti i cittadini che abitano in via Magenta Via Indirizzo Magenta 01110 10111 01111 10101 01010 Mitelli 11111 10000 Indirizzo Nome 01110 11111 11101 10111 01000 10000 01111 Rossi Bianchi Neri Monti Cava Seta Lelli Via Magenta Mitelli Cavur Magenta Italia Mitelli Magenta Tel.1 Esempio di inverted file Accesso tramite tabelle Da Bettelli, Dati, relazioni & assoicazioni, Apogeo Prova con Google (1) locazione abuso violazione domicilio ergastolo intrusione estranei Google esegue una operazione in OR di tutti i termini inseriti e la bilancia con un meccanismo a punteggio (PageRank) Il PageRank si basa sul numero di link in arrivo, più link ci sono alla pagina in arrivo più il punteggio è alto perché si suppone che più referenze la pagina ha nella rete, più alta è la sua qualità (questo non è valore sempre valido) Successivamente Google conta le frequenze delle parole ed esamina eventuali metadati abbinati al documento testuale Risultati 80 (data 13/11/2008) Prova con Google (2) locazione +abuso +violazione +domicilio +ergastolo+ intrusione + estranei Uso il + per protegge la parola dal filtro dalla “stop list” Risultati 1 (data 13/11/2008) – solo le pagine che hanno tutti i termini "violazione di domicilio" +locazione +ergastolo +estranei + abuso Uso le “--” per i sintagmi, parole la cui vicinanza e sequenza determina un concetto ben preciso diverso dall’uso degli stessi termini in ordine diverso Risultati 23 (data 13/11/2008) locazione or abuso or violazione or domicilio or ergastolo or intrusione or estranei – Risultati 146 Base di dati In senso lato (giuridico) si intende per base di dati una qualsiasi collezione di dati organizzata seguendo uno schema logico che ne permette il reperimento (possono essere anche documenti cartacei) In senso stretto (informatico) una base di dati o database è l’insieme di archivi memorizzati in modo permanente nella memoria di massa e di relazioni fra di essi Attenzione non sempre le definizioni sono uniformi: banca dati normativa = insieme dei testi normativi + relazioni fra le norme (citazioni) banca dati = contenuto + schema logico dei dati database o base di dati = schema logico dei dati DBMS DBMS - database management system è il programma specifico (software di base) che gestisce ed organizza basi di dati solitamente i DBMS consentono e gestiscono l’aggiornamento e l’accesso dei dati da parte di più utenti contemporaneamente i DBMS contengono i dati le informazioni sulle strutture dei dati ovvero i metadati cataloghi Caratteristiche di un DBMS I DBMS consentono l’indipendenza dei dati dai programmi persistenza - i dati persistono nel tempo non ridondanza dei dati - i dati vengono memorizzati una sola volta sicurezza - meccanismi di accesso autorizzato ai dati integrità - ad ogni dato vengono associati vincoli di integrità e i programmi che non rispettano queste regole vengono “bloccati” utilizzo concorrente - i dati sono acceduti da più programmi contemporaneamente sistemi di backup e recovery dei dati in caso di errore File vs. DBMS Livelli di astrazione del DBMS Livello fisico o schema interno: insieme di record memorizzati nel dispositivo di memoria di massa Livello logico: descrive l’organizzazione dei dati e delle sue relazioni Livello esterno o vista o livello concettuale: descrive i dati così come vengono visti da un certo utente Indipendenza fisica - si può ridefinire il livello fisico senza modificare il modello logico Indipendenza logica - si può estendere il modello logico senza alterare il livello esterno Livelli di un DBMS Livelli di un DBMS Livelli Requisiti della base di dati “CHE COSA”: analisi Progettazione concettuale Schema concettuale Progettazione logica Schema logico “COME”: progettazione Progettazione fisica Schema fisico (da Atzeni e altri, Basi di dati, McGraw-Hill, 2002) Esempio più concreto della divisione dei livelli nella modellazione dei data base Livello concettuale – Modellazione entità relazione dei dati Livello logico – Scelta del modello del DBMS (es. relazionale) e modellazione delle tabelle in terza forma normale sciogliendo anche le relazioni N:M Livello fisico – istruzioni SQL per gestire i dischi Componenti dell’ambiente DBMS - I Hardware da un pc a una rete di computer Software DBMS, sistema operativo, programmi applicativi, software di rete (se necessario) Dati dell’organizzazione e una loro descrizione in schema e sottoschema Procedure istruzioni e regole da applicare al progetto e all’uso del database e dal DBMS Persone Data Base Administrator - DBA Data administrator, programmatori applicativi Progettisti di database (sia logici che fisico) Utenti Componenti dell’ambiente DBMS - II I dati sono il ponte fra i sistemi informativi e i sistemi informatici I dati prodotti dall’attività del sistema informativo vengono gestiti e archiviati nei sistemi informatici Linguaggi di un DBMS Data Definition Language (DDL) Data Manipulation Language (DML) Consente di specificare i tipi di dati, le strutture delle tabelle e i vincoli Strumento di ricerca (query) sui dati Data Control Language (DCL) Strumento controllo degli utenti e dei permessi Vantaggi dei DBMS Controllo della ridondanza Data consistency Più informazione dallo stesso insieme di dati Condivisione di dati Miglioramento della integrità dei dati Miglioramento della sicurezza Potenziamento di standard Economie di scala Punti critici Complessità Ampiezza Costi del software e della conversione Prestazioni Le transazioni - ACID Le transazioni sono operazioni di programma che agiscono sulla banca dati e non alterano la sua integrità (commit e rollback) commit – fine della transazione con esito positivo roll-back – fine della transazione con esito negativo e quindi ritorno allo stato precedente l’inizio della transazione atomicità- l’operazione viene eseguita tutto o si torna indietro ripristinando la situazione originale consistenza - le operazioni non devono violare i vincoli di l’integrità dei dati isolamento - ogni transazione agisce in modo isolato dall’altra per non creare sovrapposizioni durabilità - l’operazione deve avere effetto duraturo nel tempo Modello entità relazione LIVELLO CONCETTUALE Lezione n. 7 Modello entità-relazione Entità Relationship (relazioni o associazioni) Part-of (composizione) Is-a (gerarchica) Associazione funzionale (per un preciso scopo diverso dai precedenti Attributi Entità (da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/) Rappresentazione grafica di entità (da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/) Relazione (da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/) Rappresentazione grafica di relazione (da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/) Nota sulle relazioni - I (da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/) Nota sulle relazioni - II (da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/) Attributi • Proprietà elementare di un’entità o di una relazione, di interesse ai fini dell’applicazione • Un attributo associa ad ogni occorrenza di entità o relazione un valore appartenente a un insieme detto dominio dell’attributo Rappresentazione grafica di attributi (da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/) Modello relazionale LIVELLO LOGICO Lezione n. 7 Modelli di dati Un Modello di dati è un formalismo utilizzato per descrivere la realtà che si intende modellare mediante un DB Modello gerarchico - IBM Modello reticolare - Codasyl (Conference on Data System Language) Modello relazionale - Egdar F. Codd anni 70 Modello a oggetti - anni 80-90 Ogni modello comprende entità, attributi, relazioni fra i dati Modello relazionale Un data base relazionale è un insieme di relazioni Una relazione è una tabella composta da un numero fisso di colonne (attributi) e da un numero variabile di righe (tuple) Ciascuna relazione ha un nome Con le colonne si indicano gli attributi ed ogni attributo a un nome Tutti gli elementi della stessa colonna sono omogenei Ogni tupla deve essere unica all’interno della relazione La relazione è definita come l’insieme delle sue tuple Schema di una relazione=nome relazione+nome degli attributi+dominio di ogni attributo (schema astratto) Istanza di una relazione è uno schema di una relazione in un determinato istante ovvero l’insieme dei valori delle tuple (valori) LIBRO(codice isbn, autore, titolo, casa editrice, città, anno) Elementi del modello relazionale Tabelle o Entità - oggetti della realtà da descrivere e modellare Attributi Associazioni o relazioni uno-a-uno - un cliente ha una sola sede legale uno-a-molti - un cliente ha più sedi operative molti-a-molti - un articolo è contenuto in più ordini e un ordine contiene più articoli Da relazione molti a molti M-N Studenti Insegnamenti Due relazioni uno a molti, mediante un nodo intermedio Studenti Frequenta Insegnamenti La tabella Studenti idStudente nome cognome dataNascita 3456 Mario Rossi 1/1/1985 6342 Lucia Bianchi 1/1/1986 La tabella Insegnamenti IdInsegn CgnDocente Materia Semestre Fd1 Chiari FilDir 1 Pr2 Scuri Privato 2 La tabella Frequenze idStudente idInsegnamento 6342 Fd1 6342 Pr2 3456 Fd1 Le associazioni tra tabelle Studenti Frequenta Corsi idStudente nome cognome dataNascita idStudente idCorsi idCorsi docente Materia semestre Esempio Studenti - Corsi La chiave primaria La chiave primaria di una tabella è il campo i cui valori identificano univocamente ciascun record della tabella Ad esempio, in un database di studenti, il numero di matricola può costituire la chiave primaria La chiave primaria deve essere: Univoca Persistente nel tempo Non dipendere da nessun altro campo Operatori relazionali e Normalizzazione Operazioni relazionali di base Selezione - selezione di tuple o righe Proiezione - selezione di colonne Join - unione di due relazioni attraverso un attributo di collegamento Selezione CLIENTI Righe selezionate in base ad una condizione Codice Nome Indirizzo 100 200 300 400 500 600 700 800 900 1000 1100 Rossi Bianchi Neri Grigi Seta Lucchi …….. ……... ……... …….. ……... via Magenta pz. Matteotti via Tosca vicolo Luretta ………. ……... …….. ……... ……... …….. ……... Citta Roma Roma Roma Roma Roma Bologna Bologna Milano Milano Roma Roma Proiezione CLIENTI Colonne selezionate Codice Nome Indirizzo 100 200 300 400 500 600 700 800 900 1000 1100 Rossi Bianchi Neri Grigi Seta Lucchi …….. ……... ……... …….. ……... via Magenta pz. Matteotti via Tosca vicolo Luretta ………. ……... …….. ……... ……... …….. ……... Citta Roma Roma Roma Roma Roma Bologna Bologna Milano Milano Roma Roma Join CLIENTI Codice Nome 100 200 300 …... Citta Rossi Bianchi Neri Indirizzo via Magenta pz. Matteotti via Tosca …... …... …... Roma Roma Roma SALDI Codice 100 100 100 200 200 Fatturato 400000 600000 700000 300000 250000 Anno 1999 2000 2001 1999 2000 Saldo 50000 60000 20000 30000 50000 Join TABELLA di JOIN Fatturato Codice Nome Indirizzo Citta 100 100 100 200 200 Rossi Rossi Rossi Bianchi Bianchi via Magenta via Magenta via Magenta pz. Matteotti pz. Matteotti Roma Roma Roma Roma Roma 400000 600000 700000 300000 250000 …….. …….. …….. …….. …….. …... …... Il Join Crea una tabella C che riunisce due tabelle A e B pre-esistenti Ogni record della tabella C unisce campi tratti da una tupla di A e da una tupla di B Di regola si tratta delle tuple che hanno il medesimo valore in un certo campo comune: se A contiene i campi α e β e B contiene i campi β e γ, il join naturale conterrà i campi α, β e γ Esempio di Join id Studente nome cognome data Nascita idStudente id Insegnamento 3456 Mario Rossi 1/1/1985 6342 Fd1 6342 Lucia Bianchi 1/1/1986 6342 Pr2 3456 Fd1 id Studente nome cognome data Nascita id Insegnamento 6342 Lucia Bianchi 1/1/1986 Fd1 6342 Lucia Bianchi 1/1/1986 Pr2 3456 Mario Rossi 1/1/1985 Fd1 Le principali operazioni sui dabase relazionali. Project o Proiezione Data una tabella A, produce una tabella B che contiene solo alcune colonne di A Elimina le colonne che non sono rilevanti Project o Proiezione Partiamo dalla Join precedente e selezioniamo solo le colonne che ci interessano id Studente nome cognome dataNascita id Insegnamento 6342 Lucia Bianchi 1/1/1986 Fd1 6342 Lucia Bianchi 1/1/1986 Pr2 3456 Mario Rossi 1/1/1985 Fd1 nome cognome id Insegnamento Lucia Bianchi Fd1 Lucia Bianchi Pr2 Mario Rossi Fd1 Le principali operazioni sui dabase relazionali. Select Data una tabella A, produce una tabella B che contiene solo alcune tuple di A che soddisfano una determinata condizione Select o Selezione Partiamo dalla project precedente e selezioniamo solo le tuple che ci interessano id Studente nome cognome dataNascita id Insegnamento 6342 Lucia Bianchi 1/1/1986 Fd1 6342 Lucia Bianchi 1/1/1986 Pr2 3456 Mario Rossi 1/1/1985 Fd1 nome cognome id Insegnamento Lucia Bianchi Fd1 Lucia Bianchi Pr2 Join ancora nome cognome idInsegna mento IdInsegn amento Cgn Docente Lucia Bianchi Fd1 Fd1 Chiari FilDir Lucia Bianchi Pr2 Pr2 Scuri Mario Rossi Fd1 Materia Semestre 1 Privato 2 nome cognome id Insegnamento Cgn Docente Materia Semestre Lucia Bianchi Fd1 Chiari FilDir 1 Lucia Bianchi Pr2 Scuri Privato 2 Mario Rossi Fd1 Chiari FilDir 1 Select ancora nome cognome idInsegna mento CgnDocente Materia Semestre Lucia Bianchi Fd1 Chiari FilDir 1 Lucia Bianchi Pr2 Scuri Privato 2 Mario Rossi Fd1 Chiari FilDir 1 nome cognome CgnDocente Materia Lucia Bianchi Chiari FilDir Mario Rossi Chiari FilDir Che cosa ho ottenuto? Ho incrociato i dati, ottenendo nuove informazioni, non attingibili (senza sforzi notevoli) dai dati di partenza Il modello relazionale basato su un modello matriciale consente operazioni insiemistiche potenti Le informazioni non sono più lineari (record) ma matriciali (tabella) e gli operatori selezionano avendo a disposizione l’informazione estensionale (contenuto) ed intensionale (concetti) Il DBMS conosce il catalogo delle entità, delle relazioni e delle colonne di ogni entità SQL SQL - structured query language nato negli anni ‘70 - IBM- SEQUEL primo standard riconosciuto dall’ANSI (American National Standards Institute)- 1986 è il linguaggio standard di interrogazione ed aggiornamento accettato dai RDBMS Normalizzazione La normalizzazione è la tecnica con la quale si progetta uno schema logico-concettuale privo di ridondanze, anomalie, inconsistenze La normalizzazione garantisce una manutenzione nel tempo dello schema logico, la sua consistenza, ed evita la degenerazione dovuta all’utilizzo Si possono avere diverse gradi di normalizzazione: i più importanti sono tre Dire che uno schema logico è in terza forma normale significa che ha superato il vaglio di tre regole fondamentali Approfondimento: Modello E-R esempi Approfondimento Lezione n. 7 Due tipi di modelli: concettuale e logico Ora che abbiamo visto i tre principali tipi di modelli di DBMS possiamo comprendere meglio la suddivisione fra il livello concettuale e quello logico nella modellazione dei dati modelli concettuali: permettono di rappresentare i dati in modo indipendente da ogni sistema di DBMS sia esso gerarchico, reticolare o relazionale: cercano di descrivere i concetti del mondo reale sono utilizzati nelle fasi preliminari di progettazione modelli logici: utilizzati nei DBMS esistenti per l’organizzazione dei dati utilizzati dai programmi indipendenti dalle strutture fisiche esempi: relazionale, reticolare, gerarchico, a oggetti il più noto è il modello Entity-Relationship o entità realzione o E-R Livelli di progettazione di basi di dati (da A. Lumini, luminiDB.pdf, [email protected]) Modello gerarchico Il modello gerarchico rappresenta i dati come strutture ad albero gli alberi si dicono occorrenze gerarchiche in un albero si possono identificare almeno due parti: una struttura parent e più strutture child puntatore padre, puntatore figlio, puntatore gemello Azienda Dipendenti Puntatore al figlio Clienti Puntatore al padre Ordini Righe Ordine Articoli Puntatore al gemello ossia all’istanza successiva della stessa entità: es. Rossi punta a Bianchi ed entrambi sono nell’entità clienti Modello gerarchico Da Bettelli, Dati, relazioni & assoicazioni, Apogeo Database gerarchico Radice Padre Figlio Figlio Puntatore di interconnessione Due gerarchie, con uno o più tipi di record, interconnesse Caso di database gerarchico Radice • L’accesso avviene sempre via radice • Per rappresentare una relazione molti-a-molti occorrono due unoa-molti e un segmento addizionale Modello reticolare Il modello reticolare consente più di una struttura padre le associazioni fra record sono realizzate mediante particolari record detti record connettori Riga di ordine 1 RC1 RC3 Riga di bolla RC2 Articoli Modello reticolare • Non ha nessuna radice • Schema e subschema • E’ navigazionale ossia si può accedere ad ogni nodo della rete delle entità Esempio di modello reticolare Da Bettelli, Dati, relazioni & assoicazioni, Apogeo Gli elementi del modello EntitàRelazioni Entità Relationship (relazioni o associazioni) Part-of (composizione) Is-a (gerarchica) Associazione funzionale (per un preciso scopo diverso dai precedenti Attributi Entità (da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/) Rappresentazione grafica di entità (da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/) Relazione (da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/) Rappresentazione grafica di relazione (da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/) Nota sulle relazioni - I (da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/) Nota sulle relazioni - II (da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/) Attributi • Proprietà elementare di un’entità o di una relazione, di interesse ai fini dell’applicazione • Un attributo associa ad ogni occorrenza di entità o relazione un valore appartenente a un insieme detto dominio dell’attributo Rappresentazione grafica di attributi (da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/) Attributi composti (da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/) Rappresentazione grafica di un diagramma E-R (da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/) Cardinalità o Molteplicità Coppia di valori che si associa a ogni entità che partecipa a una relazione che specificano il numero minimo e massimo di occorrenze delle relazione cui ciascuna occorrenza di una entità può partecipare Un impiegato ha da zero a 50 incarichi Un incarico è svolto da 1 fino ad un massimo di 5 impiegati • Si noti la somiglianza con la molteplicità indicate nel diagramma di classe nella rappresentazione UML (da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/) Esempio – Cardinalità di residenza (da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/) Relazioni uno-a-uno (da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/) Relazioni uno-a-molti (da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/) Relazioni molti-a-molti (da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/) Generalizzazione mette in relazione una o più entità E1, E2, ..., En con una entità E, che le comprende come casi particolari padre-figlio, relazione is-a si noti l’analogia con l’ereditarietà del paradigma OO e con la relazione di gerarchia delle classi E è generalizzazione di E1, E2, ..., En E1, E2, ..., En sono specializzazioni (o sottotipi) di E (da Atzeni e altri, Basi di dati, McGraw-Hill, 2002) Rappresentazione grafica Dipendente Impiegato Funzionario QUALIFICA (da Atzeni e altri, Basi di dati, McGraw-Hill, 2002) MATRICOLA COGNOME Dirigente Esercizio (da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/) Soluzione chiave primaria attributo gerarchia Esclusiva Is-a gerarchia non esclusiva esistono altre categorie (da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/) Domande possibili Perché si è passati dagli archivi ai database? Che differenza c’è fra il modello degli archivi e quello del DBMS? Che tipi di archivi possiamo avere? Che cosa sono il livello concettuale, logico, fisico di un DBMS? Quali le caratteristiche del DBMS? Quali modelli di DBMS? Che rapporto esiste fra il modello ER e il diagramma della classi UML? Dove si colloca il modello ER nei livelli di modellazione di un DBMS (concettuale, logico, fisico)? Approfondimento SQL Operazioni di aggiornamento Create table nome-tabella (attributo1 attributo2 Insert INTO nome-tabella values (valori) Delete FROM nome-tabella WHERE condizione Update nome-tabella SET lista attributi da modificare WHERE condizione dominio dominio vincoli) Operazioni di query SELECT nomi colonne FROM nome-tabella WHERE condizione GROUP by condizione ORDER by condizione Selezione SELECT ALL FROM nome-tabella WHERE condizione SELECT ALL FROM Clienti WHERE Clienti.citta=“ROMA” seleziona tutte le tuple della tabella Clienti che soddisfano la condizione citta=“ROMA” ovvero seleziona tutti i clienti romani Proiezione SELECT nome-attributo1, nome-attributo2 FROM nome-tabella SELECT Clienti.nome, Clienti.indirizzo, Clienti.citta FROM Clienti seleziona le colonne nome, indirizzo, citta della tabella Clienti Join SELECT nome-attributo1, nome-attributo2 FROM nome-tabella1, nome-tabella2 WHERE condizione AND condizione di unione sulle chiavi SELECT nome, indirizzo, citta, fatturato, anno FROM Clienti, Saldo WHERE Saldo.fatturato > 1.000.000 AND Clienti.codice = Saldo.codice unisce le tabelle Clienti e Saldo rispetto al campo chiave codice Altre operazioni SELECT …. UNION SELECT …… A B unisce i risultati di due select SELECT …. MINUS SELECT …… A B esegue la differenza fra i risultati di due select SELECT …. INTERSECTION SELECT …… A B esegue l’intersezione fra i risultati di due select Normalizzazione La normalizzazione è la tecnica con la quale si progetta uno schema logico-concettuale privo di ridondanze, anomalie, inconsistenze La normalizzazione garantisce una manutenzione nel tempo dello schema logico, la sua consistenza, ed evita la degenerazione dovuta all’utilizzo Si possono avere diverse gradi di normalizzazione: i più importanti sono tre Dire che uno schema logico è in terza forma normale significa che ha superato il vaglio di tre regole fondamentali Scenario Meccanici aggiustano macchinari nei negozi Un meccanico ha in incarico un solo negozio, ma un negozio è in incarico a più meccanici Un negozio ha un indirizzo e un responsabile Un meccanico ha degli skill ossia delle competenze, più di una, con una gradazione delle stesse Prima forma normale Ogni campo non è decomponibile Vi è un elemento chiave (da Gilleson, Goldberg, Strategic planning, system analysis & database design, Wiley) Seconda forma normale - I Ridurre la ridondanza: nessun campo non-chiave è definito solo da una parte della chiave Ogni attributo dipende da tutta la chiave (da Gilleson, Goldberg, Strategic planning, system analysis & database design, Wiley) Seconda forma normale - II Duplicazioni: MechNo è in (a) e in (c) (da Gilleson, Goldberg, Strategic planning, system analysis & database design, Wiley) Terza forma normale - I Ci sono campi non-chiave definiti in funzione di altri campi non-chiave Non esistono più situazioni in cui un campo non-chiave definisce un altro campo non-chiave Ogni attributo dipende solo dalla chiave (da Gilleson, Goldberg, Strategic planning, system analysis & database design, Wiley) Terza forma normale - II (da Gilleson, Goldberg, Strategic planning, system analysis & database design, Wiley) Soluzione con il diagramma entità-relazioni (da Gilleson, Goldberg, Strategic planning, system analysis & database design, Wiley) Esempio di normalizzazione Una agenzia di viaggi organizza i suoi cataloghi dei viaggi in un database Esempio di normalizzazione Tipo viaggio costo periodo Crociera Grecia 2000 bassa Crociera Grecia 3000 alta Città Spagna 2100 bassa Città Spagna 3300 alta Crociera Caraibi 4000 bassa Crociera Caraibi 5000 alta Mare Italia 1900 bassa Mare Italia 2300 alta Anomalie: Il tipo di viaggio e la destinazione vanno divise perché sono due campi atomici Il campo periodo è ripetuto 2 volte Manca il campo chiave Esempio di normalizzazione – 1NF Key Tipo viaggio 00120 crociera costo periodo destinazio ne 2000 bassa Grecia 3000 alta 2100 bassa 3300 alta 00202 città Spagna 00130 crociera Caraibi 4000 bassa 00303 mare Italia 5000 alta 1900 bassa 2300 alta Esempio di normalizzazione – 2NF Key Tipo viaggio 00120 crociera 00202 città 00130 crociera 00303 mare destinazi one Key cod periodo costo disponibiltà 01 00120 bassa 2000 500 02 00120 alta 3000 540 03 00202 bassa 2100 200 04 00202 alta 3300 300 05 00130 bassa 4000 400 06 00130 alta 5000 200 07 00303 bassa 1900 150 08 00303 alta 2300 200 Grecia Spagna Caraibi Italia Anomalie: gli attributi in giallo non dipendono dalla chiave Esempio di normalizzazione – 3NF Key Tipo viaggio destinazion e 00120 A Grecia 00202 B Spagna 00130 A Caraibi 00303 C Italia Key Key cod periodo costo disponibiltà 01 00120 001 2000 500 02 00120 002 3000 540 03 00202 001 2100 200 04 00202 002 3300 300 05 00130 003 4000 400 06 00130 004 5000 200 07 00303 001 1900 150 08 00303 002 2300 200 Tipo A crociera B città C mare D montagna Key DataInizio DataFine 001 1-10 30-05 002 01-06 30-09 003 01-05 30-10 004 1-11 30-04 Domande possibili Quali sono le operazioni relazionali di base? Cosa è l’SQL Cosa sono la select, project, join Come si implementano mediante l’SQL Modello entità relazione: fare esempi Normalizzazione dei dati e strutturazione di un data base: fare un esempio