Progettazione di Database



Progettazione Concettuale: strutturazione
della “realtà” che si vuole rappresentare
secondo uno schema concettuale
Dallo schema concettuale si ricava lo schema
del database relazionale
Modello concettuale: Entità/Relazione
Il modello entità/relazione
Consiste in una descrizione a diagrammi i cui concetti
base sono:
entità
Classi di oggetti
omogenei
Relazioni
(Associazioni)
Classi di fatti omogenei
che correlano istanze di
entità
attributi
Proprietà di entità o
relazioni
Esempi di modello entità-relazione
utente
autore
prestito
scrittura
libro
libro
studente
corso
esame
Matricola
Cognome
Voto
titoli
Data
Docente
Nome
codice
Relazioni uno-a-molti
Una relazione si dice uno-a-molti se ad ogni istanza
della prima entità corrisponde al più una della seconda,
ma esiste un’istanza della seconda cui corrisponde più
di un’istanza della prima. Anche indicata con (1:n)
massimo
1,1
persona
0,n
Nato a
luogo
minimo
Il minimo = 1 indica a sinistra che la relazione è totale, a destra che è
suriettiva (per ogni valore della seconda entità ne esiste uno della
prima).
Relazioni uno-a-uno
Una relazione è uno-a-uno se ad ogni istanza della
prima entità corrisponde al più un’ istanza della
seconda entità e viceversa. Anche indicata con (1:1)
0,1
uomo
0,1
sposati
donna
Nota. Il minimo = 0 indica a sinistra che la relazione non è
necessariamente totale, ed a destra che non è necessariamente
suriettiva.
Relazioni molti-a-molti
Una relazione si dice molti-a-molti se esiste
un’istanza della prima entità in relazione con più di
un’istanza della seconda, e viceversa. Indicata con
(m:n)
0,n
studente
0,m
esame
corso
Altri esempi
Relazione uno-a-uno
0,1
impiegato
1,1
dirige
biblioteca
Relazioni uno a molti
1,1
libro
0,n
Casa_editrice
edizione
Relazioni molti a molti
0,m
utente
0,n
prestito
libro
Relazioni a più argomenti
data
mittente
Spedizione
destinatario
merce
Attributi delle entità
Qualificazione degli attributi (proprietà delle
entità):
 Tipo (dei valori) degli attributi
 attributi semplici vs composti
 cardinalità (mono/multi-valore)
 attributo identificatore (chiave)
 attributi ereditati
 vincoli su attributi (unique, range)...
Tipi di attributi
Attr. multivalore
Entità
Identificatori
Attr. monovalore
Attr. composti
Attr. 1.
Attr. N.
Esempio
scaffale
N.invent
Collocaz.
ripiano
Casa_ed.
LIBRO
autori
Anno_ed.
titolo
Identificatore esterno

Una entità può anche essere identificata tramite
l’identificatore di una entità esterna.
Ciò è possibile però solo se la relazione che lega le
due entità è una relazione uno-uno o uno-molti
Nome
matricola
media
(n:1)
Corso di Laurea
Nome_Università
iscrizione
Studente
Gerarchie



Speciale tipo di relazione (Sottoclasse di/ sopraclasse
di) che consente una rappresentazione più compatta e
più leggibile dei dati
Casa edit.
Ereditarietà
collocaz
Esempio
Titolo.
pubblicazioni
prezzo
libri
autori
riviste
periodicità
Schema ER -> DB relazionale (1)

Modello concettuale -> Insieme di tabelle

Entità -> Tabella
Attributi -> Campi
Identificatore -> Chiave primaria
• attributi composti -> “appiattiti”
• attributi multi-valore ->Altra tabella
(chiave esterna)
• attributi ereditati ->dipende da come
vengono tradotte le gerarchie


Entità
scaffale
N.invent
Collocaz.
ripiano
Casa_ed.

LIBRO
autori
Anno_ed.
titolo
LIBRO(N_Inv,Titolo, casa_ed, anno_ed, collocazione)
Attributo composto: viene ricondotto
ad un attributo di tipo testuale che congloba
secondo un certo formato i due attributi scaffale
e ripiano
Attributo multivalore
Esempio: Autori
scaffale
N.invent
Collocaz.
ripiano
Casa_ed.
Nome


autore
LIBRO
Anno_ed.
autori
titolo
scritturra
libro
(n:m)
LIBRO (N_Inv,Titolo, casa_ed, anno_ed, collocazione)
AUTORI (Nome, N_Inv)
N_Inv
Identificatore esterno
Nome
matricola
media
(n:1)
Corso di Laurea
iscrizione
Studente
Nome_Università


STUDENTE (Matricola, Nome_Corso, Media)
CORSO_DI_LAUREA (Nome_Corso, Nome_Università)
Eliminazione delle gerarchie



