Sei sulla pagina 1di 23

ia

Officine: specifica

ner
Descrivere lo schema concettuale corrispondente ad un’applicazione
riguardante un insieme di officine, facendo riferimento alle seguenti
specifiche.

eg
Delle officine interessano: nome, indirizzo, numero di dipendenti,
dipendenti (almeno uno) con l’informazione su quanti anni di servizio, e
direttore. Si noti che ogni officina ha uno ed un solo direttore ed ogni

ng
direttore dirige una ed una sola officina. Dei dipendenti e dei direttori
interessano: codice fiscale, indirizzo, numeri di telefono e anni di anzianità.
Dei direttori interessa anche l'età. Si noti che un direttore non è

I
necessariamente un dipendente di officina (ma può esserlo). Ogni
riparazione è effettuata da una ed una sola officina, e riguarda uno ed un
solo veicolo. Di ogni riparazione interessano: codice (univoco nell'ambito
re
dell'officina), ora e data di accettazione del veicolo, e, nel caso di
riparazione terminata, ora e data di riconsegna del veicolo. Dei veicoli
interessano: modello, tipo, targa, anno di immatricolazione, e proprietario.
ive
Ogni veicolo ha uno ed un solo proprietario. Dei proprietari di veicoli
interessano: codice fiscale, indirizzo, e numeri di telefono.
V

Maurizio Lenzerini Basi di Dati – A.A. 2002/2003 Esercizio officine - 1


ia
Schema concettuale
NumDip Indirizzo NumTel

ner
CodFis (0,n)
Nome
(1,1) Proprietario
Officina Dirige Persona
Indirizzo
Età (1,1)

eg
AnniServizio Direttore Dipendente
Ripara

ng
(1,n) AnniAnz (1,n) AnniAnz
Lavora
(1,1)
Codice

(1,1) I
Riparazione
OraAccettazione
DataAccettazione
Possiede
re
Relativa OraRiconsegna
Terminata DataRiconsegna
ive
Targa
(1,1)
Veicolo
Modello Vincoli esterni: – riconsegna dopo accettazione
Tipo AnnoImm – vincolo che lega NumDip alle istanze in Lavora
V

Maurizio Lenzerini Basi di Dati – A.A. 2002/2003 Esercizio officine - 2


ia
Schema concettuale ristrutturato Numero
(1,n)
NumDip Indirizzo TelPer Telefono

ner
Nome (1,1) (0,n)
CodFis Proprietario
Officina Dirige Persona
Indirizzo (1,1) (0,1) (0,1)

eg
Età Direttore ISA-Dr-P
AnniServizio (1,1) ISA-Dp-P
Ripara AnniAnz (1,1)

ng
(1,n) (1,n)
Lavora Dipendente
(1,1)
AnniAnz
Codice

(1,1) I
Riparazione
(0,1)
OraAccettazione
DataAccettazione
OraRiconsegna
Possiede
re
ISA-T-R Terminata DataRiconsegna
Relativa (1,1)
ive
Targa
(1,1)
Veicolo Vincoli esterni: – riconsegna dopo accettazione
Modello – vincolo che lega NumDip alle istanze in Lavora
Tipo AnnoImm
V

– vincolo su AnniAnz derivante dall’eliminazione ISA


Maurizio Lenzerini Basi di Dati – A.A. 2002/2003 Esercizio officine - 3
ia
Schema logico (parte 1)
Officina(Nome, NumDip, Indirizzo)

ner
foreign key: Officina[Nome] ⊆ Dirige[Officina]
inclusione: Officina[Nome] ⊆ Lavora[Officina]
Persona(CodFis, Indirizzo)

eg
Direttore(CodFis, Eta, AnniAnz)
foreign key: Direttore[CodFis] ⊆ Persona[CodFis]
foreign key: Direttore[CodFis] ⊆ Dirige[Direttore]

ng
Dipendente(CodFis, AnniAnz)
foreign key: Dipendente[CodFis] ⊆ Persona[CodFis]
inclusione: Dipendente[CodFis] ⊆ Lavora[Dipendente]

I
Dirige(Officina, Direttore)
foreign key: Dirige[Officina] ⊆ Officina[Nome]
re
foreign key: Dirige[Direttore] ⊆ Direttore[CodFis]
chiave: Direttore
ive
Lavora(Officina, Dipendente, AnniServizio)
foreign key: Lavora[Officina] ⊆ Officina[Nome]
foreign key: Lavora[Dipendente] ⊆ Dipendente[CodFis]
V

Maurizio Lenzerini Basi di Dati – A.A. 2002/2003 Esercizio officine - 4


ia
Schema logico (parte 2)
TelPer(CodFis, Telefono)

ner
foreign key: TelPer[CodFis] ⊆ Persona[CodFis]
foreign key: TelPer[Telefono] ⊆ Telefono[Numero]
Telefono(Numero)
inclusione: Telefono[Numero] ⊆ TelPer[Telefono]

eg
Veicolo(Targa, Modello, Tipo, AnnoImm, Proprietario)
foreign key : Veicolo[Proprietario] ⊆ Persona[CodFis]

ng
Riparazione(Codice, Officina, OraAcc, DataAcc, Veicolo)
foreign key: Riparazione[Officina] ⊆ Officina[Nome]
foreign key: Riparazione[Veicolo] ⊆ Veicolo[Targa]

I
Terminata(Codice, Officina, OraRic, DataRic)
foreign key: Terminata[Codice, Officina] ⊆
Riparazione[Codice, Officina]
re
Vincoli esterni:
• riconsegna dopo accettazione
ive
• vincolo che lega Officina[NumDip] alle istanze in Lavora
• vincolo su Direttore[AnniAnz] e Dipendente[AnniAnz] derivante
dall’eliminazione ISA
V

Maurizio Lenzerini Basi di Dati – A.A. 2002/2003 Esercizio officine - 5


ia
Specifiche per la ristrutturazione dello
schema logico

ner
• Quando si accede ai direttori, interessano anche tutti i dati

eg
relativi all’officina che dirigono e viceversa, quando si accede
alle officine, interessano anche tutti i dati relativi al loro direttore.

ng
• Solitamente non interessano i dati anagrafici dei direttori.
• Quando si accede agli impiegati interessano anche i dati
anagrafici.

I
• Un’operazione frequente è la stampa dell’elenco di tutte le
riparazioni (terminate e non), con officina, autoveicolo e ora e
re
data di accettazione ed eventuale riconsegna.
ive
V

Maurizio Lenzerini Basi di Dati – A.A. 2002/2003 Esercizio officine - 6


ia
Ristrutturazioni dello schema logico

ner
• Quando si accede ai direttori, interessano anche tutti i dati relativi
all’officina che dirigono e viceversa quando si accede alle officine,
interessano anche tutti i dati relativi al loro direttore. Å

eg
– accorpamento forte di Direttore, Dirige e Officina
• Solitamente non interessano invece i dati anagrafici dei direttori. Å
– non c’è partizionamento orrizontale di Persona in direttori e non

ng
• Quando si accede agli impiegati interessano anche i dati anagrafici.
– partizionamento orrizontale di Persona in dipendenti e non

I
– accorpamento forte tra l’entità risultante e Dipendente
• Un’operazione frequente è la stampa dell’elenco di tutte le riparazioni
re
(terminate e non), con officina, autoveicolo e ora e data di accettazione
ed eventuale ora e data di riconsegna. Å
– accorpamento debole di Terminata in Riparazione
ive
• Accorpamento debole di Telefono in TelPer allo scopo di eliminare una
relazione.
V

Maurizio Lenzerini Basi di Dati – A.A. 2002/2003 Esercizio officine - 7


ia
Schema logico ristrutturato

ner
Officina(Nome, NumDip, Indirizzo, Direttore, EtaDir, AnniAnzDir)
chiave: Direttore
inclusione: Officina[Nome] ⊆ Lavora[Officina]
PersonaNonDip(CodFis, Indirizzo)

eg
Dipendente(CodFis, AnniAnz, Indirizzo)
inclusione: Dipendente[CodFis] ⊆ Lavora[Dipendente]

ng
Lavora(Officina, Dipendente, AnniServizio)
foreign key: Lavora[Officina] ⊆ Officina[Nome]
foreign key: Lavora[Dipendente] ⊆ Dipendente[CodFis]

I
TelPer(CodFis, Telefono)
foreign key: TelPer[CodFis] ⊆ Persona[CodFis]
Veicolo(Targa, Modello, Tipo, AnnoImm, Proprietario)
re
Riparazione(Codice, Officina, OraAcc, DataAcc, Veicolo, OraRic*, DataRic*)
foreign key: Riparazione[Officina] ⊆ Officina[Nome]
ive
foreign key: Riparazione[Veicolo] ⊆ Veicolo[Targa]
V

Maurizio Lenzerini Basi di Dati – A.A. 2002/2003 Esercizio officine - 8


ia
Vincoli dello schema logico ristrutturato e viste
Vincoli:

ner
• PersonaNonDip e Dipendente sono disgiunti:
– PersonaNonDip[CodFis] ∩ Dipendente[CodFis] = ∅
• Vincoli risultanti dai vincolo di foreign key verso Persona
– Officina[Direttore] ⊆ PersonaNonDip[CodFis] ∪ Dipendente[CodFis]

eg
– Veicolo[Proprietario] ⊆ PersonaNonDip[CodFis] ∪ Dipendente[CodFis]
– TelPer[CodFis] ⊆ PersonaNonDip[CodFis] ∪ Dipendente[CodFis]
• Vincoli esterni:

ng
– riconsegna dopo accettazione
– vincolo che lega Officina[NumDip] alle istanze in Lavora
– vincolo su Officina[AnniAnzDir] e Dipendente[AnniAnz] derivante
dall’eliminazione ISA

I
Viste per ricostruire le relazioni dello schema originario:
view Persona = PersonaNonDip ∪ PROJCodFis,Indirizzo(Dipendente)
re
view OfficinaOrig = PROJNome, NumDip, Indirizzo(Officina)
view Direttore = PROJDirettore, EtaDir, AnniAnzDir (Officina)
ive
view Dirige = PROJNome, Direttore(Officina)
view Terminata = PROJCodice, Officina, OraRic, DataRic(SEL OraRic NOT NULL(Riparazione))
view RiparazioneOrig = PROJCodice, Officina, OraAcc, DataAcc, Veicolo(Riparazione)
view Telefono = PROJTelefono(TelPer)
V

Maurizio Lenzerini Basi di Dati – A.A. 2002/2003 Esercizio officine - 9


ia
Vendite e affitti di immobili: specifica

ner
Occorre gestire informazioni su :
• Le transazioni (con codice, data, valore) di vendita e affitto immobili,
che vengono effettuate dalle agenzie, delle quali interessa il numero
identificativo, e la città di residenza. Ogni transazione è effettuata da

eg
una agenzia e riguarda un immobile.
• Gli immobili (con codice, indirizzo, città di ubicazione, metri quadrati e

ng
numero locali) oggetto delle transazioni. Alcuni immobili sono di
interesse storico, e di essi interessa l'anno di costruzione. Altri sono
ristrutturati, e di essi interessa la data di ultima ristrutturazione.

I
• Gli enti che acquistano, vendono, danno in affitto o prendono in affitto
gli immobili. Degli enti interessa il codice fiscale, l'indirizzo, la città e la
re
regione di residenza. Gli enti sono persone (dei quali interessa anche
nome, cognome, professione e città di nascita) o aziende (delle quali
interessa il capitale sociale e il numero di dipendenti).
ive
• Degli affitti interessa anche il periodo di affitto.
V

M. Lenzerini – D.Lembo Basi di Dati – A.A. 2002/2003 Esercizio immobili - 1


ia
Operazioni

ner
1. I vari comuni chiedono le transazioni dell’ultimo anno che
coinvolgono vendite effettuate da persone (con codice fiscale e

eg
indirizzo). (10 volte al giorno, on line)
2. I vari comuni chiedono le transazioni dell’ultimo anno che
coinvolgono affitti ottenuti da aziende (con codice fiscale e

ng
indirizzo). (10 volte al giorno, on line)
3. Vari uffici amministrativi chiedono la situazione delle transazioni

I
dell’ultimo mese, con data ultima ristrutturazione (se esiste) e
anno di costruzione (se noto), con codice e indirizzo degli
immobili coinvolti. (1 volta al giorno, on line)
re
4. Si richiede la situazione degli immobili ristrutturati, con data
ultima ristrutturazione (1 volta l’anno, batch).
ive
V

M. Lenzerini – D.Lembo Basi di Dati – A.A. 2002/2003 Esercizio immobili - 2


ia
Volumi

ner
Transazioni: 100 milioni (50 milioni affitto, e 50 milioni vendita)
Persone: 10 milioni
Aziende: 2 milioni

eg
Immobili: 50 milioni
Storici: 2 milioni

ng
Ristrutturati: 20 milioni
Agenzie: 100.000
Città: 1000

• I Note
Uno su 10 immobili ha una transazione che lo riguarda.
re
• 4/5 di acquisti di immobili sono effettuate da persone.
• 4/5 di affitti di immobili sono effettuate da aziende.
ive
• La gran parte degli immobili storici sono ristrutturati.
• Ogni mese si prevedono circa 500 transazioni.
V

M. Lenzerini – D.Lembo Basi di Dati – A.A. 2002/2003 Esercizio immobili - 3


Schema concettuale

ia
Codice Data Valore
NumIdent

ner
(1,n) (1,1) (1,1)
Agenzia Gestisce Transazione
(1,1) (1,1)

eg
Luogo Regione
Nome
(0,1) Vendita Affitto

ng
Citta Contratto Periodo Riguarda
vend/
CF comp/ daAff Indirizzo Codice
inAff
NumLocali

I
Risiede
Nome
(1,1)
Ente
Indirizzo
NumDip
(1,1)
Immobile
re
(1,1) Anno mq
Nascita Persona Azienda
Ristrut-
Storico
ive
Professione Cognome CapSociale turato
Ubicato
Vincoli esterni: Data
Per le città in cui risiedono gli enti deve essere specificata la regione
V

M. Lenzerini – D.Lembo Basi di Dati – A.A. 2002/2003 Esercizio immobili - 4


ia
Attività della ristrutturazione dello schema ER

ner
1. non ci sono ridondanze da eliminare

eg
2. non ci sono attributi multivalore da eliminare

ng
3. non ci sono attributi composti da eliminare
4. eliminazione delle ISA e delle generalizzazioni

I
re
ive
V

M. Lenzerini – D.Lembo Basi di Dati – A.A. 2002/2003 Esercizio immobili - 5


Schema concettuale ristrutturato

ia
Codice Data Valore

ner
NumIdent
(1,n) (1,1) (1,1)
Agenzia Gestisce Transazione
(1,1) (1,1)

eg
ISA-V-T ISA-A-T
Luogo Regione
Nome (1,1) (1,1)
(0,1) Contratto Periodo

ng
Vendita Affitto
Citta Riguarda
CF comp/ vend/
inAff Indirizzo Codice
(1,1) daAff

I
Risiede

ISA-P-E
Ente NumLocali
Indirizzo
ISA-A-E (1,1)
Immobile
mq
re
Nome (1,1) ISA-S-I ISA-R-I
(1,1)
(1,1) Anno (1,1) (1,1)
Nascita Persona Azienda
ive

NumDip
Ristrut-
Storico
Professione Cognome CapSociale turato
Ubicato
V

Data
M. Lenzerini – D.Lembo Basi di Dati – A.A. 2002/2003 Esercizio immobili - 6
ia
Attività della ristrutturazione
dello schema ER (cont.)

ner
5. Gli identificatori indicati nello schema sono tutti principali. Inoltre non

eg
ci sono cicli di identificazione.
6. Vincoli sullo schema ristrutturato

ng
• Per le città in cui risiedono gli enti deve essere specificata la regione.
• Ogni istanza di Transazione partecipa ad ISA-A-T oppure ad ISA-V-T

I
ma non ad entrambe (dovuto all’eliminazione della generalizzazione).
• Ogni istanza di Immobile partecipa ad ISA-S-I oppure ad ISA-R-I ma
re
non ad entrambe (dovuto all’eliminazione della generalizzazione).
ive
V

M. Lenzerini – D.Lembo Basi di Dati – A.A. 2002/2003 Esercizio immobili - 7


ia
Schema logico (parte 1)
Agenzie(NumIdent, CittaResidenza)

ner
foreign key: Agenzia[CittaResidenza] ⊆ Citta[Nome]
inclusione: Agenzia[NumIdent] ⊆ Transazione[Agenzia]
Citta(Nome, Regione*)

eg
Transazione(Codice, Data, Valore, Agenzia, Immobile, EnteProp,
EnteComp-Aff)
foreign key: Transazione[Agenzia] ⊆ Agenzia[NumIdent]
foreign key: Transazione[Immobile] ⊆ Immobile[Codice]

ng
foreign key: Transazione[EnteProp] ⊆ Ente[CF]
foreign key: Transazione[EnteComp-Aff] ⊆ Ente[CF]

I
Vendita(Transazione)
foreign key: Vendita[Transazione] ⊆ Transazione[Codice]
Affitto(Transazione, Periodo)
re
foreign key: Affitto[Transazione] ⊆ Transazione[Codice]
Ente(CF, Indirizzo,CittaResidenza)
foreign key: Ente[CittaResidenza] ⊆ Citta[Nome]
ive
Persona(CF, Nome, Cognome, Professione, CittaNascita)
foreign key: Persona[CF] ⊆ Ente[CF]
foreign key: Persona[CittaNascita] ⊆ Citta[Nome]
V

M. Lenzerini – D.Lembo Basi di Dati – A.A. 2002/2003 Esercizio immobili - 8


ia
Schema logico (parte 2)
Azienda(CF, NumDip, CapSociale)

ner
foreign key: Azienda[CF] ⊆ Ente[CF]
Immobile(Codice, indirizzo, mq, CittaUbicazione)
foreign key: Immobile[CittaUbicazione] ⊆ Citta[Nome]

eg
Storico(Codice, Anno)
foreign key : Storico[Codice] ⊆ Immobile[Codice]
Ristrutturato(Codice, Data)
foreign key: Ristrutturato[Codice] ⊆ Immobile[Codice]

ng
Ulteriori Vincoli:
Affitto[Transazione] ∩ Vendita[Transazione] = ∅

I
Transazione[Codice] ⊆ Affitto[Transazione] ∪ Vendita[Transazione]
Persona[CF] ∩ Azienda[CF] = ∅
Ente[CF] ⊆ Persona[CF] ∪ Azienda[CF]
re
Storico[Codice] ∩ Ristrutturato[Codice] = ∅
Immobile[Codice] ⊆ Storico[Codice] ∪ Ristrutturato[Codice]
ive

Vincoli Esterni:
Per le città in cui risiedono gli enti deve essere specificata la regione.
V

M. Lenzerini – D.Lembo Basi di Dati – A.A. 2002/2003 Esercizio immobili - 9


ia
Specifiche per la ristrutturazione dello
schema logico

ner
• Le operazioni 1 e 2 richiedono frequentemente informazioni su

eg
vendite effettuate da persone e affitti ottenuti da aziende.
• Si accede alle operazioni delle tabelle Storico e Ristrutturato

ng
prevalentemente attraverso la relazione Immobile (si veda
l’operazione 3). La presenza di valori nulli introdotti è giustificata
dalla operazione 3 stessa che richiede che tali valori siano

I
presenti nella risposta.
re
ive
V

M. Lenzerini – D.Lembo Basi di Dati – A.A. 2002/2003 Esercizio immobili - 10


ia
Ristrutturazioni dello schema logico

ner
• Le operazioni 1 e 2 richiedono frequentemente informazioni su vendite
effettuate da persone e affitti ottenuti da aziende. Å
– Decomposizione orizzontale di Transazione in
• TransVendita

eg
• TransAffitto
– Accorpamento forte di Vendita e TransVendita

ng
– Decomposizione orizzontale di Vendita in
• VendDaPers
• VendDaAzienda

I
– Accorpamento forte di Affitto e TransAffitto
– Decomposizione orizzontale di Affitto in
• AffAdAzienda
re
• AffAPersona
• Si accede alle operazioni delle tabelle Storico e Ristrutturato
prevalentemente attraverso la relazione Immobile. Å
ive
– Accorpamento debole di Storico e Immobile
– Accorpamento debole di Ristrutturato e Immobile
V

M. Lenzerini – D.Lembo Basi di Dati – A.A. 2002/2003 Esercizio immobili - 11


ia
Schema logico ristrutturato (parte 1)
Agenzie(NumIdent, CittaResidenza)

ner
foreign key: Agenzia[CittaResidenza] ⊆ Citta[Nome]
inclusione: Agenzia[NumIdent] ⊆ Transazione[Agenzia]
Citta(Nome, Regione*)
VendDaPers(Codice, Data, Valore, Agenzia, Immobile, EnteProp, EnteCompAff)

eg
foreign key: VendDaPers[Agenzia] ⊆ Agenzia[NumIdent]
foreign key: VendDaPers[Immobile] ⊆ Immobile[Codice]
foreign key: VendDaPers[EnteProp] ⊆ Persona[CF]

ng
foreign key: VendDaPers[EnteComp-Aff] ⊆ Ente[CF]
VendDaAzienda(Codice, Data, Valore, Agenzia, Immobile, EnteProp, EnteCompAff)
foreign key: VendDaAzienda[Agenzia] ⊆ Agenzia[NumIdent]

I
foreign key: VendDaAzienda[Immobile] ⊆ Immobile[Codice]
foreign key: VendDaAzienda[EnteProp] ⊆ Ente[CF]
foreign key: VendDaAzienda[EnteComp-Aff] ⊆ Ente[CF]
re
AffAdAzienda(Codice, Data, Valore, Agenzia, Immobile, EnteProp, EnteCompAff,
Periodo)
ive
foreign key: AffAdAzienda[Agenzia] ⊆ Agenzia[NumIdent]
foreign key: AffAdAzienda[Immobile] ⊆ Immobile[Codice]
foreign key: AffAdAzienda[EnteProp] ⊆ Ente[CF]
foreign key: AffAdAzienda[EnteCompAff] ⊆ Azienda[CF]
V

M. Lenzerini – D.Lembo Basi di Dati – A.A. 2002/2003 Esercizio immobili - 12


ia
Schema logico ristrutturato (parte 2)

ner
AffAPersona(Codice, Data, Valore, Agenzia, Immobile, EnteProp,
EnteCompAff, Periodo)
foreign key: AffAPersona[Agenzia] ⊆ Agenzia[NumIdent]
foreign key: AffAPersona[Immobile] ⊆ Immobile[Codice]

eg
foreign key: AffAPersona[EnteProp] ⊆ Ente[CF]
foreign key: AffAPersona[EnteCompAff] ⊆ Ente[CF]

ng
Ente(CF, Indirizzo,CittaResidenza)
foreign key: Ente[CittaResidenza] ⊆ Citta[Nome]
Persona(CF, Nome, Cognome, Professione, CittaNascita)

I
foreign key: Persona[CF] ⊆ Ente[CF]
foreign key: Persona[CittaNascita] ⊆ Citta[Nome]
re
Azienda(CF, NumDip, CapSociale)
foreign key: Azienda[CF] ⊆ Ente[CF]
ive
Immobile(Codice, indirizzo, mq, CittaUbicazione, Anno*, Data*)
foreign key: Immobile[CittaUbicazione] ⊆ Citta[Nome]
V

M. Lenzerini – D.Lembo Basi di Dati – A.A. 2002/2003 Esercizio immobili - 13


ia
Vincoli dello schema logico ristrutturato e viste
Ulteriori Vincoli:

ner
• Persona[CF] ∩ Azienda[CF] = ∅
Ente[CF] ⊆ Persona[CF] ∪ Azienda[CF]
• VendDaPers, VendDaAzienda, AffAdAzienda e VendDaPers sono
disgiunti a coppie.

eg
• Vincoli esterni:
Per le città in cui risiedono gli enti deve essere specificata la regione

ng
Viste per ricostruire le relazioni dello schema originario:
view TransVendita = VendDaPers ∪ VendDaAzienda

I
view TransAffitto =
PROJCodice,Data,Valore,Agenzia,Immobile,EnteProp,EnteCompAff(AffAdAzienda ∪
re
AffAPers)
view Vendita = PROJCodice(TransVendita)
ive
view Transazione = TransVendita ∪ TransAffitto
view Storico = PROJCodice,Anno(Immobile)
view Ristrutturato = PROJCodice,Data(Immobile)
V

M. Lenzerini – D.Lembo Basi di Dati – A.A. 2002/2003 Esercizio immobili - 14