EER Vogliamo aumentare l’espressività degli Entity Model EER: Entity Model Esteso Basi di dati 2002 Concetti fondamentali • Specializzazione/generalizzazione • Categorie • Associazioni ternarie Basi di dati 2002 Specializzazione/generalizzazione • Specializzazione/generalizzazione • Categorie • Associazioni ternarie Basi di dati 2002 Specializzazione/generalizzazione: gerarchia is-a Matricola impiegato SUPERCLASSE Impiegato Pilota Meccanico Nome Data assunzione Amministrativo Sottoclassi N. Licenza N. Ore in pista Basi di dati 2002 Specializzazione/generalizzazione: Matricola impiegato Impiegato d Segretario Data assunzione d Ingegnere Stipendiato Tecnico Specializzazione di un ruolo Nome Direttore Dirige Progetto Pagato ad ore appartiene Sindacato Basi di dati 2002 Specializzazione/generalizzazione: La notazione d significa: sottoclassi disgiunte Matricola impiegato Impiegato d Segretario Nome Data assunzione d Ingegnere Stipendiato Tecnico Direttore Dirige Progetto Pagato ad ore appartiene Sindacato Basi di dati 2002 Specializzazione/generalizzazione: Matricola impiegato La specializzazione può essere totale o Impiegato parziale d Segretario Nome Data assunzione d Ingegnere Stipendiato Tecnico Direttore Dirige Progetto Pagato ad ore appartiene Sindacato Basi di dati 2002 Definizione delle specializzazioni Matricola impiegato Impiegato Matricola impiegato Pilota N. Licenza N. Ore in pista Nome Data assunzione Matricola impiegato Meccanico Matricola impiegato Amministrativo • Ciascuna delle tabelle delle specializzazioni ha la stessa chiave primaria della generalizzazione più il proprio set di attributi specifici Basi di dati 2002 Definizione delle specializzazioni Matricola impiegato Impiegato Matricola impiegato Pilota N. Licenza N. Ore in pista Nome Data assunzione Matricola impiegato Meccanico Matricola impiegato Amministrativo • Questa soluzione va bene qualunque siano i vincoli della specializzazione Basi di dati 2002 Definizione delle specializzazioni • Oppure la specializzazione si può definire tramite un attributo • Questa soluzione va bene se esistono pochi attributi specifici e se la specializzazione è disgiunta • (avere una sola tabella migliora le prestazioni) Matricola impiegato Impiegato Nome Data assunzione Tipo lavoro Velocità battitura livello Specializzazione Basi di dati 2002 Definizione delle specializzazioni • Se la specializzazione non è disgiunta si possono usare più campi di tipo booleano Matricola impiegato Impiegato Nome Data assunzione Ingegnere (si/no) Specializzazione Consulente (si/no) Tariffa giornaliera Basi di dati 2002 Reticoli di Specializzazione Matricola impiegato Direttore_ingegnere è una sottoclasse Impiegato condivisa d Segretario Nome Data assunzione d Ingegnere Tecnico Direttore Stipendiato Pagato ad ore Direttore ingegnere Basi di dati 2002 Categorie Azienda Persona U Titolare conto L’esigenza nasce quando in una singola associazione superclasse sottoclasse nella superclasse intervengono più entità distinte Ha conto BAnca Basi di dati 2002 Categorie Edificio Lotto Se la categoria è totale, è equivalente usare una rappresentazione in termini di specializzazione Ciò è opportuno se le due entità condividono molti attributi U Proprietà Proprietà d Edificio Lotto Basi di dati 2002 Associazioni ternarie 1 N Fornitore fornitura Progetto quantità Id fornitore Parte codparte idprogetto Basi di dati 2002 Associazioni ternarie • L’associazione ternaria è dalla situazione mostrata in figura: • Le varie istanze possono esistere indipendentemente M N Fornitore fornitura Progetto quantità Id fornitore può fornire Parte idprogetto usa codparte Basi di dati 2002 Associazioni ternarie • In genere si specificano anche le associazioni binarie aggiuntive M N fornitura Fornitore N quantità Id fornitore può fornire Progetto Parte M M codparte N idprogetto usa Basi di dati 2002 Vincoli sui tipi di associazione • I vincoli di una associazione consentono di esprimere efficacemente alcune regole dell’organizzazione che stiamo analizzando • Tuttavia alcune regole non possono essere espresse: • ES: lo studente deve svolgere 60 ore di laboratorio prima di potersi iscrivere al corso X • E’ compito del software applicativo tenere conto di queste regole (in genere questa funzionalità non è supportata direttamente nei DBMS) Basi di dati 2002 Esercizio: base di dati per un piccolo aeroporto • Ogni aeroplano ha n matr, è di un certo tipo, e di un certo modello, ha una capacità ed è posto in un determinato hangar • hangar ha numero, capacità e ubicazione • Occorre tenere traccia dei proprietari e degli impiegati che effettuano il servizio di manutenzione, che comprende data, tipo di lavoro, n ore impiegate • Un proprietario può essere una persona o una azienda, le aziende hanno nome, ind. tel • I piloti e impiegati hanno cf, nome, ind, tel. Piloti hanno n. licenza, limitazion, sono autorizzati a fare volare solo certi tipi di aeroplani. Gli impiegati hanno stipendio e turno, e sono abilitati a lavorare su certi tipi di aeroplani. Basi di dati 2002 Esercizio:AGENZIA IMMOBILIARE Tali informazioni riguardano: - gli immobili oggetto degli affitti. Di tali immobili interessa ricordare: l'indirizzo, il prezzo richiesto dal proprietario per la vendita o per l'affitto annuo, i metri quadri. Gli immobili possono essere di due tipi: abitazioni ed uffici. Per le abitazioni si vuole anche memorizzare il numero di vani. - Coloro che prendono in affitto gli immobili, che possono essere persone fisiche o società/enti. Di questi si vogliono memorizzare informazioni sul codice fiscale, la partita iva (se applicabile), il nome e cognome, se persone fisiche, o la denominazione societaria (se società/enti). - Coloro che danno in affitto gli immobili. Anche questi possono essere persone fisiche o società/enti, e si vogliono memorizzare informazioni sul codice fiscale, la partita iva (seapplicabile), il nome e cognome, se persone fisiche, o la denominazione societaria (se società/enti). - I contratti di affitto. Di questi interessa sapere: data, numero di registrazione, nome ecognome del notaio che ha stipulato, prezzo di vendita dell'immobile (se venduto) o di affitto (seaffittato). Ovviamente, per ogni contratto deve essere possibile sapere quale immobile riguarda e tra chi è stato stipulato. Basi di dati 2002 Esercizio: agenzia immobiliare soluzione 1 cliente affitta stipula immobile riguarda contratto Basi di dati 2002 Esercizio: agenzia immobiliare soluzione 1 cliente affitta immobile Relazione ternaria O proprietario Contratto affitto affittuario Basi di dati 2002 Esercizio: agenzia immobiliare soluzione 1 Specifichiamo meglio immobile cliente N N O affitta M Contratto affitto proprietario affittuario 1 mette in affitto Basi di dati 2002 Esercizio: agenzia immobiliare soluzione 1 Affitta e contratto di affitto potrebbero immobile cliente essere conglobate in un’unica tabella N O affitta N M Contratto affitto proprietario affittuario 1 mette in affitto Basi di dati 2002 Esercizio: agenzia immobiliare ufficio casa cliente D D società immobile persona N N O affitta M Contratto affitto proprietario affittuario 1 mette in affitto Basi di dati 2002 Esercizio: agenzia immobiliare ufficio casa cliente D D società immobile persona N N O affitta M Contratto affitto proprietario affittuario 1 mette in affitto Basi di dati 2002 Scelte progettuali Ruolo proprietario /affittuario • Creare due tabelle: una per proprietari e una per affittuari • Hanno struttura identica • Alcuni clienti possono trovarsi in entrambe le tabelle • Può essere immediato fare alcuni tipi di query: es: genera la lista dei proprietari degli immobili. • Oppure: Creare un’unica tabella per i clienti • Si può aggiungere un campo che indica se quel cliente è anche un proprietario. • E’ ridondante però facilita le query (altrimenti si dovrebbe fare una join con la tabella degli immobili sul campo Id proprietario) Basi di dati 2002 Scelte progettuali Ruolo ente /persona • I due ruoli si differenziano solo per un attributo (PIVA) • Conviene quindi lasciare la superclasse aggiungendo un campo sul tipo di cliente e un campo per l’eventuale partita IVA. • Considerazioni analoghe valgono per la specializzazione IMMOBILE casa ufficio Basi di dati 2002 Scelte progettuali associazione affitto e contratto • Dall’associazione ternaria nasce la tabella dei contratti: • Contratto id affittuario, id immobile, data inizio locazione, id proprietario ,data fine, canone, notaio, data firma contratto) • In realtà id immobile determina id proprietario, ma conviene metterlo se voglio generare più efficientemente informazioni complete sui contratti. Basi di dati 2002 Scelte progettuali associazione affitto e contratto • L’associazione mette in affitto determina una chiave esterna nella tabella immobile • Immobile (id immobile, id proprietario, ufficio si/no, mq, nvani, canone mensile, disponibile si/no) Basi di dati 2002 Scelte progettuali associazione affitto e contratto • L’associazione affitta, di tipo N a M da luogo ad una tabella con i dettagli dell’affitto. • Affitti (id immobile, id locatario, data inizio locazione, data fine, canone mensile) • Notare che a meno di due attributi è la stessa struttura di contratti. Le due tabelle si potrebbero unificare Basi di dati 2002