Post on 03-May-2015
transcript
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
DB Prenotazioni ad Alberghi Il database deve rappresentare le prenotazioni fatte da clienti ad
un albergo. Si vogliono mantenere informazioni sui clienti, sugli alberghi e
sulle prenotazioni. Dei clienti si vogliono mantenere dati identificativi. Gli alberghi possono essere Hotel o Agriturismi. In entrambe i
casi si vogliono mantenere dati identificativi degli alberghi, il numero di camere (divise in singole, doppie, triple), e in quali periodi dell'anno e' aperto l'albergo.
Nel caso degli alberghi si vuole memorizzare la categoria. Nel caso degli agriturismi si vogliono memorizzare i servizi offerti (come gli sport praticabili).
Delle prenotazioni si vogliono mantenere le informazioni riguardo a chi l'ha fatta e per quale albergo, la data di arrivo e quella presunta di partenza (o il numero presunto dei giorni prenotati), quale tipo di stanza un cliente ha prenotato. Ogni cliente puo' prenotare piu' stanze nello stesso periodo.
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
Il modello entità/relazione
Consiste in una descrizione a diagrammi i cui concetti base sono:
entità
Relazioni(Associazioni)
attributi
Classi di oggetti omogenei
Classi di fatti omogenei che correlano entità
Proprietà di entità o associazioni
autore
libro
scrittura
utente
libro
prestito
Esempi di modello entità-relazione
studente esame corso
Nome
Cognome
Matricola
codice
Docente
titoloVoto
Data
Relazioni uno-a-moltiUna 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)
0,n1,1persona Nato a luogo
minimo
massimo
• Il minimo = 1 indica a sinistra che l' associazione è totale: ad ogni valore della prima entità ne corrisponde uno della seconda.
•Il minimo 1 a destra indica che l'associazione è suriettiva (per ogni valore della seconda entità ne esiste uno della prima).
Relazioni uno-a-uno
0,1 0,1uomo sposati donna
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)
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,m 0,nstudente esame corso
Altri esempi
Relazione uno-a-uno
impiegato bibliotecadirige
0,1 1,1
libro Casa_editriceedizione
1,1
Relazioni uno a molti
0,n
utente prestito libro
Relazioni molti a molti
0,m 0,n
Relazioni a più argomenti
mittente Spedizione merce
destinatarioData
Attributi delle entità
Qualificazione degli attributi (proprietà delle entità):
Tipo (dei valori) degli attributi attributi semplici/composti cardinalità (mono/multi-valore) attributo identificatore (chiave) attributi ereditati nelle gerarchie
Tipi di attributi
Entità
Identificatori
Attr. multivalore
Attr. monovalore
Attr. composti
Attr. 1. Attr. N.
Esempio
LIBRO
N.invent
Anno_ed.
titoloautoriCasa_ed.
Collocaz.
scaffale
ripiano
Gerarchie
Speciale tipo di relazione (Sottoclasse di/ sopraclasse
di) che consente una rappresentazione più compatta e più naturale dei dati
Ereditarietà
pubblicazioni
libri riviste
collocaz
prezzo
periodicitàautori
Casa edit.
Titolo.
Schema ER -> DB relazionale (1)
Modello concettuale -> Insieme di tabelle
Entità -> Relazione Attributi -> Attributi della relazione Identificatore -> Chiave primaria
• attributi composti -> “appiattiti”• attributi multi-valore -> Altra relazione • attributi ereditati -> dipende da come
vengono tradotte le gerarchie
Entità
LIBRO(N_Inv,Titolo, casa_ed, anno_ed, collocazione)
Attributo composto: viene ricondottoad un attributo di tipo testuale che congloba secondo un certo formato i due attributi scaffale e ripiano
LIBRO
N.invent
Anno_ed.
titoloautoriCasa_ed.
Collocaz.
ripiano
scaffale
Attributo multivalore
LIBRO (N_Inv,Titolo, casa_ed, anno_ed, collocazione) SCRITTURA (Nome, N_Inv) AUTORE(Nome,ALtreINfo)
LIBRO
N.invent
Anno_ed.
titoloautoriCasa_ed.
Collocaz.ripiano
scaffale Esempio: Autori
nome autore scritturra LIBRO
(n:m)
N.invent
gli altri attr
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)
Vediamo solo le prime due
Gerarchie (1)
tipo_pub: attributo a valori {libri, riviste}
pubblicazioni
libri riviste
collocaz
prezzo
periodicitàautore
Casa edit.
Titolo.
N_Invent
pubblicazionicollocaz
prezzo
periodicità
autore
Casa edit.
Titolo.
Tipo_pub
N_Invent
Traduzione Relazionale
Pubblicazioni (N_Inv, casa_ed, titolo, coll, prezzo, autore*, periodicità*,tipo_pub)
L’asterisco indica che l’attributo può assumere valori NULL (nel caso in cui non sia applicabile).
Gerarchie (2)
pubblicazioni
libri riviste
collocaz
prezzo
periodicitàautore
Casa edit.
Titolo.
N_Invent
libricollocaz
prezzo
autore
Casa edit.
Titolo.
N_Invent
rivistecollocaz
prezzoperiodicità
Casa edit.
Titolo.
N_Invent
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à.
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
PRODOTTO (CODICE_PRODOTTO, NOME_PEZZO)
VENDITORE (NOME, TELEFONO)
VENDITA (CODICE_PRODOTTO, NOME_VENDITORE, SCONTO,DATA)
Esempio: Associazione molti a molti
VENDITORE
PRODOTTO
VENDITA
telefono
codice_prodotto
(n:m)sconto
nome
data
nome_prodotto
UOMO(NOME, INRIDIZZO)DONNA(NOME,INDIRIZZO)SPOSATI(NOMEUOMO,NOMEDONNA,DATA,LUOGO)
oppureSPOSATI(NOMEUOMO,NOMEDONNA,DATA,LUOGO)
Esempio: Relazione 1:1
UOMO DONNASPOSATI
NOME INDIRIZZO NOME INDIRIZZO
(1:1)
DATA LUOGO
Si può eliminare la relazione SPOSATI
UOMO(NOME, INRIDIZZO, CONIUGE, DATA_NOZZE, LUOGO_NOZZE)
oppure DONNA(NOME, INRIDIZZO, CONIUGE, DATA_NOZZE,
LUOGO_NOZZE)
NOTA: può essere utile mantenere la relazione SPOSATI nel caso in cui molti uomini (o molte donne) risultino non sposati: se la si eliminasse la relazione UOMO (o DONNA) estesa come indicato sopra conterrebbe troppi valori NULL
REPERTO
MUSEO
APPARTIENE_ (1:n)
CODICEPROVENIENZA
NOMESEZIONE
INDIRIZZO
REPERTO(CODICE, PROVENIENZA, DATA_RITR)APPARTIENE(CODICE, NOME_MUSEO,SEZIONE)MUSEO (NOME, INDIRIZZO)
OPPURE (MEGLIO):
Esempio: relazione 1 a molti
1
n
DATA_RITROV.
REPERTO(CODICE, PROVENIENZA, DATA_RITR, NOME_MUSEO,SEZIONE)MUSEO (NOME, INDIRIZZO)
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
originale restaurato Centro di restauro
Restaurato da
Sta inOggetto
Etnografico Reperto Opera
N.invprovenienza
datadescrizione
misure
Tipologia data_rit
data
nome indirizzo
1,n 0,n
1,1
data n/m
Eseguito da
Autore
nome
nato a
1,1
0,n
Collocazione
Sezione
nome
responsabile
1,n
sala
identificatore
1,n
comprende
1,n
AltreI
Eliminazione delle gerarchie
Originale/restaurato --> soluzione (1) Reperto/etnografico/opera --> soluzione (1)
Centro di restauro
Restaurato da
Sta inOggetto
N.invprovenienza
datadescrizione
misure
M.E.Tipologia
data_rit
data
nome indirizzo
data n/m
0,n 0,n
1,1
Autore
nome
nato a
0,1
0,n
tipo Stato restauro
Collocazione
Eseguito da
Sezione
nome
responsabile
1,n
sala
identificatore
1,n
comprende
1,n
AltreI
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 DBCentroRestauro(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