31
Basi di dati Basi di dati 2002 2002 EER Vogliamo aumentare l’espressività degli Entity Model EER: Entity Model Esteso

Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

Embed Size (px)

Citation preview

Page 1: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

Basi di dati Basi di dati 20022002

EER

Vogliamo aumentare l’espressività degli Entity Model

EER: Entity Model Esteso

Page 2: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

Basi di dati Basi di dati 20022002

Concetti fondamentali

• Specializzazione/generalizzazione

• Categorie• Associazioni ternarie

Page 3: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

Basi di dati Basi di dati 20022002

Specializzazione/generalizzazione

• Specializzazione/generalizzazione

• Categorie• Associazioni ternarie

Page 4: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

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

Page 5: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

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

Page 6: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

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

Page 7: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

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

Page 8: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

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

Page 9: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

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

Page 10: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

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)

Page 11: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

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

Page 12: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

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

Page 13: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

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

Page 14: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

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

Page 15: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

Basi di dati Basi di dati 20022002

Associazioni ternarie

FornitoreN

Progetto

1

fornitura

Parte

Id fornitore quantità

codparteidprogetto

Page 16: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

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

Page 17: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

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

Page 18: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

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)

Page 19: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

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.

Page 20: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

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.

Page 21: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

Basi di dati Basi di dati 20022002

Esercizio: agenzia immobiliaresoluzione 1

cliente immobileaffitta

contratto

stipula riguarda

Page 22: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

Basi di dati Basi di dati 20022002

Esercizio: agenzia immobiliaresoluzione 1

cliente immobileaffitta

proprietario Contrattoaffitto affittuario

ORelazione ternaria

Page 23: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

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

Page 24: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

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

Page 25: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

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

Page 26: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

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

Page 27: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

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)

Page 28: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

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

Page 29: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

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.

Page 30: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

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)

Page 31: Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso

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