Database Cos`è un database?

annuncio pubblicitario
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 
Scarica