(1) Le entità figlie vengono accorpate
all’entità padre che ne raccoglie tutti gli
attributi, viene introdotto un attributo (flag) per
mantenere la distinzione delle entità figlie
(2) Le entità figlie accorpano l’entità padre e
ne raccolgono gli attributi.
(3) La generalizzazione viene sostituita con
associazioni con vincoli referenziali (Le entita’
sono identificate esternamente)
Gerarchie (1)
N_Invent
Titolo.
autori
libri
Casa edit.
collocaz
pubblicazioni
prezzo
riviste
periodicità
N_Invent
Casa edit.
Titolo.
pubblicazioni
collocaz
prezzo
autori
periodicità
Tiipo_pub
tipo_pub: attributo a valori {libri, pubblicazioni}
Traduzione Relazionale


Pubblicazioni (N_Inv, casa_ed, titolo, coll, prezzo, autori*,
periodicità*,tipo_pub)
L’asterisco è una notazione: serve per evidenziare che
l’attributo può assumere valori NULL (nel caso in cui non sia
applicabile).
Gerarchie (2)
Casa edit.
Titolo.
autori
Titolo.
autori
libri
Casa edit.
collocaz
libri
prezzo
collocaz
pubblicazioni
prezzo
riviste
periodicità
Casa edit.
Titolo.
periodicità
riviste
collocaz
prezzo
Traduzione relazionale


