24/04/14 Database Intro Tipi di entità Mapping ER/EER à Relazionale Ing. Lucia Vaira PhD Student @ University of Salento [email protected] Cos’è un database? 1 24/04/14 Cos’è un database? È una struttura di dati composta da una serie di matrici chiamate tabelle a loro volta composte da campi Nasce quindi il concetto di record: insieme di dati composto da tutti i campi di una tabella Es. 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 Concetti principali Database: collezione di dati eterogenei ma correlati tra loro Dato: è un fatto che può essere memorizzato e che 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 2 24/04/14 Architettura a tre livelli La progettazione di un database avviene su tre livelli: ◦ Livello concettuale: di alto livello, semantico, non riporta dettagli di livello fisico o implementativo, serve per intendersi con il committente ◦ 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 Architettura a tre livelli Per ogni livello si costruisce un modello che contiene le informazioni da rappresentare e che è rivolto agli attori che partecipano alla progettazione 3 24/04/14 La rappresentazione dei dati Il modello dei dati à schemi concettuali o schemi logici ◦ Modello concettuale: diagrammi ER (Entity/Relationship) Rappresentazione grafica degli oggetti gestiti dal sistema e delle relazioni tra di essi ◦ Modello logico: modello relazionale Rappresentazione dei dati tramite la descrizione della loro organizzazione (che in questo caso è tabellare) Il modello Entità-Relazione Il modello ER è uno dei più diffusi modelli concettuali I costrutti principali del modello ER sono: ◦ Entità ◦ Relazioni ◦ Attributi ◦ Identificatori ◦ Specializzazioni 4 24/04/14 Un classico diagramma ER I rettangoli rappresentano un tipo di entità, i rombi un tipo di relazione Ad entrambi sono associati specifici attributi 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) 5 24/04/14 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 Es: reparto di un negozio, non ha un’esistenza indipendente dal negozio nel quale è contenuto In caso di eliminazione dell’istanza di riferimento, le istanze di entità deboli collegate devono essere eliminate 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 Altro es: 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 6 24/04/14 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 Quando ad essere doppiamente cerchiato non è soltanto il ramo di collegamento ma anche il tipo di relazione e il tipo di entità, si dice che persona a carico è un tipo di entità debole che viene univocamente identificata non in modo assoluto con la chiave primaria, ma in relazione all’appartenenza ad un tipo entità forte, che è detta proprietario del tipo di entità debole. 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 lavora per 1 Dipar8mento 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 7 24/04/14 Vincolo di partecipazione Es. parziale: la politica di un’azienda stabilisce che per ogni dipartimento ci sia uno e un solo direttore Impiegato Dipar8mento 1 1 dirige 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 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 8 24/04/14 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 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,…) ◦ Composto (es. indirizzo,…) ◦ Calcolato (es. incasso totale,…) 9 24/04/14 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 Esempio di cardinalità 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 10 24/04/14 Tipi di cardinalità 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à 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) 11 24/04/14 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 Vincolo di chiave esterna Date due relazioni: ◦ 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 12 24/04/14 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 IMPIEGATO SEGRETARIO TECNICO C C d INGEGNERE 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 13 24/04/14 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 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. IMPIEGATO SSN Nome Data_nascita Indirizzo Tipo_lavoro Impiegato SSN Nome Data_nascita indirizzo Tipo_lavoro 14 24/04/14 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. 1 IMPIEGATO 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 Traduzione di relazioni 1:1 Ci sono tre 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 15 24/04/14 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) Traduzione di relazioni 1:N Vengono inglobate dal lato N e si inserisce come chiave esterna la chiave primaria della relazione dal lato 1 REGISTA 1 N dirige FILM SSN Nome Cognome Indirizzo Codice Titolo Anno_prod Genere Regista SSN Film Codice Nome Cognome Indirizzo Titolo Anno_prod Genere ID_Reg 16 24/04/14 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 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. FORNITORE Quantità N fornisce PROGETTO M Nome Nome_prog P Num_parte PARTE Fornitore Nome … Progetto Parte Nome_prog … Num_parte … Fornisce Nome_F Nome_P Num_P Quantità 17 24/04/14 Traduzione di specializzazione Vi sono 4 possibilità distinte SSN Nome Data_nascita Indirizzo Tipo_lavoro IMPIEGATO SEGRETARIO TECNICO velocità_dattilografica C C d 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 Impiegato SSN Nome Data_nascita indirizzo Tipo_lavoro Segretario SSN velocità_dattilografica Tecnico SSN grado Ingegnere SSN tipo 18 24/04/14 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 19 24/04/14 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 20