Related
Verifica della Chiave
È possibile determinare se un sotto schema di uno schema razionale è chiave utilizzando il calcolo della Chiusura di un Insieme di Attributi.
Metodo
Prima di tutto dobbiamo dimostrare che il sotto schema è almeno una super-chiave, ovvero che raggiunge tutto .
Per fare ciò calcoliamo la chiusura di e verifichiamo che sia uguale a .
Fatto ciò dobbiamo verificare che si una chiave (minimale) ovvero che non esista un suo sotto insieme che è a sua volta chiave.
Per fare ciò dobbiamo calcolare la chiusura dei sottoinsiemi di e se nessuna di queste è uguale ad abbiamo dimostrate che è una chiave minimale.
Per rendere il procedimento più rapito si possono seguire questi consigli.
Consigli
- Un attributo che non compare mai come dipendente (a destra) sarà sicuramente parte di tutte le chiavi.
- Un attributo che compare sempre come dipendente (a destra) non farà parte delle chiavi.
- Per verificare se una super-chiave è anche una chiave, è necessario controllare che nessuno dei suoi sottoinsiemi sia una chiave. Un modo efficiente per farlo è partire dai sottoinsiemi più grandi e verificare se la loro chiusura contiene tutti gli attributi. Se non è così, si può escludere che il sottoinsieme sia una chiave e non è necessario proseguire con i suoi sottoinsiemi.
Esempio
Schema Relazionale: Dipendesse Funzionali:
Determinare: se è una chiave
Calcoliamo la chiusura di :
- (per )
- (per )
Abbiamo che:
Quindi abbiamo verificando che è una super chiave dimostrando che la chiusura di è uguale ad .
Ora dobbiamo verificare che sia una chiave (minimale), per fare ciò calcoliamo la chiusura dei sui sotto insieme seguendo i consigli visti.
Per prima cosa dobbiamo tenere conte che va sicuramente nella chiave dato che non viene mai determinato e quindi dobbiamo controllare i sottoinsiemi , che sono quelli di cardinalità più grande.
Calcolando la chiusura di entrambi i sottoinsiemi ci accorgiamo che non determinano altri attributi quindi possiamo fermarci qui, è inutile controllare sottoinsiemi di cardinalità inferiore, quindi è chiave.
Trovare tutte le Chiavi
Per trovare tutte le chiavi di un schema relazionale possiamo utilizzare questi consigli per identificare quali attributi fanno e non fanno sicuramente parte delle chiavi. Poi testare tutte le possibili combinazioni di attributi utilizzando il metodo visto precedentemente.
Naturalmente conviene iniziare dalle combinazioni più piccole infatti se trova una chiave, puoi escludere tutte le combinazioni più grandi che includono quella chiave.
Esempio
Continuiamo l’esempio precedente.
Abbiamo detto che
H
deve essere sicuramente parte della chiave e abbiamo già verificato cheH
,AH
,BH
non sono chiavi, proviamo a controllareCH
,DH
,EH
.
CH -→ CHE
quindi non è chiave.DH -→ DH
quindi non è chiaveEH -→ EH
quindi non è chiaveQuindi ci restano da testare soltanto 3 attributi:
H
che abbiamo fisto che fa sicuramente parte della chiave,A
eB
che non abbiamo testato a parte perABH
.Notiamo che
A
eB
da soli non determinano nulla e inoltre non dipendono da altri attributi quindi vanno per forza nella chiave. Questo significa che ABH è l’unica chiave.
Metodo Alternativo
Alternativamente si può cominciare dagli insiemi individuati dalle dipendenze funzionali ovvero:
Data una dipendenza calcoliamo la chiusura dell’insieme di attributi .
Se la chiusura di questo insieme contiene allora è super-chiave, (serve verificare che sia una chiave minimale).
Esempio
Calcolare le chiavi di:
Schema Relazionale: Dipendesse Funzionali:
Quindi in base a quanto detto prima calcoliamo le super-chiavi:
Adesso però dobbiamo verificare che siano chiavi.
Notiamo che:
- , vanno sicuramente nella chiave
- da solo non determina nulla quindi va sicuramente insieme a o .
Quindi proviamo a verificare e :
Quindi e non sono chiavi minimali dato che contengono mentre non è chiave dato che contiene .
Per queste osservazioni, inutile controllare sottoinsiemi di e dato che dobbiamo avere sicuramente D e A non può stare da solo.
Test Unicità
Tecnica che ci permette determinare se uno schema relazionale ha 1 o più chiavi.
Calcoliamo l’intersezione di tutti gli insiemi ottenuti con la formula di prima e chiamiamo l’insieme effettuiamo la chiusura di .
Se il risultato della chiusura è allora è l’unica chiave, altrimenti c’è più di una chiave in .
Esempio
Calcoliamo la chiusura dell’intersezione degli insiemi ottenuti con la formula di prima, nell’esempio precedente:
Quindi essendo sabbiamo che in c’è più di una chiave.