Libri (N_Inv, casa_ed, titolo, coll, prezzo,autore)
Riviste (N_Inv, casa_ed, titolo, coll, prezzo,
periodicità)
– E` preferibile quando la maggior parte delle
ricerche avviene separatamente o sui libri o sulle
riviste, o quando vi sono molti attributi diversi tra
le due sotto-entità.
Gerarchie (3)
Casa edit.
Titolo.
autori
libri
pubblicazioni
periodicità
Casa edit.
Titolo.
autori
libri
pubblicazioni
periodicità
collocaz
prezzo
riviste
collocaz
prezzo
riviste
Schema ER -> DB relazionale (2)


Associazione -> Tabella
– chiavi delle entità partecipanti (chiavi
esterne)
– attributi dell’associazione
Casi particolari (si può evitare la tabella
aggiuntiva) includendo la chiave dell’altra
entità nel caso di
– associazioni uno-a-uno
– associazioni binarie uno-a-molti
Esempio: Associazione molti a molti
VENDITORE
(n:m)
VENDITA
NOME
TELEFONO
SCONTO
DATA
CODICE_PEZZO
PEZZO
NOME_PEZZO
VENDITORE (NOME, TELEFONO)
PEZZO (CODICE_PEZZO, NOME_PEZZO)
VENDITA (CODICE_PEZZO, NOME_VENDITORE, SCONTO,DATA)
Esempio
(1:1)
CLIENTE
NUM_CLIENTE
INDIRIZZO_SPED
spedizione
NOME_CLIENTE
NUM_CLIENTE
INDIRIZZO_SPED
SPEDIZ_CLIENTE (NUM_CLIENTE, NOME_CLIENTE, INDIRIZZO_SPED)
Esempio
Relazioni separate:
un’entità (cliente) ha partecipazione parziale
alla relazione
(1:1)
CLIENTE
CARTA_CREDITO
POSSIEDE
LIMITE_
CREDITO
NUM_CLIENTE
NOME_CLIENTE
TIPO_CARTA
NUM_CARTA
CLIENTE (NUM_CLIENTE,NOME_CLIENTE)
CARTA_CREDITO (TIPO_CARTA, NUM_CARTA, LIMITE_CREDITO)
POSSIEDE_CARTA (TIPO_CARTA,NUM_CARTA,NUM_CLIENTE)
Esempio: relazione 1 a molti
CITTA`
NOME_CITTA`
POPOLAZIONE
1
APPARTIENE_
(1:n)
n
STATO
NOME_STATO
GOVERNATORE
POPOLAZIONE
CITTA` (NOME CITTA`, POPOLAZIONE, NOME STATO )
STATO (NOME STATO, GOVERNATORE, POPOLAZIONE)
Esempio: relazione ternaria
CODICE_PRODOTTO
NOME
DESCRIZIONE
PRODOTTO
COD_COMP
COMPONENTE
FORNISCE
QUANTITA`
DESCRIZIONE
FORNITORE
CODICE_FORNITORE
NOME
INDIRIZZO
TELEFONO
COMPONENTE (COD_COMP, DESCRIZIONE)
PRODOTTO (CODICE_PRODOTTO, NOME, DESCRIZIONE)
FORNITORE (CODICE_FORNITORE, NOME, INDIRIZZO, TELEFONO)
FORNISCE (CODICE_PRODOTTO, CODICE_COMPONENTE, CODICE_FORNITORE, QUANTITA`)
Esempio: relazione ricorsiva
NOME
1
IMPIEGATO
E`_SUBORDINATO_A
DATA_DI_NASCITA
n
E`_IL_SUPERIORE_DI
CAPO_
DI
Relazione molti a molti:
IMPIEGATO(NOME, DATA_DI_NASCITA)
CAPO_DI(NOME_CAPO, NOME_SUBORDINATO)
Relazione 1 a molti:
IMPIEGATO(NOME, DATA_DI_NASCITA)
CAPO_DI(NOME_SUBORDINATO, NOME_CAPO)
o
IMPIEGATO(NOME, DATA_DI_NASCITA, NOME_CAPO)
Database di un Museo




Il museo contiene tre tipi di oggetti: reperti archeologici,
materiale etnografico e opere d’arte (quadri, sculture)
Conseguentemente, il museo ha tre sezioni:
Archeologica, Etnografica, Collezione (di opere) d’arte
Di tutti i pezzi del museo si vogliono mantenere le
informazioni: numero di inventario, provenienza
datazione, descrizione, misure, se ha subito restauri o
no, sala ed eventualmente collocazione (scaffale,
etc…)
Se un oggetto ha subito restauri, si vuole mantenere
l’informazione riguardo presso quale centro è stato
restaurato e quando





Le opere d’arte hanno associata l’informazione sugli
autori
Per i reperti archeologici si vuole mantenere
l’informazione sulla data del ritrovamento
Gli oggetti della sezione etnografica sono divisi in tre
tipologie: costumi, mobili, suppellettili
Ogni sezione comprende alcune sale. Le sale
possono essere condivise da sezioni diverse e
l’attribuzione di una sala ad una sezione puo’
cambiare nel tempo. Alle sale è associata altra
informazione (che non verrà condiderata
nell’esempio)
Le sezioni hanno un impiegato responsabile
data
originale
0,n
1,n
restaurato
Restaurato da
Centro di
restauro
nome indirizzo
N.inv
provenienza
data
descrizione
misure
Collocazione AltreI identificatore
1,1
1,n
Oggetto
Sta in
sala
1,n
Etnografico
Reperto
Opera
1,1
Eseguito da
nome
comprende
1,n
nome
data n/m
Tipologia data_rit
nato a
0,n
Autore
responsabile
Sezione
Eliminazione delle gerarchie


Originale/restaurato --> soluzione (1)
Reperto/etnografico/opera --> soluzione (1)
data
0,n
0,n
Restaurato da
tipo
N.inv
provenienza
data
descrizione
misure
Stato restauro
Centro di
restauro
nome indirizzo
Collocazione AltreI identificatore
1,1
1,n
Oggetto
Sta in
sala
0,1
1,n
data_rit
M.E.Tipologia
nome
data n/m
nato a
comprende
Eseguito da
nome
1,n
0,n
Sezione
Autore
responsabile
Entità





Oggetto(N_inv, Provenienza, Data, Misure,
Tipo, Descrizione, StatoRestauro,
ME_Tipologia*, Data_rit*)
CentroRestauro(Nome,Indirizzo)
Sezione(Nome, Responsabile)
Autore(Nome,DataN/M, Luogo)
Sala(Identificatore, AltreI)
Relazioni




Restaurato_da(Oggetto,Centro,Data)
Eseguito_da(Opera, Nome)
Sta_in(Oggetto, Sala, Collocazione*)
Comprende(NomeSezione,NomeSala)
Eliminazione della relazione (1:n)
Sta_in:

si aggiungono gli attributi:, Sala,Collocazione*
ad Oggetto, che diventa

Oggetto(N_inv, Provenienza, Data, Misure,
Tipo, Descrizione, StatoRestauro,
ME_Tipologia*, Data_rit*, Sala,
Collocazione*)
Schema finale DB
CentroRestauro(Nome,Indirizzo)
Sezione(Nome, Responsabile)
Autore(Nome, DataN/M, Luogo)
Sala(Identificatore, AltreI)
Oggetto(N_inv, Provenienza, Data, Misure, Tipo, Descrizione,
StatoRestauro, ME_Tipologia*, Data_rit*, Sala, Collocazione*)
Restaurato_da(Oggetto,Centro,Data)
Eseguito_da(Opera, Nome)
Comprende(NomeSezione, NomeSala)
Vincoli di integrità referenziale: attributi delle stesso colore
Domini e vincoli



Vincoli di Dominio:
– Tipo: {Reperto,Etnografico,Opera}
– ME_tipologia: {Costumi,Mobili,Suppellettili}
Vincoli di tupla:
– Data_rit=NULL OR Tipo=Reperto
– ME_tipologia=NULL OR Tipo=Etnografico
Altri vincoli: se la chiave di un oggetto compare
nella relazione Restaurato StatoRestauro deve
essere YES
Scarica

LEZ12database