Progettazione di Database l l l Progettazione Concettuale
Progettazione di Database l l l 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
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 persona 1, 1 Nato a 0, n 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) uomo 0, 1 sposati 0, 1 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) studente 0, n esame 0, m 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à): l Tipo (dei valori) degli attributi l attributi semplici vs composti l cardinalità (mono/multi-valore) l attributo identificatore (chiave) l attributi ereditati l 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 l 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 l l l 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) l l 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. l 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 l l 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à l l STUDENTE (Matricola, Nome_Corso, Media) CORSO_DI_LAUREA (Nome_Corso, Nome_Università)
Eliminazione delle gerarchie l l l (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 l l 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 l l 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à collocaz prezzo riviste
Schema ER -> DB relazionale (2) l l 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 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_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_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_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 l l 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
l l l 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 Oggetto 1, 1 Altre. I identificatore 1, n Sta in sala 1, n Etnografico Reperto Opera 1, 1 nome data n/m Tipologia data_rit nato a Eseguito da nome 0, n Autore responsabile comprende 1, n Sezione
Eliminazione delle gerarchie l l Originale/restaurato --> soluzione (1) Reperto/etnografico/opera --> soluzione (1)
data 0, n Restaurato da tipo N. inv provenienza data descrizione misure Stato restauro nome indirizzo Collocazione Oggetto Centro di restauro 1, 1 Altre. I identificatore 1, n Sta in sala 0, 1 1, n data_rit M. E. Tipologia nome data n/m nato a comprende Eseguito da nome 0, n 1, n Sezione Autore responsabile
Entità l l l Oggetto(N_inv, Provenienza, Data, Misure, Tipo, Descrizione, Stato. Restauro, ME_Tipologia*, Data_rit*) Centro. Restauro(Nome, Indirizzo) Sezione(Nome, Responsabile) Autore(Nome, Data. N/M, Luogo) Sala(Identificatore, Altre. I)
Relazioni l l Restaurato_da(Oggetto, Centro, Data) Eseguito_da(Opera, Nome) Sta_in(Oggetto, Sala, Collocazione*) Comprende(Nome. Sezione, Nome. Sala)
Eliminazione della relazione (1: n) Sta_in: l l si aggiungono gli attributi: , Sala, Collocazione* ad Oggetto, che diventa Oggetto(N_inv, Provenienza, Data, Misure, Tipo, Descrizione, Stato. Restauro, ME_Tipologia*, Data_rit*, Sala, Collocazione*)
Schema finale DB Centro. Restauro(Nome, Indirizzo) Sezione(Nome, Responsabile) Autore(Nome, Data. N/M, Luogo) Sala(Identificatore, Altre. I) Oggetto(N_inv, Provenienza, Data, Misure, Tipo, Descrizione, Stato. Restauro, ME_Tipologia*, Data_rit*, Sala, Collocazione*) Restaurato_da(Oggetto, Centro, Data) Eseguito_da(Opera, Nome) Comprende(Nome. Sezione, Nome. Sala) Vincoli di integrità referenziale: attributi delle stesso colore
Domini e vincoli l l l 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 Stato. Restauro deve essere YES
- Slides: 42