Table of Contents
Tema:
Dato il seguente schema relazionale R❬{A,B,C,D,E,F,G,H}, {DHC→AG, ED→C,
BD→EF, C→E}❭
- dare una copertura canonica;
- dare almeno una chiave;
- dire se esistono almeno due chiavi;
- dire se lo schema è in 3NF (giustificando la risposta), e se non lo è trasformarlo in 3NF specificando gli schemi delle relazioni risultanti.
Nota: il tema è stato sviluppato con la parte teorica qui: https://diario.softml.it/su-chiavi-superchiavi-e-terza-forma-normale/
Sviluppo:
1) calcolo le chiusure
- DHC+ = {CDH}
- DHC+ = {ACDGH}
- DHC+ = {ACDEGH} (fine)
- ED+ = {DE}
- ED+ = {CDE} (fine)
- BD+ = {BD}
- BD+ = {BDEF}
- BD+ = {BCDEF} (fine)
- C+ = {C}
- C+ = {CE} (fine)
Nessuna è superchiave.
2) espando la parte destra
DHC→G
DHC→A
ED→C
BD→E
BD→F
C→E
3) semplifico, se possibile, la parte sinistra
Siccome E è determinata da BD, nella dipendenza funzionale ED→C la D è ridondante e la posso togliere.
Calcoliamo la chiusura di BD per prova:
- BD+ = {BD}
- BD+ = {BDEF}
- BD+ = {BCDEF} (fine)
Dal momento che la DF non è cambiata, abbiamo la prova che possiamo toglierla.
4) creo le relazioni in 3NF:
R1 = ❬{ACDGH}, {DHC→AG}❭
R2 = ❬{CE}, {E→C}❭
R3 = ❬{BDEF}, {BD→EF}❭
R4 = ❬{C}, {C→E}❭
posso accorpare la 2 e la 4: R2 = ❬{CE}, {E→C, C→E}❭
5) verifico di avere una chiave in una relazione o ne creo una nuova
dal punto 1 capisco che non ho una chiave.
Sicuramente i termini che compaiono solo a sinistra faranno parte della chiave. Proviamo a calcolare la chiusura di questa:
- BDH+ = {BDH}
- BDH+ = {BDEFH}
- BDH+ = {BCDEFH}
- BDH+ = {ABCDEFGH} (fine)
La situazione finale quindi è:
R1 = ❬{ACDGH}, {DHC→AG}❭
R2 = ❬{CE}, {E→C, C→E}❭
R3 = ❬{BDEF}, {BD→EF}❭
R4 = ❬{BDH}❭ *chiave
Soluzione
- dare una copertura canonica
Vedi sopra.
- dare almeno una chiave
BDH
- dire se esistono almeno due chiavi
No, esiste solo la chiave BDH, poiché corrisponde esattamente all'insieme di attributi esclusivamente determinanti (presenti solo a sinistra)
- dire se lo schema è in 3NF (giustificando la risposta), e se non lo è trasformarlo in 3NF specificando gli schemi delle relazioni risultanti.
Lo schema non è in 3NF perché nessuna delle relazioni contiene la chiave.