Database - mb.unisalento.itmb.unisalento.it/FondInfo13-14/Allegati/24Aprile_Database.pdf · DBMS...

20
24/04/14 1 Database Intro Tipi di entità Mapping ER/EER Relazionale Ing. Lucia Vaira PhD Student @ University of Salento [email protected] Cos’è un database?

Transcript of Database - mb.unisalento.itmb.unisalento.it/FondInfo13-14/Allegati/24Aprile_Database.pdf · DBMS...

24/04/14  

1  

Database Intro Tipi di entità Mapping ER/EER à Relazionale

Ing. Lucia Vaira PhD Student @ University of Salento [email protected]

Cos’è un database?

24/04/14  

2  

�  È 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

Cos’è un database?

�  Es. sistema di gestione di una libreria �  Una prima tabella necessaria al database è sicuramente quella

relativa agli autori dei libri disponibili

�  Abbiamo una tabella i cui campi sono id e autore e abbiamo tre record con tre nomi di autori differenti

Id Autore

1 E. A. Poe

2 J. R. R. Tolkien

3 B. Stocker

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

24/04/14  

3  

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

24/04/14  

4  

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

24/04/14  

5  

Un classico diagramma ER

�  I rettangoli rappresentano un tipo di entità, i rombi un tipo di

relazione

�  Ad entrambi sono associati specifici attributi

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à

24/04/14  

6  

Entità debole Entità deboli

�  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à debole Entità deboli

�  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

SSN Nome Nascita Indirizzo Tipo_lavoro

Persone a carico di

Nome Data_nascita Sesso Parentela

1 N PERSONA A CARICO

Chiave parziale

24/04/14  

7  

Entità debole Entità deboli

�  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

�  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

Impiegato  

N 1 lavora  per  

Dipar8mento  

24/04/14  

8  

Vincolo di partecipazione

�  Es. parziale: la politica di un’azienda stabilisce che per ogni dipartimento ci sia uno e un solo direttore

�  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

Impiegato   Dipar8mento  

dirige  1 1

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

Relazione

24/04/14  

9  

Relazioni ricorsive

�  Una relazione può essere ricorsiva, ovvero una relazione fra un’entità e se stessa

IMPIEGATO

dirige

1

N

dirigente

dipendente

Ruoli di partecipazione

�  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

�  Attributi: ◦  Semplice (es. nome, cognome,…) ◦  Multivalore (es. telefono,…) ◦  Composto (es. indirizzo,…) ◦  Calcolato (es. incasso totale,…)

IMPIEGATO SSN Nome Data_nascita Indirizzo Tipo_lavoro

24/04/14  

10  

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

◦  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

E1 R E2 (m, M) (p, P)

Esempio di cardinalità

�  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

IMPIEGATO assegnazione INCARICO (1, 5) (0,50)

24/04/14  

11  

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)

24/04/14  

12  

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

a1 a2 a3 A

b1 b2 b3 B

24/04/14  

13  

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

�  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

IMPIEGATO

INGEGNERE TECNICO SEGRETARIO

d

C C

24/04/14  

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

�  Si traduce lo schema ER in uno schema relazionale

Mapping ER à 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.

SSN Nome Data_nascita indirizzo Tipo_lavoro

Impiegato

IMPIEGATO SSN Nome Data_nascita Indirizzo Tipo_lavoro

24/04/14  

15  

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

SSN Nome Nascita Indirizzo Tipo_lavoro

Persone a carico di

Nome Data_nascita Sesso Parentela

1 N

SSN Nome Nascita indirizzo Tipo_lavoro

Impiegato

SSN_I Nome Data_nascita Sesso Parentela

Persona a carico

PERSONA A CARICO

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

IMPIEGATO

SSN Nome Nascita Indirizzo Tipo_lavoro

dirige DIPARTIMENTO

Numero Nome Sede

1 1

Impiegato

Numero Nome Sede

Dipartimento

SSN Nome Nascita Indirizzo Tipo_lavoro num_dip

24/04/14  

16  

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

SSN Nome Cognome Indirizzo

dirige FILM

Codice Titolo Anno_prod Genere

1 N

Regista

Film

SSN Nome Cognome Indirizzo

Codice Titolo Anno_prod Genere ID_Reg

24/04/14  

17  

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

IMPIEGATO

SSN Nome Nascita Indirizzo Tipo_lavoro

Lavora su

PROGETTO

Codice Nome Sede

N M

Ore

Impiegato

SSN_I Num_Pro Ore

Lavora su SSN Nome Nascita Indirizzo Tipo_lavoro

Codice Nome Sede

Progetto

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 fornisce PROGETTO

Nome_prog

Quantità

Nome

PARTE Num_parte

Fornitore Parte Nome …

Nome_F Nome_P Num_P Quantità

Fornisce

Nome_prog … Num_parte …

Progetto

N M

P

24/04/14  

18  

Traduzione di specializzazione �  Vi sono 4 possibilità distinte

IMPIEGATO

INGEGNERE TECNICO SEGRETARIO

d

C C

SSN Nome Data_nascita Indirizzo Tipo_lavoro

tipo

grado velocità_dattilografica

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

SSN Nome Data_nascita indirizzo Tipo_lavoro

Impiegato

SSN velocità_dattilografica Segretario

SSN grado Tecnico

SSN tipo Ingegnere

24/04/14  

19  

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

SSN Nome Data_nascita indirizzo Tipo_lavoro

velocità_dattilografica

Segretario

SSN Nome Data_nascita indirizzo Tipo_lavoro

grado

Tecnico

SSN Nome Data_nascita indirizzo Tipo_lavoro

tipo

Ingegnere

Traduzione di specializzazione

3.  Unica tabella impiegato avente oltre ai suoi attributi anche quelli delle entità figlie

In questo modo però potrebbero esserci molti valori pari a NULL! Però c’è solo una tabella à migliori performance

SSN Nome Data_nascita indirizzo Tipo_lavoro grado tipo

velocità_dattilografica

Impiegato

24/04/14  

20  

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

SSN Nome … Flag T grado Flag I tipo

Flag S velocità_dattilografica

Impiegato