Basi di dati Basi di dati 20022002
EER
Vogliamo aumentare l’espressività degli Entity Model
EER: Entity Model Esteso
Basi di dati Basi di dati 20022002
Concetti fondamentali
• Specializzazione/generalizzazione
• Categorie• Associazioni ternarie
Basi di dati Basi di dati 20022002
Specializzazione/generalizzazione
• Specializzazione/generalizzazione
• Categorie• Associazioni ternarie
Basi di dati Basi di dati 20022002
Specializzazione/generalizzazione:
gerarchia is-a
Sottoclassi
Impiegato
Pilota
Matricola impiegato
Meccanico Amministrativo
Data assunzione
Nome
N. Licenza N. Ore in pista
SUPERCLASSE
Basi di dati Basi di dati 20022002
Specializzazione/generalizzazione:
Impiegato
Segretario
Matricola impiegato
Data assunzione
Nome
Tecnico
Ingegnere
d
DirettorePagato ad
ore
Stipendiato
d
Progetto Sindacato
Dirige appartiene
Specializzazione di un ruolo
Basi di dati Basi di dati 20022002
Specializzazione/generalizzazione:
Impiegato
Segretario
Matricola impiegato
Data assunzione
Nome
Tecnico
Ingegnere
d
DirettorePagato ad
ore
Stipendiato
d
Progetto Sindacato
Dirige appartiene
La notazione d significa: sottoclassi disgiunte
Basi di dati Basi di dati 20022002
Specializzazione/generalizzazione:
Impiegato
Segretario
Matricola impiegato
Data assunzione
Nome
Tecnico
Ingegnere
d
DirettorePagato ad
ore
Stipendiato
d
Progetto Sindacato
Dirige appartiene
La specializzazione può essere totale o parziale
Basi di dati Basi di dati 20022002
Definizione delle specializzazioni
• Ciascuna delle tabelle delle specializzazioni ha la stessa chiave primaria della generalizzazione più il proprio set di attributi specifici
Impiegato
Pilota
Matricola impiegato
Meccanico Amministrativo
Data assunzione
Nome
N. Licenza N. Ore in pista
Matricola impiegato Matricola impiegato Matricola impiegato
Basi di dati Basi di dati 20022002
Definizione delle specializzazioni
• Questa soluzione va bene qualunque siano i vincoli della specializzazione
Impiegato
Pilota
Matricola impiegato
Meccanico Amministrativo
Data assunzione
Nome
N. Licenza N. Ore in pista
Matricola impiegato Matricola impiegato Matricola impiegato
Basi di dati Basi di dati 20022002
Definizione delle specializzazioni
• Oppure la specializzazione si può definire tramite un attributo
Impiegato
Matricola impiegato
Data assunzione
Nome
Tipo lavoro
Velocità battitura
livello
Specializzazione
• Questa soluzione va bene se esistono pochi attributi specifici e se la specializzazione è disgiunta
• (avere una sola tabella migliora le prestazioni)
Basi di dati Basi di dati 20022002
Definizione delle specializzazioni
• Se la specializzazione non è disgiunta si possono usare più campi di tipo booleano
Impiegato
Matricola impiegato
Data assunzione
Nome
Ingegnere (si/no)
Specializzazione
Consulente (si/no)
Tariffa giornaliera
Basi di dati Basi di dati 20022002
Reticoli di Specializzazione
Impiegato
Segretario
Matricola impiegato
Data assunzione
Nome
Tecnico
Ingegnere
d
Direttore
Pagato ad ore
Stipendiato
d
Direttore ingegnere
Direttore_ingegnere è una sottoclasse condivisa
Basi di dati Basi di dati 20022002
Categorie
Azienda
Titolare conto
U
L’esigenza nasce quando in una singola associazione superclasse sottoclasse nella superclasse intervengono più entità distinte
Persona
BAnca
Ha conto
Basi di dati Basi di dati 20022002
Categorie
Edificio
Proprietà
U
Se la categoria è totale, è equivalente usare una rappresentazione in termini di specializzazione
Ciò è opportuno se le due entità condividono molti attributi
Lotto
Edificio Lotto
Proprietà
d
Basi di dati Basi di dati 20022002
Associazioni ternarie
FornitoreN
Progetto
1
fornitura
Parte
Id fornitore quantità
codparteidprogetto
Basi di dati Basi di dati 20022002
Associazioni ternarie
FornitoreN
Progetto
M
fornitura
Parte
• L’associazione ternaria è dalla situazione mostrata in figura:
• Le varie istanze possono esistere indipendentemente
Id fornitorequantità
codparte
idprogetto
può fornire usa
Basi di dati Basi di dati 20022002
Associazioni ternarie
FornitoreN
Progetto
M
fornitura
Parte
• In genere si specificano anche le associazioni binarie aggiuntive
Id fornitorequantità
codparte
idprogetto
può fornire usa
NN
MM
Basi di dati Basi di dati 20022002
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 Basi di dati 20022002
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 Basi di dati 20022002
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 Basi di dati 20022002
Esercizio: agenzia immobiliaresoluzione 1
cliente immobileaffitta
contratto
stipula riguarda
Basi di dati Basi di dati 20022002
Esercizio: agenzia immobiliaresoluzione 1
cliente immobileaffitta
proprietario Contrattoaffitto affittuario
ORelazione ternaria
Basi di dati Basi di dati 20022002
Esercizio: agenzia immobiliaresoluzione 1
cliente immobile
affitta
proprietario Contrattoaffitto affittuario
O
Specifichiamo meglio
mette in affitto
1
NN
M
Basi di dati Basi di dati 20022002
Esercizio: agenzia immobiliaresoluzione 1
cliente immobile
affitta
proprietario Contrattoaffitto affittuario
O
Affitta e contratto di affitto potrebbero essere conglobate in un’unica tabella
mette in affitto
1
NN
M
Basi di dati Basi di dati 20022002
Esercizio: agenzia immobiliare
cliente
immobile
affitta
proprietario Contrattoaffitto affittuario
O
mette in affitto
1
NN
M
personasocietà
D
ufficiocasa
D
Basi di dati Basi di dati 20022002
Esercizio: agenzia immobiliare
cliente
immobile
affitta
proprietario Contrattoaffitto affittuario
O
mette in affitto
1
NN
M
personasocietà
D
ufficiocasa
D
Basi di dati Basi di dati 20022002
Scelte progettualiRuolo 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 Basi di dati 20022002
Scelte progettualiRuolo 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 Basi di dati 20022002
Scelte progettualiassociazione 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 Basi di dati 20022002
Scelte progettualiassociazione 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 Basi di dati 20022002
Scelte progettualiassociazione 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