Compito 27/05/2014 - Esercizio C
Tema:
Dato il seguente schema relazionale R❬{A,B,C,D,E,F,G}, {AB→EG, EF→DA, B→C, CB→A}❭
- 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
AB+ = {AB} (banale)
AB+ = {ABEG} (per 1)
AB+ = {ABCEG} (per 3 - fine)
EF+ = {EF} (banale)
EF+ = {ADEF} (per 2 - fine)
B+ = {B} (banale)
B+ = {BC} (per 3)
B+ = {ABC} (per 4)
B+ = {ABCEG} (per 1 - fine)
CB+ = {ABCEG} (come B+)
2) espando la parte destra
AB→E
AB→G
EF→A
EF→D
B→C
BC→A
3) semplifico, se possibile, la parte sinistra
Siccome B→C, BC→A si può riscrivere come C→A.
Siccome B→C e C→A, AB→E e AB→G si può riscrivere come B→E e B→G.
B→E
B→G
EF→A
EF→D
B→C
C→A
4) creo le relazioni in 3NF:
R1 = ❬{A,B,C,E,G}, {B→ACEG}❭
R2 = ❬{A,D,E,F}, {EF→AD}❭
5) verifico di avere una chiave in una relazione o ne creo una nuova
dal punto 1 capisco che non ho una chiave.
BF sono attributi presenti solo a sinistra (determinanti), quindi provo a verificare se questo insieme fa da chiave.
BF+ = {BF} (banale)
BF+ = {BEF}
BF+ = {BEFG}
BF+ = {ABEFG}
BF+ = {ABDEFG}
BF+ = {ABCDEFG} (contiene tutti gli attributi quindi è chiave)
Creo una relazione contenente la chiave
R3 = ❬{B,F}❭
Compito 09/09/2014 - Esercizio C
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.
Facile da usare / cap. 6 – Roberto Polillo
http://www.rpolillo.it/libri/facile-da-usare/
Mini disclaimer: questi appunti non sono una recensione, non sono un riassunto, non rappresentano una valutazione del libro. Sono gli elementi che soggettivamente (cioè per me) sono da appuntarsi. Alcuni elementi, magari molto importanti, ma per me noti, potrebbero essere tralasciati. Quindi, cliccate sul link qui sopra, che fate prima: la licenza permette anche una lettura interessante senza spendere soldi.
Ingegneria del software
Mi appunto questa frase, che "smonta" il modello a cascata di sviluppo del software:
Ogni nuovo strumento cambia i bisogni del suo utilizzatore e genera nuovi bisogni, che suggeriscono modifiche non previste allo strumento stesso.
In un certo senso questa frase ricalca il principio di Peter, secondo cui - in maniera un po' pessimistica - un sistema sarà caricato sempre di più finché non smette di funzionare bene.
"Dritte" sugli integrali
L'integrale è l'operazione opposta alla derivata.
In pratica, se f'(x) è la derivata di f(x), allora f(x) è l'integrale di f'(x).
Keep reading →
Su chiavi, superchiavi e terza forma normale
Relazione
Una relazione è un insieme di attributi legati tra loro da dipendenze funzionali.
Dipendenza funzionale
La dipendenza funzionale implica che ci siano un determinante e un determinato. Se il determinante è uguale in due tuple, anche il determinato deve essere uguale.
Esempio: il codice fiscale determina il numero di telefono, significa che se in due righe contengono lo stesso CF, anche il numero di telefono è uguale.
Chiusura
Combinando più DF è possibile determinare anche le dipendenze non esplicite.
Esempio: R❬(A, B, C), {A→B, B→C}❭ significa "la relazione R ha attributi A, B, C e le dipendenze funzionali A determina B e B determina C. È evidente che A determina - sia pure in maniera indiretta - anche C.
La chiusura di un attributo o di un insieme di attributi rende espliciti tutti gli attributi che sono ricavabili esplicitamente o indirettamente. Si indica con un piccolo segno più dopo l'elenco degli attributi.
Esempio: R❬(A, B, C, D, E), {AB→B, BCD→DE, E→ABCD}❭
- AB+ = {AB}
- con la parte destra della chiusura, quali altri attributi posso determinare? Nessuno, quindi mi fermo.
- BCD+ = {BCD}
- Con BCD posso determinare DE (ma D ce l'ho già), quindi BCD+ = {BCDE}
- Con BCDE posso determinare ABCD, quindi BCD+ = {ABCDE}
- BCD è una superchiave
- E+ = {E}
- E+ = {ABCDE}
- E è una superchiave
Superchiave
Una superchiave è un insieme di attributi che determinano tutti gli attributi.
Chiave
Una chiave è una superchiave minima, cioè una chiave a cui non posso togliere alcun attributo mantenendola chiave.
Esempio: R❬(A, B, C, D, E), {AB→B, BCD→DE, E→ABCD}❭
ABCD è una superchiave, perché posso determinare tutti gli attributi con questi quattro.
Però se tolgo A ottengo comunque una superchiave, quindi ABCD non è una chiave.
BCD è una superchiave solo se mantengo tutti e tre gli attributi (potrei provarlo calcolando la chiusura di BC, CD e BD e vedendo che non copro tutto l'insieme di attributi), quindi è una chiave.
Terza forma normale (solo algoritmo)
Per comodità mi riferirò al determinante come "parte sinistra" e al determinato come "parte destra", quindi per es. BCD→DE, dove BCD è il determinante e DE il determinato, mi riferirò a BCD chiamandolo "sinistra" e DE con "destra".
- copertura canonica
- semplifico la parte destra
- verifico se posso eliminare attributi a sinistra
- verifico se ci sono DF comprese all'interno di altre DF
- semplifico le DF: se la parte sinistra è identica, raggruppo
- a questo punto creo tante relazioni quante sono le DF
- se una relazione include tutti gli attributi di un'altra, le unisco (massimo comune tra gli attributi e riporto tutte le DF)
- ci sono chiavi di R nelle relazioni che ho creato?
- gli attributi che stanno solo a sinistra sono sicuramente parte di una chiave
- se in nessuna delle relazioni è presente una chiave di R, allora aggiungo un attributo e provo a vedere se così diventa una chiave. Se sì, creo un'ulteriore relazione contenente la chiave
Esempio
R❬(A,B,C,D,E,F,G,H), {DHC→AG, ED→C, BD→EF, C→E}❭
Calcolo delle chiusure:
DHC+
- DHC+ = {CDH}
- DHC+ = {ACDGH}
- DHC+ = {ACDEGH}
- fine
CDH non è superchiave
ED+
- ED+ = {DE}
- ED+ = {CDE}
- fine
ED non è superchiave
BD+
- BD+ = {BD}
- BD+ = {BDEF}
- BD+ = {BCDEF}
- fine
BD non è superchiave
C+
- C+ = {C}
- C+ = {CE}
- fine
C non è superchiave
Semplificazione della parte destra
- DHC→AG
- ED→C
- BD→EF
- C→E
Meccanicamente, diventa:
- DHC→A
- DHC→G
- ED→C
- BD→E
- BD→F
- C→E
Semplificazione della parte sinistra
Se BD determina E e ED determina C, forse possiamo dire che la D in ED→C è ridondante.
Proviamo a calcolare la chiusura di BD cambiando ED→C in E→C:
BD+
- BD+ = {BD}
- BD+ = {BDEF}
- BD+ = {BCDEF}
- fine
non è cambiato niente, quindi possiamo semplificare le DF in:
- DHC→A
- DHC→G
- E→C
- BD→E
- BD→F
- C→E
Verifico che non ci siano DF comprese in altre: non ce ne sono
Creo le relazioni in 3nf:
R1: ❬(ACDGH), {CDH→AG}❭
R2: ❬(CE), {E→C, C→E}❭
R3: ❬(BDEF), {BD→EF}❭
In una delle relazioni è presente una chiave? No.
Devo scoprire qual è una chiave e creare una relazione con quella.
BDH compaiono solo a sinistra, quindi fanno sicuramente parte della chiave. Calcoliamo la chiusura di BDH:
BDH+
- BDH+ = {BDH}
- BDH+ = {BDEFH}
- BDH+ = {BCDEFH}
- BDH+ = {ABCDEFGH}
- fine
BDH è chiave.
R4: ❬(BDH)❭
Prospetto di formule trigonometriche notevoli
Somma | Sottrazione | Duplicazione | Bisezione | |
---|---|---|---|---|
Sen | sen(α+β) |
sen(α-β) |
sen(2α) |
sen(α/2) |
senα·cosβ+senβ·cosα | senα·cosβ-senβ·cosα | 2senα·cosα | ||
Cos | cos(α+β) |
cos(α-β) |
cos(2α) |
cos(α/2) |
cosα·cosβ-senα·senβ | cosα·cosβ+senα·senβ | cos2α-sen2α | ||
Tg | tg(α+β) |
tg(α-β) |
tg(2α) |
tg(α/2) |
Prostaferesi | |
---|---|
sen(α)+sen(β) | |
sen(α)-sen(β) | |
cos(α)+cos(β) | |
cos(α)-cos(β) |
Werner | |
---|---|
sen(α)cos(β) | |
sen(α)sen(β) | |
cos(α)cos(β) |
Parametriche | |
---|---|
sen(α) | |
cos(α) |
Prospetto di ripasso
Prospetto vuoto
Derivate banali | |
---|---|
f(x) | f'(x) |
c (costante) | |
x | |
Esponenti e radicali | |
f(x) | f'(x) |
x2 | |
xn | |
√x | |
1/x | |
xn/m | |
ax (a≥0) | |
Logaritmi | |
f(x) | f'(x) |
ln(x) | |
loga(x) | |
Funzioni trigonometriche | |
f(x) | f'(x) |
sen(x) | |
cos(x) | |
tan(x) | |
cot(x) | |
sec(x) | |
csc(x) | |
asin(x) | |
acos(x) | |
Operazioni su funzioni | |
somma: f(x)+g(x) | |
prodotto: f(x)·g(x) | |
esponente: (f(x))n | |
divisione: f(x)/g(x) | |
composta: f(g(x)) oppure f(x) ∘ g(x) | |
inversa: f-1(x) | |
funzione esponente: f(x)g(y) |
Studio di una funzione: 1/(2x^2+3x-5)
Funzione tratta da http://matepratica.tutorando.com
Ancora sulle equazioni razionali di 2+2 grado
Le equazioni nella forma
producono una certa varietà di curve.
Keep reading →