Database - mb.unisalento.itmb.unisalento.it/FondInfo13-14/Allegati/24Aprile_Database.pdf · DBMS...
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