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 (suddivise 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
Esempi di modello entità-relazione utente prestito libro autore scrittura libro
studente esame corso Nome Cognome Matricola Data Voto codice titolo Docente
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 0,n persona Nato a luogo minimo 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 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 0,1 uomo 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,m 0,n studente esame corso
Altri esempi Relazione uno-a-uno 0,1 1,1 impiegato dirige biblioteca
Relazioni uno a molti libro 1,1 edizione 0,n Casa_editrice Relazioni molti a molti 0,m 0,n utente prestito libro
Relazioni a più argomenti Data destinatario mittente Spedizione merce
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à Attr. multivalore Identificatori Attr. monovalore Attr. composti Attr. 1. Attr. N.
Esempio scaffale ripiano Collocaz. LIBRO N.invent Anno_ed. Casa_ed. autori titolo Autori: attributo multi-valore
Gerarchie Speciale tipo di relazione (Sottoclasse di/ sopraclasse di) che consente una rappresentazione più compatta e più naturale dei dati Ereditarietà Casa edit. collocaz Titolo. pubblicazioni prezzo autori libri periodicità riviste
Schema ER -> DB relazionale (1) Modello concettuale -> Insieme di tabelle Entità -> Tabella Attributi -> Attributi della tabella Identificatore -> Chiave primaria attributi composti -> appiattiti attributi multi-valore -> Altra relazione attributi ereditati -> dipende da come vengono tradotte le gerarchie
scaffale ripiano Collocaz. Entità LIBRO N.invent Anno_ed. Casa_ed. autori 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 scaffale Collocaz. ripiano Esempio: Autori LIBRO N.invent Anno_ed. Casa_ed. autori titolo nome autore scritturra LIBRO N.invent (n:m) LIBRO (N_Inv,Titolo, casa_ed, anno_ed, collocazione) SCRITTURA (Nome, N_Inv) gli altri attr AUTORE(Nome,ALtreINfo)
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) Titolo. N_Invent Casa edit. pubblicazioni collocaz prezzo autore libri periodicità riviste Titolo. N_Invent Casa edit. pubblicazioni collocaz prezzo autore periodicità Tipo_pub tipo_pub: attributo a valori {libri, riviste}
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) Titolo. N_Invent Casa edit. pubblicazioni collocaz prezzo autore libri periodicità riviste N_Invent Titolo. autore Casa edit. libri collocaz prezzo N_Invent 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 sottoentità.
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 nome (n:m) VENDITORE VENDITA PRODOTTO telefono sconto data codice_prodotto nome_prodotto VENDITORE (nome, telefono) PRODOTTO (codice_prodotto, nome_prodotto) VENDITA (codice_prodotto, nome_prodotto, sconto,data)
Esempio: Relazione 1:1 (1:1) UOMO SPOSATI DONNA DATA LUOGO NOME INDIRIZZO NOME INDIRIZZO UOMO(nome, indirizzo) DONNA(nome,indirizzo) SPOSATI(nome_uomo, nome_donna,data,luogo) oppure SPOSATI(nome_uomo, nome_donna,data,luogo)
Si può eliminare la relazione SPOSATI UOMO(nome, indirizzo, coniuge, data, luogo) oppure DONNA(nome, indirizzo, coniuge, data, luogo) 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
Esempio: relazione 1 a molti SEZIONE REPERTO 1 APPARTIENE_ n MUSEO (1:n) CODICE PROVENIENZA DATA_RITROV. NOME INDIRIZZO REPERTO(CODICE, PROVENIENZA, DATA_RITR) APPARTIENE(CODICE, NOME_MUSEO,SEZIONE) MUSEO (NOME, INDIRIZZO) OPPURE (MEGLIO): 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
data 1,n 0,n originale restaurato Centro di Restaurato da restauro nome indirizzo N.inv provenienza data descrizione misure Oggetto 1,1 Sta in Collocazione 1,n AltreI identificatore sala 1,n Etnografico Reperto Opera 1,1 nome data n/m Tipologia data_rit nato a Eseguito da Autore 0,n nome responsabile comprende Sezione 1,n
Eliminazione delle gerarchie Originale/restaurato --> soluzione (1) Reperto/etnografico/opera --> soluzione (1)
tipo Stato restauro data 0,n 0,n Restaurato da Centro di restauro nome indirizzo N.inv provenienza data descrizione misure Oggetto data_rit M.E.Tipologia nome data n/m nato a 1,1 0,1 Sta in Eseguito da Autore Collocazione 0,n AltreI 1,n nome responsabile identificatore 1,n sala comprende Sezione 1,n
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
Vincoli di Dominio: Domini e vincoli 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