06/05/15 Database Intro Concetti principali Mapping ER/EER à Relazionale Ing. Lucia Vaira [email protected] Cos’è un database? 1 06/05/15 Cos’è un database? Cos’è un database? 2 06/05/15 Cos’è un database? È una struttura di dati composta da una serie di tabelle a loro volta composte da campi Record: insieme di dati composto da tutti i campi di una data tabella Cos’è un database? Tabelle e campi Esempio: sistema di gestione di una libreria Una prima tabella necessaria al database è sicuramente quella relativa agli autori dei libri disponibili Id Autore 1 E. A. Poe 2 J. R. R. Tolkien 3 B. Stocker Abbiamo una tabella i cui campi sono id e autore e abbiamo tre record con tre nomi di autori differenti identificati da un codice univoco (Id) 3 06/05/15 Concetti principali Database: collezione di dati eterogenei ma correlati tra loro Dato: è un fatto che può essere memorizzato, può essere di diversi tipi ed ha un significato implicito per qualcuno Minimondo: parte del mondo reale in cui è contestualizzato il dato DBMS (DataBase Management System) è un software che supporta la creazione e la gestione dei database ◦ Microsoft Access ◦ Microsoft SQL Server ◦ MySQL ◦ Oracle Progettazione database La progettazione di un database avviene su tre livelli: ◦ Livello concettuale: di alto livello, non riporta dettagli di livello fisico o implementativo, serve per intendersi con il committente. Non specifica come gli oggetti del DB devono essere tra loro in relazione ma cosa deve essere posto in relazione ◦ Livello logico: rappresentazione che considera i dettagli tecnici relativi al modo in cui i dati sono memorizzati ◦ Livello fisico: fornisce concetti che possono essere compresi dagli utenti finali ma che sono troppo lontani dal modo in cui i dati sono organizzati nel database 4 06/05/15 Progettazione database Per ogni livello si costruisce un modello che contiene le informazioni da rappresentare e che è rivolto agli attori che partecipano alla progettazione Progettazione database 1. Progettazione concettuale 2. Progettazione logica 3. Progettazione fisica 1 2 Requisiti Schema concettuale Insieme delle specifiche decise col committente Rappresentazione grafica degli oggetti gestiti dal sistema e delle relazioni tra di essi 3 Schema logico Rappresentazione dei dati tramite la descrizione della loro organizzazione (che in questo caso è tabellare) Schema fisico Implementazione del database 5 06/05/15 Progettazione database Il modello Entità-Relazione Il modello ER è uno dei più diffusi modelli concettuali Peter Chen (1977) propose la tecnica ER e la notazione grafica (ERD) Costrutti principali: ◦ ◦ ◦ ◦ ◦ Entità Relazioni Attributi Identificatori Specializzazioni 6 06/05/15 Un classico diagramma ER I rettangoli rappresentano un tipo di entità, i rombi un tipo di relazione Ad entrambi sono associati specifici attributi Convenzioni sui diagrammi ER Nomi per tipi di entità (es. Persona, Automobile, …) Verbi per tipi di relazioni (es. lavora per, guidata da) Lettura dello schema dall’alto verso il basso e da sinistra a destra Utilità del modello ER È molto più espressivo di uno schema relazionale e può essere impiegato per compiti diversi dalla progettazione: ◦ documentazione: la simbologia grafica del modello ER può essere facilmente compresa anche dai non “addetti ai lavori” ◦ reverse engineering: a partire da un DB esistente si può fornirne una descrizione in termini ER allo scopo di migliorare l’analisi del contesto applicativo ed eventualmente procedere a un’operazione di riprogettazione ◦ integrazione di sistemi: essendo indipendente dal modello logico dei dati, è possibile usare l’ER come “linguaggio comune” in cui rappresentare DB eterogenei per costruire un DB integrato 7 06/05/15 Entità Entità Classe di oggetti (reali o concettuali) che hanno proprietà comuni ed esistenza autonoma ◦ Es. Studente, Docente, Corso, Facoltà,… Istanza di un’entità: oggetto contenuto nel tipo di entità ◦ Es. Facoltà di Ingegneria Ogni entità ha un nome e un attributo che la identifica univocamente nello schema concettuale ◦ Uso di nomi significativi ed espressivi ◦ Rispetto di alcune convenzioni (es. usare il singolare) Entità deboli Entità debole Sono tipi di entità che non hanno propri attributi chiave Un’entità debole è tale perché la sua esistenza dipende da un’altra entità, si tratta cioè di entità che contengono istanze la cui presenza nel sistema è accettata solo se sono presenti determinate istanze di entità da cui queste dipendono Esempio: il reparto di un negozio non ha un’esistenza indipendente dal negozio nel quale è contenuto 8 06/05/15 Entità deboli Entità debole Un tipo di entità debole ha sempre un vincolo di partecipazione totale (dipendenza di esistenza) relativo alla sua relazione identificante, perché essa non può essere identificata senza un’entità proprietaria Esempio: familiari a carico di un impiegato IMPIEGATO 1 Persone a carico di N SSN Nome Nascita Indirizzo Tipo_lavoro PERSONA A CARICO Nome Data_nascita Sesso Parentela Chiave parziale Entità deboli Entità debole Chiave parziale: non si tratta di una chiave primaria di un tipo di entità forte, ma di un attributo usato come distintivo all’interno della classe di appartenenza à dovrà esserci unicità all’interno della classe di appartenenza, al di fuori invece, può esserci anche ridondanza In caso di eliminazione dell’istanza di riferimento, le istanze di entità deboli collegate devono essere eliminate 9 06/05/15 Entità deboli TRENO (1, N) Entità debole composto da (1,1) VAGONE (1,N) contiene (1,1) POSTO (1,1) contenente (1,N) SCOMPARTIMENTO Se un treno viene privato dell’ultimo vagone, tutte le entità collegate (scompartimenti e posti contenuti) devono essere cancellate Entità deboli Entità debole Quando ad essere doppiamente segnato non è soltanto il ramo di collegamento ma anche il tipo di relazione e il tipo di entità (es. persona a carico) si dice l’entità debole è univocamente identificata in relazione all’appartenenza ad un tipo entità forte, che è detta proprietario del tipo di entità debole. IMPIEGATO SSN Nome Nascita Indirizzo Tipo_lavoro 1 Persone a carico di N PERSONA A CARICO Nome Data_nascita Sesso Parentela 10 06/05/15 Vincolo di partecipazione Specifica se l’esistenza di un’entità dipende dal suo essere correlata a un’altra entità attraverso una relazione Può essere parziale o totale Es. totale: la politica di un’azienda stabilisce che ogni impiegato deve lavorare per un dipartimento N IMPIEGATO 1 lavora per DIPARTIMENTO L’entità “impiegato” può esistere solo se partecipa a un’istanza di relazione “lavora per” à la partecipazione dell’impiegato alla relazione “lavora per” è detta partecipazione totale Vincolo di partecipazione Es. parziale: la politica di un’azienda stabilisce che per ogni dipartimento ci sia uno e un solo direttore 1 IMPIEGATO 1 dirige DIPARTIMENTO La partecipazione dell’entità “impiegato” al tipo di relazione “dirige” è parziale, nel senso che alcune tuple dell’entità “impiegato” sono correlate a un’entità “dipartimento” attraverso la relazione “dirige”, ma non tutte 11 06/05/15 Relazione Relazione Legame logico fra due o più entità con uno specifico significato Grado della relazione: numero dei tipi di entità che vi partecipano (relazioni binarie, ternarie, quaternarie,…) Istanza di relazione: n-upla di istanze di entità, una per ciascuna entità coinvolta. La coppia (Mario Rossi, Basi di Dati) è un’istanza della relazione Esame se: Mario Rossi è un’istanza dell’entità Studente Basi di Dati è un’istanza dell’entità Corso Relazioni ricorsive Una relazione può essere ricorsiva, ovvero una relazione fra un’entità e se stessa Ruoli di partecipazione dipendente dirige N IMPIEGATO 1 dirigente Se la relazione non è simmetrica, occorre definire i due ruoli dell’entità Il nome di ruolo indica il ruolo che un’entità partecipante facente parte del tipo di entità, recita in ciascuna istanza della relazione e aiuta a spiegare cosa indica quella relazione 12 06/05/15 Relazioni ricorsive Altri esempi 1:1 confinata confina 0:N REGIONE 0:N Figlia di 0:N DONNA confinante PERSONA Sposata con 0:1 Il nome di ruolo non è sempre necessario 1:1 Attributi Descrivono proprietà elementari di entità e relazioni Ogni attributo associa a ciascuna istanza un valore appartenente al dominio dell’attributo IMPIEGATO SSN Nome Data_nascita Indirizzo Tipo_lavoro Attributi: ◦ Semplice (es. nome, cognome,…) ◦ Multivalore (es. telefono, colore_auto…) ◦ Composto (es. indirizzo,…) ◦ Calcolato (es. incasso_totale, età…) 13 06/05/15 Attributi Gli attributi composti possono formare una gerarchia: L’utilizzo di un attributo semplice o di uno composto dipende dalla necessità o meno di trattare separatamente le sottoparti Cardinalità delle relazioni Per ogni partecipazione di un’entità ad una relazione si specificano il numero minimo e il massimo cui un’istanza dell’entità può partecipare Rappresenta un vincolo E1 (m, M) R (p, P) E2 ◦ Ogni istanza di E1 partecipa ad almeno m e al più a M istanze di R ◦ Ogni istanza di E2 partecipa ad almeno p e al più P istanze di R 14 06/05/15 Cardinalità delle relazioni - Esempio IMPIEGATO (1, 5) (0,50) assegnazione INCARICO Ad ogni impiegato è assegnato almeno 1 incarico Ogni impiegato ha al più 5 incarichi Un incarico può anche non essere ricoperto Ad un incarico possono essere assegnati al massimo 50 impiegati Cardinalità delle relazioni - Tipi Cardinalità minima ◦ 0 – la partecipazione alla relazione è opzionale (parziale) ◦ 1 – la partecipazione alla relazione è obbligatoria (totale) Cardinalità massima ◦ 1 – rappresenta una funzione che associa una sola istanza dell’altra entità ◦ N – rappresenta un’associazione con un numero arbitrario di istanze dell’altra entità 15 06/05/15 Cardinalità delle relazioni notazione alternativa 1:1 à (0,1) : (1,1) 1:N à (1,1) : (0,N) N:1 à (0,N) : (1,1) N:M à (1,N) : (0,M) Cardinalità delle relazioni - Esempi PERSONA TURISTA (0, N) (1, N) possiede prenota (0, 1) (0, N) AUTO VIAGGIO 16 06/05/15 Cardinalità delle relazioni - Esempi PERSONA LIBRO (1, 1) (1, M) risiede Scritto da (0, N) (1, N) CITTA AUTORE Identificatori delle entità Permettono di identificare in modo univoco le istanze di entità Identificatore interno (chiave primaria) Si tratta di una chiave su cui sono vietati i valori nulli Si può utilizzare un attributo dell’entità come chiave primaria o essa può essere generata in modo automatico all’atto dell’inserimento (es. codice progressivo) Ogni entità deve avere almeno un identificatore AUTOMOBILE Targa Colore Modello …. Una relazione non possiede l’identificatore !!! Relazio ne ID attr1 attr2 17 06/05/15 Concetto di chiave Il concetto di CHIAVE serve per distinguere le entità e le relazioni Un insieme di attributi che consentono di identificare univocamente un’entità costituiscono una SUPERCHIAVE ◦ es. il Codice Fiscale permette di individuare univocamente un cliente perché è unico per ogni persona à il Codice Fiscale è una superchiave ◦ anche la coppia {Codice Fiscale, indirizzo} rappresenta una superchiave Concetto di chiave Un sotto-insieme della superchiave che è ancora superchiave ma tale che nessun altro sotto-insieme proprio è superchiave costituisce la CHIAVE CANDIDATA. Si tratta di un sottoinsieme “minimo” di attributi che individuano l’entità. ◦ Codice Fiscale, oltre che superchiave, è anche chiave candidata ◦ la coppia Codice Fiscale, Indirizzo non è chiave candidata, poiché il sottoinsieme proprio Codice Fiscale è superchiave La CHIAVE PRIMARIA è la chiave candidata scelta dal progettista del DB per identificare univocamente le entità 18 06/05/15 Concetto di chiave Attenzione! è uguale se i precedenti 15 caratteri sono uguali, cioè per soggetti con nomi identici nella codifica, nati nello stesso giorno mese e anno, nella stessa città e dello stesso sesso! Concetto di chiave Attenzione! Es. Lucio Marano e Luca Moreno, nati a Roma il 1º gennaio 2000 forniscono sempre la stessa combinazione di caratteri: MRN LCU 00A01 H501 Per entrambi il codice fiscale sarebbe "MRN LCU 00A01 H501 J". 19 06/05/15 Concetto di chiave Il concetto di CHIAVE serve per distinguere le entità e le relazioni Un insieme di attributi che consentono di identificare univocamente un’entità costituiscono una SUPERCHIAVE ◦ es. il Codice Fiscale permette di individuare univocamente un cliente perché è unico per ogni persona à il Codice Fiscale è una superchiave ◦ anche la coppia {Codice Fiscale, indirizzo} rappresenta una superchiave Vincolo di chiave esterna Date due tabelle: ◦ A con chiave primaria a1 ◦ B con chiave primaria b1 Il vincolo di integrità referenziale b3 ad a1 indica che b3 può assumere solo valori compresi nel dominio degli elementi di a1 A a1 B a2 a3 b1 b2 b3 20 06/05/15 Vincolo di chiave esterna Più in generale, il vincolo di integrità referenziale è specificato tra due relazioni ed è usato per mantenere la consistenza fra tuple delle due relazioni Informalmente il vincolo di integrità referenziale stabilisce che una tupla in una relazione cha fa riferimento a un’altra relazione deve far riferimento a una tupla esistente in quella relazione Specializzazione Le sotto-entità ereditano dall’entità genitore i suoi attributi e le sue relazioni Le sotto-entità possono definire nuovi attributi e nuove relazioni non presenti nell’entità genitore. 21 06/05/15 Specializzazione d: disjoint, vincolo di specializzazione, o l’una o l’altra o: overlapping (sovrapposizione), l’una e/o l’altra C: simbolo di inclusione che rappresenta il fatto che l’entità sottostante è inclusa in quella sovrastante e quindi oltre a possedere i suoi attributi, eredita anche quelli dell’entità sovrastante Specializzazione Un frutto può essere: ◦ Banana ◦ Mela ◦ Pera ◦ …Nessuno dei tre…. à partial disjoint 22 06/05/15 Specializzazione Il vino può essere: ◦ Rosso ◦ Bianco ◦ Rosato E non può essere altro (considerando solo il colore!) à total disjoint Specializzazione Un chip può essere una cache, un registro, un’unità di elaborazione E può essere anche più di una cosa insieme à total overlapping 23 06/05/15 Specializzazione PERSONA DOTTORE PAZIENTE Specializzazione PERSONA O PAZIENTE DOTTORE Una persona può essere: ◦ Un dottore ◦ Un paziente ◦ Un dottore e un paziente al tempo stesso à partial overlapping 24 06/05/15 Specializzazione - Esempio Descrivere lo schema concettuale corrispondente alle seguenti specifiche: Le persone hanno un Codice Fiscale, un Cognome, un Nome e una Data di Nascita. Gli uomini hanno anche la posizione militare e le donne anche il numero di maternità Gli impiegati hanno lo stipendio I liberi professionisti hanno Partita IVA Stipendio O PERSONA d IMPIEGATO CodiceFiscale Cognome Nome DataNascita PROFESSIONISTA PIVA UOMO Militare DONNA Maternita Il modello relazionale Adottato dalla maggior parte dei DBMS in commercio Definisce come sono organizzati i dati e non come sono poi memorizzati e gestiti dal sistema informatico Mapping ER à Relazionale Si traduce lo schema ER in uno schema relazionale 25 06/05/15 Traduzione di tipi di entità I tipi di entità si trasformano in una relazione (tabella) che contiene come colonne tutti gli attributi semplici del tipo di entità e come chiave primaria una delle chiavi candidate. SSN Nome DataNascita Indirizzo (città, via, civico) TipoLavoro IMPIEGATO Impiegato SSN Nome DataNascita città via civico TipoLavoro Traduzione di tipi di entità debole Per ogni tipo di entità debole si costruisce una tabella avente gli attributi dell’entità debole e quelli della relazione di possesso. La chiave primaria sarà la combinazione della chiave parziale del tipo di entità debole e la chiave primaria del tipo di entità proprietario. IMPIEGATO 1 N Persone a carico di PERSONA A CARICO SSN Nome Nascita Indirizzo Tipo_lavoro Nome Data_nascita Sesso Parentela Impiegato SSN Nome Nascita indirizzo Tipo_lavoro Persona a carico SSN_I Nome Data_nascita Sesso Parentela 26 06/05/15 Traduzione di relazioni 1:1 Ci sono 3 possibili approcci: 1. Approccio basato su chiavi esterne: si sceglie una delle due relazioni (quella con partecipazione totale) e si mette la chiave esterna di una nell’altra 1 IMPIEGATO dirige 1 DIPARTIMENTO SSN Nome Nascita Indirizzo Tipo_lavoro Numero Nome Sede Impiegato SSN Nome Nascita Indirizzo Tipo_lavoro num_dip Dipartimento Numero Nome Sede Traduzione di relazioni 1:1 2. Approccio basato sull’unica relazione fusione: si fondono due tipi di entità e la relazione in una sola relazione (quando entrambe le partecipazioni sono totali) 3. Approccio basato su relazione associazione: si crea una relazione che contiene sia la chiave esterna della relazione di dx sia quella della relazione di sx (quando ci sono poche istanze della relazione 1:1 perché la partecipazione non è totale né a dx né a sx) 27 06/05/15 Traduzione di relazioni 1:N Vengono inglobate dal lato N e si inserisce come chiave esterna la chiave primaria della relazione dal lato 1 1 REGISTA N dirige FILM SSN Nome Cognome Indirizzo Codice Titolo Anno_prod Genere Regista SSN Nome Film Codice Cognome Indirizzo Titolo Anno_prod Genere ID_Reg Traduzione di relazioni N:M Si costruisce una relazione avente come chiavi esterne le chiavi primarie delle relazioni che rappresentano i tipi di entità partecipanti N IMPIEGATO M Lavora su SSN Nome Nascita Indirizzo Tipo_lavoro PROGETTO Ore Codice Nome Sede Impiegato SSN Nome Nascita Indirizzo Tipo_lavoro Lavora su SSN_I Num_Pro Ore Progetto Codice Nome Sede 28 06/05/15 Traduzione di relazioni ternarie Si costruisce una nuova relazione avente come chiave esterna le chiavi primarie delle relazioni che rappresentano i tipi di entità partecipanti. Quantità N FORNITORE fornisce PROGETTO M Nome Nome_prog P Num_parte PARTE Fornitore Progetto Nome … Parte Nome_prog … Num_parte … Fornisce Nome_F Nome_P Num_P Quantità Traduzione di relazioni ricorsive Vi sono diverse soluzioni, a seconda della cardinalità massima delle relazioni supervisore supervi sione 1 N IMPIEGATO subordinato SSN Nome Impiegato SSN Nome idSupervisore 29 06/05/15 Traduzione di specializzazione 4 possibilità distinte SSN Nome Data_nascita Indirizzo Tipo_lavoro IMPIEGATO d SEGRETARIO TECNICO velocità_dattilografica INGEGNERE tipo grado Traduzione di specializzazione 1. L’informazione è divisa in 4 tabelle e come chiave primaria delle tabelle relative alla specializzazione c’è la chiave primaria di impiegato se rclas supeImpiegato SSN Nome Data_nascita indirizzo Tipo_lavoro e e e class class class sottoIngegnere sotto Segretario sotto Tecnico SSN tipo SSN grado SSN velocità_dattilografica 30 06/05/15 Traduzione di specializzazione 2. L’informazione è divisa in 3 tabelle aventi come chiave primaria quella di impiegato e come attributi sia i propri sia quelli di impiegato Segretario SSN Nome Data_nascita indirizzo Tipo_lavoro Data_nascita indirizzo Tipo_lavoro Data_nascita indirizzo Tipo_lavoro velocità_dattilografica Tecnico SSN Nome grado Ingegnere SSN Nome tipo Traduzione di specializzazione 3. Unica tabella impiegato avente oltre ai suoi attributi anche quelli delle entità figlie Impiegato SSN Nome Data_nascita indirizzo Tipo_lavoro grado tipo velocità_dattilografica In questo modo però potrebbero esserci molti valori pari a NULL! Però c’è solo una tabella à migliori performance 31 06/05/15 Traduzione di specializzazione 4. Unica tabella impiegato avente oltre ai suoi attributi anche quelli delle entità figlie e un flag che specifica il tipo di sottoclasse a cui si riferisce Impiegato SSN Nome … Flag T grado Flag I tipo Flag S velocità_dattilografica Documentazione di progetto di una base di dati Il documento di progetto di una base di dati contiene: ◦ ◦ ◦ ◦ La definizione del dominio (descrizione del contesto) I requisiti (cosa si vuole realizzare) Diagramma ER + modello relazionale Dizionario dei dati (spesso prodotto automaticamente dal DBMS) che descrive per ogni entità e relazione: Nome Tipo NULL or NOT NULL Predefinito Stima Commenti ◦ Query significative à next time: SQL 32