Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Nel caso di padre di
Rivendita e Privato.
Gli acquisti possono avvenire in diversi intervalli temporali. ⇒
Non possiamo fare una semplice relazione binaria tra pianta e cliente dobbiamo sfruttare una relazione ternaria
dove introduciamo anche l’entità Tempo. 6
Matilde Simonini Ingegneria Informatica anno 2022/2023
9) Noleggio video
Viene usata una relazione unaria per dichiarare il remake per avere info in più. In questo modo abbiamo
del film: sappiamo il titolo dell’eventuale/i remake ecc.
informazioni sul remake
Se avessimo usato semplicemente un attributo con eventuale molteplicità avremmo potuto dire solo la quantità di
remake associati ad un film ma non avremmo avuto altre informazioni.
7
Matilde Simonini Ingegneria Informatica anno 2022/2023
10) Officina
Progettazione logica 11) Esempio di progettazione logica relazionale
Ristrutturazione dello schema ER
Traduzione delle entità senza identificatore esterno
Traduzione delle entità con identificatore esterno Traduzione delle
relazioni 8
Matilde Simonini Ingegneria Informatica anno 2022/2023
–
Generalizzazione Esame Esame specialistico
Notiamo che è presente un generalizzazione caratterizzata da una sola specializzazione: una sola entità figlia
(Esame specialistico) e una sola entità padre (Esame).
Abbiamo alcune possibilità per eliminare tale generalizzazione ma il collasso verso il basso non può essere fatto in
quanto non si tratta di una generalizzazione completa (è parziale e esclusiva).
verso l’alto, esso andrà nell’entità padre
Se abbiamo un singolo attributo, nel caso del collasso con cardinalità
(0,1).
Quando non abbiamo una vera e propria specializzazione, ossia quanto non abbiamo tanti attributi nelle entità
figlie non è un problema riportarle nell’entità padre. Se l’entità figlia avesse avuto più attributi allora avremmo avuto
a che fare con una specializzazione vera e propria e il fatto di riportati degli attributi in padre con cardinalità (0,1).
in cui si consideri un’istanza di
In questo modo tali attributi assumo un valore diverso da null solo nel caso Esame e
il fatto di avere molteplici attributi nulli non va bene. In questo caso Esame specialistico deve essere messo in
un’altra tabella.
Nel caso dell’esercizio abbiamo un unico attributo e quindi Esame specialistico più essere inglobata in Esame
⇒ la collassiamo verso l’alto.
senza problemi
Di conseguenza avremo che tutte le relazioni collegate ad esame specialistico diventeranno relazioni di Esame.
Abbiamo visto che nel caso del collasso verso l’alto è necessario aggiungere un attributo tipo che identifica il tipo
delle entità figlie. Nel caso di un solo figlio non è necessario introdurlo (il tipo avrebbe soli due valori: uno per le
istanze di Esame specialistico e uno per tutte le altre istanze di Esame).
Ci saranno delle istanze di Esame che non sono istanze di Esame specialistico e che quindi non avranno associata
la relazione Effettuato da, alla quale deve essere associata una cardinalità (0, N) quando viene associata a Esame.
–
Generalizzazioni Personale Medico, Volontario
Personale deve essere collegato con Volontario e con Medico. Si noti che non tutte le istanze di Personale sono
associate a Volontario e la stessa affermazione vale nei confronti di Medico.
1 2
Volontario (CF-V, Associazione) Personale(CF, Tipo)
Medico (CF-M, Specializzazione)
Personale (CF)
Abbiamo due possibilità.
Generalmente si preferisce la seconda scelta se abbiamo lo stesso numero di accessi per Personale, Medico e
Volontario.
Se invece, ad esempio, gli accessi avvenissero in quantità superiore a Medico e Volontario e raramente a
Personale allora è preferibile la prima soluzione.
In questo caso, dato che non abbiamo una specifica particolare scegliamo di operare con un collasso verso
Personale, ossia la soluzione 2.
Passiamo alle altre entità
Passiamo poi a considerare le entità prive di identificatore esterno e in particolare partiamo a considerare Paziente.
Nome, …)
Paziente (NTes, …)
Ospedale (CodO,
Tempo (Data) …)
Personale (CF,
Specializzazione (Nome)
Esame (CodE, Personale) 9
Matilde Simonini Ingegneria Informatica anno 2022/2023
…)
Prenotazione (Data, CodE, Ntes,
Laboratorio (CodLab, Ospedale)
Reparto (CodR, Ospedale)
RuoloMedico (DataInizio, Personale)
In questo modo abbiamo considerato le chiavi esterne.
Ora passiamo a considerare le relazioni molti a molti.
DiServizioIn (Data, Personale, Laboratorio)
Possiede (Specializzazione, Personale)
LavoraIn (Personale, CodR, Ospedale) –
12) File 2 Es.1 progettazione logica
Poiché l’accesso alle entità della generalizzazione avvengono con la stessa frequenza, possiamo optare per il
l’alto.
collasso verso
relazione RCD, a seguito del collasso verso l’alto, diventa una relazione unaria fra B e B stessa.
La –
13) File 2 progettazione logica Es.2
Si sfrutta il collasso verso l’alto dato che non vengono date specificazioni.
–
14) File 2 progettazione logica domanda 4
10
Matilde Simonini Ingegneria Informatica anno 2022/2023
Se le entità D ed E sono visitate in modo diverso allora dovremo distinguerle. Si noti che nel caso in cui c’è
maggiore interesse alle entità figlie, il collasso deve essere fatto verso il basso. Per applicarlo si ricorda che deve
E → D
esserci una generalizzazione totale. Tuttavia non è specificato di che tipo sia la generalizzazione e quindi
possiamo scegliere di applicare il collasso verso l’alto.
Nel caso della relazione fra A, B, C possiamo optare con un collasso verso il basso.
–
15) File 2 pag 6
Innanzitutto notiamo che entrambe le generalizzazioni che compaiono sono totali.
Per quanto riguarda la generalizzazione di Instructor notiamo che non troviamo attributi per le entità figlie e questo
ci porta ad optare per un collasso verso l’alto. Per quanto riguarda Phone lo si vuole far diventare una entità.
comprendiamo che il collasso verso l’alto
Nel caso di Trainee compaiono alcuni attributi nelle entità figlie e quindi
non è la soluzione migliore. Dato che si tratta di una generalizzazione completa possiamo scegliere il collasso
verso il basso oppure possiamo optare per la creazione di altre relazioni. Non è opportuno, in questo caso, andare
a fare un collasso verso l’alto in quanto abbiamo 4 attributi che andrebbero messi in Trainee con molteplicità (0,1).
Nel caso di Trainee optiamo quindi per la creazione di due relazioni 1 a uno, cosa che ci porta a creare 3 relazioni
(nel senso di tabelle) separate.
Quando abbiamo a che fare con una situazione di questo tipo, quando abbiamo due identificatori, dobbiamo dare
⇒
la priorità solo a una delle due in fase di traduzione in questo caso possiamo, ad esempio, scegliere SSN.
11
Matilde Simonini Ingegneria Informatica anno 2022/2023
Avendo la necessità di creare 3 tabelle sarà necessario fare un Join fra queste.
Se gli accessi alle entità figlie sono maggiori rispetto all’entità padre allora, a maggior ragione, dobbiamo preferire
la soluzione che prevede le due relazioni aggiuntive.
Adesso consideriamo eventuali attributi ridondanti. In questo caso Età non risulta ridondante in cui non compare
nessuna dataDiNascita. si potrebbe pensare di rimuovere l’ID esterno per crearne uno proprio di
Per quanto riguarda CourseEdition
CourseEdition.
Se nel testo venisse detto che tra le relazioni PastAttendance e CurrentAttendance non è un utilizzo separato
allora possiamo pensare di fare un’unica relazione che raggruppi le due relazioni.
Lo stesso discorso può essere fatto per le relazioni PastTeaching e CurrentTeaching.
Per quanto riguarda CourseEdition potremmo anche optare per un partizionamento orizzontale al posto di sfruttare
⇒
le due relazioni riguardanti passato e presente dovremmo creare due nuove entità relative a CorsoPassato e
CorsoPresente.
Un istruttore può insegnare al massimo una volta attualmente e nel passato può insegnare da 0 a N volte e questi
due casi li raggruppiamo insieme in una unica relazione Teach che diventa una relazione uno a molti e quindi
dobbiamo cercare di mettere all’interno di CourseEdition qualche informazione che poi, a livello di tabella, ci
permetterà di collegarlo con Instructor.
Nel caso di Qualification abbiamo a che fare con una relazione molti a molti che dobbiamo tradurre in una
relazione (tabella).
Instructor (SSN, Surname, Age, TownBirth)
Phone (NumTel, Instructor)
Class (Time, Room, Date, Code, StartDate, teaching)
Employer (Name, Address, Phone)
Trainee (SSN, )
Employee (SSN, …, Position, Employer)
Professional (SSN)
Course (Code, Name)
CourseEdition (Code, StartDate*, Instructor)
PastEmploy (Employer, Trainee)
PastEmployment (Employer)
Attendance (Trainee, Code, StartDate, Marks)
Qualification (Course, Instructor) 12
Matilde Simonini Ingegneria Informatica anno 2022/2023
*Si noti che nella realtà non vengono lasciati due ID ma vengono accorpati in un solo ID.
all’interno di
Il fatto di aver aggiunto Employer Employee ci serve per collegare le due tabelle.
⇒
Lo stesso discorso vale per quanto riguarda Phone e Instructor abbiamo aggiunto Instructor in Phone per
collegarli. Se in Phone avessimo avuto un solo attributo allora avremmo anche potuto evitare di rappresentarla ma
in questo caso abbiamo a che fare con una relazione molti a molti.
SOLUZIONE
13
Matilde Simonini Ingegneria Informatica anno 2022/2023
–
16) File 2 pag 15
NB: in generale è preferibile il collasso verso il basso. 14
Matilde Simonini Ingegneria Informatica anno 2022/2023
–
17) File 2 pag 16 collasso verso l’alto, dato che
Quella di Docente è una generalizzazione completa, per cui è possibili optare per un
non compare nessun attributo che specializza le due entità figlie.
Nel caso Partecipazione dovremo accorpare le due relationship.
⇒
Possiamo evitare di sfruttare l’ID esterno per EdizioneCorso ne creiamo uno nuovo.
N.part è un attributo derivabile dalla cardinalità delle relazioni con Partecipante e per questo motivo può essere
eliminato. 18) Specifiche per il sistema informativo di una Casa di Edizioni Musicali
15
Matilde Simonini Ingegneria Informatica anno 2022/2023
SCHEMA E-R
Tra città e luogo possiamo optare per un collasso verso l’alto. Citttà non ha attributi particolari ma ha una relazione
di appartenenza e dobbiamo considerare che la cardinalità min