Algoritmi di progettazione di basi di dati relazionali e altre dipendenze

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Algoritmi di progettazione di basi di dati relazionali e altre dipendenze"

Transcript

1 Algoritmi di progettazione di basi di dati relazionali e altre dipendenze Nel Capitolo 11 è stata illustrata la tecnica di progettazione relazionale top-down e i relativi concetti che risultano ampiamente utilizzati negli attuali strumenti commerciali per la progettazione di basi di dati. La procedura prevede la progettazione di uno schema concettuale er o eer e la corrispondente traduzione in relazionale mediante un procedimento come quello descritto nel Capitolo 9. Le chiavi primarie sono assegnate a ogni relazione sulla base delle dipendenze funzionali conosciute. Il processo successivo può essere denominato progettazione relazionale per analisi e prevede che le relazioni definite secondo l approccio precedente o quelle ereditate da file, form o altre sorgenti precedenti vengano analizzate per identificare dipendenze funzionali indesiderate. Tali dipendenze vengono rimosse per mezzo di una successiva procedura di normalizzazione descritta nel Paragrafo 11.3 insieme con le definizioni delle relative forme normali, che permettono il miglioramento progressivo della qualità di progettazione di ogni singola relazione. Nel Paragrafo 11.3 è stato ipotizzato che le chiavi primarie fossero assegnate a ogni singola relazione, mentre nel Paragrafo 11.4 si è presentato un approccio di normalizzazione più generale in cui, per ogni relazione, venivano considerate tutte le chiavi candidate. In questo capitolo partiremo dalla teoria delle forme normali e delle dipendenze funzionali, multivalore e di join con l obiettivo di analizzare tre diversi punti. Per prima cosa discuteremo il concetto di inferenza di nuove dipendenze funzionali da un insieme dato e analizzeremo nuove nozioni tra cui la copertura, la copertura minimale e l equivalenza. Concettualmente è necessario comprendere la semantica degli attributi di una relazione in modo completo e conciso, e questo lo si può fare mediante il concetto di copertura minimale. Discuteremo quindi le proprietà desiderabili dei join non-additivi (senza perdita o lossless) e di conservazione delle dipendenze funzionali. Presenteremo un algoritmo generale per la verifica della non-additività dei join su un insieme di relazioni. In seguito, descriveremo un approccio relativo alla progettazione relazionale per sintesi delle dipendenze funzionali. Si tratta di un approccio bottom-up alla progettazione in cui si ipotizza che le dipendenze funzionali conosciute tra gli insiemi di attributi dell universo del discorso

2 2 Approfondimento Web (UoD, universe of discourse) vengano fornite come input. Introdurremo algoritmi che permettono di ottenere le forme normali auspicabili, cioè la 3NF e la bcnf, e una o entrambe le proprietà di non-additività dei join e di conservazione delle dipendenze funzionali. Sebbene l approccio per sintesi si riveli interessante come approccio formale, esso non viene impiegato nella pratica per la progettazione di basi di dati di grandi dimensioni a causa della difficoltà di fornire tutte le possibili dipendenze funzionali prima di cominciare la progettazione. Invece, seguendo l approccio presentato nel Capitolo 11, le decomposizioni successive e i raffinamenti progressivi dello schema sono più gestibili e possono evolvere nel tempo. L obiettivo finale di questo capitolo è discutere ulteriormente la nozione di dipendenza funzionale multivalore (MVD) introdotta nel Capitolo 11 e trattare brevemente gli altri tipi di dipendenze che sono state identificate. Nel Paragrafo 1 vedremo le regole di inferenza per le unzionali e le useremo per illustrare i concetti di copertura, equivalenza e copertura minimale tra dipendenze funzionali. Nel Paragrafo 2 descriveremo prima le due auspicabili proprietà delle decomposizioni, cioè la proprietà di conservazione delle dipendenze e la proprietà di join senza perdita, entrambe utilizzate dagli algoritmi di progettazione per ottenere delle decomposizioni auspicabili. È bene notare che per le forme normali superiori come la 2NF, la 3NF e la bcnf, non è sufficiente verificare gli schemi di relazione in modo indipendente l uno dall altro. Affinché si possa parlare di uno schema relazionale di buona qualità, le relazioni risultanti devono soddisfare collettivamente queste due ulteriori proprietà. Nel Paragrafo 3 tratteremo lo sviluppo di algoritmi di progettazione relazionale che iniziano con uno schema di relazione molto ampio chiamato relazione universale, ovvero un ipotetica relazione contenente tutti gli attributi di interesse. Questa relazione viene decomposta (o, in altre parole, le dipendenze funzionali date vengono sintetizzate) in relazioni che soddisfano una certa forma normale come la 3NF o la bcnf e che soddisfano anche una o entrambe le proprietà auspicabili. Nel Paragrafo viene introdotto il concetto di dipendenza multivalore (mvd) seguito dalle nozioni di inferenza ed equivalenza applicate alle MVD. Infine, nel Paragrafo 6 completeremo la discussione sulle dipendenze tra i dati introducendo le dipendenze di inclusione e le dipendenze modello. Le dipendenze di inclusione possono rappresentare vincoli di integrità referenziale e vincoli di classe/sottoclasse tra relazioni. Le dipendenze modello sono un modo per rappresentare qualunque vincolo generalizzato sugli attributi. Discuteremo inoltre alcune situazioni in cui, per stabilire e verificare una dipendenza funzionale tra attributi, è necessario definire una procedura o una funzione. Infine, discuteremo brevemente la forma normale dominio-chiave (DKNF, domain-key normal form), considerata la forma normale più generale. 1. Argomenti ulteriori sulle dipendenze funzionali: regole di inferenza, equivalenza e copertura minimale Nel Paragrafo 11.2 (Capitolo 11) abbiamo introdotto il concetto di dipendenza funzionale (DF), l abbiamo illustrata con alcuni esempi e definito una notazione per denotare DF multiple su una singola relazione. Abbiamo identificato e discusso le problematiche

3 Algoritmi di progettazione di basi di dati relazionali e altre dipendenze 3 relative alle dipendenze funzionali nei Paragrafi 11.3 e 11.4, mostrando come queste possono essere eliminate mediante una decomposizione appropriata della relazione. Nel Paragrafo 11.3 questo procedimento è stato descritto come normalizzazione e abbiamo mostrato come ottenere forme normali dalla prima alla terza (da 1NF a 3NF) partendo da chiavi primarie date. Nei Paragrafi 1.4 e 1. abbiamo illustrato alcuni test generalizzati per 2NF, 3NF e BCNF dato un qualunque numero di chiavi candidate in una relazione e abbiamo mostrato come ottenere queste forme normali. Ora torniamo allo studio delle dipendenze funzionali e mostriamo com è possibile inferire nuove dipendenze a partire da un insieme dato, discutendo i concetti di chiusura, equivalenza e copertura minimale che saranno necessari più avanti, quando illustreremo un approccio alla progettazione relazionale per sintesi dato un insieme di DF. Regole di inferenza per dipendenze funzionali Si indichi con F l insieme di dipendenze funzionali specificate sullo schema di relazione R. Generalmente il progettista dello schema specifica le dipendenze funzionali semanticamente evidenti; di solito, però, sussistono molte altre dipendenze funzionali in tutte le istanze di relazione valide che soddisfano le dipendenze in F. Queste altre dipendenze possono essere inferite o dedotte dalle dipendenze funzionali presenti in F. Per esempi tratti dalla vita reale è praticamente impossibile specificare tutte le dipendenze funzionali che possono sussistere per la situazione data. Ad esempio, se ogni dipartimento ha un solo direttore, in modo che N_DIP determina univocamente SSN_ DIRETTORE (N_DIP SSN_DIR) e un Direttore ha un unico numero di telefono chiamato TELEFONO_DIR (SSN_DIR TELEFONO_DIR), queste due dipendenze insieme implicano la dipendenza N_DIP TELEFONO_DIR. Questa è una df inferita e non deve essere esplicitamente dichiarata in aggiunta alle due df date. Formalmente, quindi, è utile definire il concetto di chiusura che comprende tutte le possibili dipendenze deducibili dall insieme F dato. Definizione. Convenzionalmente, l insieme di tutte le dipendenze formato da F e da tutte le dipendenze che possono essere dedotte da F è chiamato chiusura di F ed è indicato con F +. Si supponga ad esempio di specificare il seguente insieme F di dipendenze funzionali ovvie sullo schema di relazione della Figura 11.3(a) (Capitolo 11): F = {SSN {NOME_I, DATA_N, INDIRIZZO, NUMERO_D}, NUMERO_D {NOME_D, SSN_DIR_DIP} } Alcune dipendenze funzionali che possiamo inferire da F sono le seguenti: SSN {NOME_D, SSN_DIR_DIP} SSN SSN NUMERO_D NOME_D Una df X Y è inferita da un insieme di dipendenze F specificate su R se X Y sussiste in ogni stato di relazione r di R; cioè ogni volta che r soddisfa tutte le dipendenze in F, in r sussiste anche X Y. La chiusura F + di F è l insieme di tutte le dipenden-

4 4 Approfondimento Web ze funzionali che possono essere dedotte da F. Per determinare un modo sistematico per inferire dipendenze, occorre trovare un insieme di regole di inferenza che possono essere usate per inferire nuove dipendenze a partire da un insieme dato di dipendenze. Ora si considereranno alcune di queste regole di inferenza. Verrà usata la notazione F = X Y per indicare che la dipendenza funzionale X Y è inferita dall insieme di dipendenze funzionali F. Nella trattazione seguente, quando verranno esaminate le dipendenze funzionali, si userà una notazione abbreviata. Le variabili di attributo verranno concatenate e le virgole omesse per comodità. Perciò la df {X,Y} Z è abbreviata in XY Z, e la df {X,Y,Z} {U,V} è abbreviata in XYZ UV. Le seguenti sei regole, da RI1 a RI6, sono note regole di inferenza per dipendenze funzionali: RI1 (regola riflessiva) 1 : se X $ Y, allora X Y; RI2 (regola di arricchimento) 2 : {X Y} = XZ YZ; RI3 (regola transitiva): {X Y, Y Z} = X Z; RI4 (regola di decomposizione, o di proiezione): {X YZ} = X Y; RI (regola di unione, o additiva): {X Y, X Z} = X YZ; RI6 (regola pseudo-transitiva): {X Y, WY Z} = WX Z. La regola riflessiva (RI1) afferma che un insieme di attributi determina sempre se stesso o uno qualsiasi dei suoi sottoinsiemi, il che è ovvio. Dato che RI1 genera dipendenze che sono sempre vere, tali dipendenze sono dette banali. Formalmente una dipendenza funzionale X Y è banale se X $ Y; altrimenti è non-banale. La regola di arricchimento (RI2) sostiene che aggiungendo lo stesso insieme di attributi alla parte sinistra e alla parte destra di una dipendenza si ottiene un altra dipendenza valida. Secondo la RI3 le dipendenze funzionali sono transitive. La regola di decomposizione (RI4) sostiene che si possono rimuovere attributi dalla parte destra di una dipendenza; l applicazione ripetuta di questa regola può decomporre la df X {A 1, A 2,... A n } nell insieme di dipendenze {X A 1, X A 2,... X A n }. La regola di unione (RI) consente di fare l opposto: è possibile combinare un insieme di dipendenze {X A 1, X A 2,... X A n } nella singola df X {A 1, A 2,... A n }. Un avvertenza importante riguarda l uso di queste regole. Anche se X A e X B implicano X AB per la regola di unione dichiarata precedentemente, X A, e Y B non implica che XY AB. Inoltre XY A non implica necessariamente X A o Y A. Ognuna delle precedenti regole di inferenza può essere dimostrata a partire dalla definizione di dipendenza funzionale, con prova diretta o per assurdo. Una prova per assurdo suppone che la regola non valga e mostra che ciò porta a una contraddizione. Verrà ora dimostrato che le prime tre regole, da RI1 a RI3, sono valide. La seconda prova è per assurdo. 1 La regola riflessiva può anche essere enunciata come X X, ossia ogni insieme di attributi determina funzionalmente se stesso. 2 La regola di arricchimento può anche essere enunciata come {X Y} = XZ Y, ossia l arricchimento degli attributi di parte sinistra di una DF produce un altra DF valida.

5 Algoritmi di progettazione di basi di dati relazionali e altre dipendenze PROVA DI RI1 Si supponga che X $ Y e che esistano due tuple t 1 e t 2 in una certa istanza di relazione r di R tali che t 1 [X] = t 2 [X]. Allora t 1 [Y] = t 2 [Y] perché X $ Y; perciò in r deve valere X Y. PROVA DI RI2 (PER ASSURDO) Si supponga che in un istanza di relazione r di R valga la X Y, ma che non valga la XZ YZ. Devono perciò esistere due tuple t 1 e t 2 in r tali che (1) t 1 [X] = t 2 [X], (2) t 1 [Y] = t 2 [Y], (3) t 1 [XZ] = t 2 [XZ], e (4) t 1 [YZ] t 2 [YZ]. Ciò non è possibile, perché da (1) e (3) si deduce () t 1 [Z] = t 2 [Z], e da (2) e () si deduce (6) t 1 [YZ] = t 2 [YZ], contraddicendo (4). PROVA DI RI3 Si supponga che in una relazione r sussistano sia (1) X Y sia (2) Y Z. Allora, per ogni coppia di tuple t 1 e t 2 in r tali che t 1 [X] = t 2 [X], si deve avere (3) t 1 [Y] = t 2 [Y], dall ipotesi (1); perciò occorre anche avere (4) t 1 [Z] = t 2 [Z], dalla (3) e dall ipotesi (2); quindi in r deve valere la X Z. Usando argomentazioni simili è possibile provare le regole di inferenza da RI4 a RI6 e ogni altra regola di inferenza valida. Però un modo più semplice per dimostrare che una regola di inferenza per dipendenze funzionali è valida consiste nel provarla usando regole di inferenza che sono già state dimostrate valide. Ad esempio si può provare le regole da RI4 a RI6 usando le regole da RI1 a RI3 come segue. PROVA DI RI4 (USANDO DA RI1 A RI3) 1. X YZ (data). 2. YZ Y (usando RI1 e sapendo che YZ $ Y). 3. X Y (usando RI3 su 1 e 2). PROVA DI RI (USANDO DA RI1 A RI3) 1. X Y (data). 2. X Z (data). 3. X XY (usando RI2 su 1 arricchendo con X; si noti che XX = X). 4. XY YZ (usando RI2 su 2 arricchendo con Y).. X YZ (usando RI3 su 3 e 4). PROVA DI RI6 (USANDO DA RI1 A RI3) 1. X Y (data). 2. WY Z (data). 3. WX WY (usando RI2 su 1 arricchendo con W). 4. WX Z (usando RI3 su 3 e 2). È stato dimostrato da Armstrong (1974) che le regole di inferenza da RI1 a RI3 sono corrette e complete. Per corrette si intende che, dato un insieme di dipendenze funzio-

6 6 Approfondimento Web nali F specificate su uno schema di relazione R, tutte le dipendenze che è possibile inferire da F usando le regole da RI1 a RI3 sussistono in ogni stato di relazione r di R che soddisfa le dipendenze in F. Per complete si intende che, usando ripetutamente le regole da RI1 a RI3 per inferire dipendenze finché non se ne possono più dedurre, si ottiene come risultato l insieme completo di tutte le possibili dipendenze che possono essere dedotte da F. In altre parole, l insieme di dipendenze F +, che è stato detto chiusura di F, può essere determinato da F usando solo le regole di inferenza da RI1 a RI3. Le regole di inferenza da RI1 a RI3 sono note come regole di inferenza di Armstrong. 3 Generalmente i progettisti di basi di dati specificano dapprima l insieme F delle dipendenze funzionali che possono essere facilmente determinate dalla semantica degli attributi di R; poi usano RI1, RI2 e RI3 per inferire ulteriori dipendenze funzionali, le quali saranno pure valide su R. Un modo sistematico per determinare queste dipendenze funzionali aggiuntive è quello di determinare prima di tutto ogni insieme X di attributi che appare come parte sinistra di qualche dipendenza funzionale in F, e poi di determinare l insieme di tutti gli attributi che sono dipendenti da X. Definizione. Per ogni insieme X di attributi di questo tipo, si calcola l insieme X + di attributi che sono determinati funzionalmente da X sulla base di F; X + è detto chiusura di X rispetto a F. Per calcolare X + si può usare l Algoritmo 1. Algoritmo 1. Determinazione di X +, chiusura di X rispetto a F. X + := X; repeat oldx + := X + ; for ogni dipendenza funzionale Y Z in F do if X + $ Y then X + := X + Z; until (X + = oldx + ); Tale algoritmo inizia ponendo X + uguale a tutti gli attributi in X. Da RI1 è noto che tutti questi attributi sono funzionalmente dipendenti da X. Servendosi delle regole di inferenza RI3 e RI4 si aggiungono attributi a X +, usando tutte le dipendenze funzionali in F. Si continuano a considerare tutte le dipendenze in F (il ciclo repeat) finché non vengono più aggiunti attributi a X + durante un ciclo completo (il ciclo for) sulle dipendenze in F. Ad esempio si consideri lo schema di relazione IMP_PROG della Figura 11.3(b) (Capitolo 11); dalla semantica degli attributi è possibile specificare il seguente insieme F di dipendenze funzionali che devono valere su IMP_PROG: F = { SSN NOME_I, NUMERO_P { NOME_P, SEDE_P}, { SSN, NUMERO_P} ORE} 3 A dire il vero, sono note come assiomi di Armstrong. Però, in senso matematico stretto, gli assiomi (fatti dati) sono le dipendenze funzionali in F, dato che si suppone che esse siano corrette, mentre le regole da RI1 a RI3 sono le regole di inferenza per inferire nuove dipendenze funzionali (nuovi fatti).

7 Algoritmi di progettazione di basi di dati relazionali e altre dipendenze 7 Usando l Algoritmo 1 si possono calcolare i seguenti insiemi chiusura rispetto a F: { SSN} + = { SSN, NOME_I} { NUMERO_P} + = { NUMERO_P, NOME_P, SEDE_P} { SSN, NUMERO_P} + = { SSN, NUMERO_P, NOME_I, NOME_P, SEDE_P, ORE} Intuitivamente, l insieme di attributi nella parte destra di ogni riga rappresenta tutti gli attributi che dipendono funzionalmente dall insieme di attributi nella parte sinistra, in base all insieme F dato. Equivalenza di insiemi di dipendenze funzionali Vediamo ora l equivalenza di due insiemi di dipendenze funzionali. Innanzitutto diamo alcune definizioni preliminari. Definizione. Si dice che un insieme F di dipendenze funzionali copre un altro insieme E di dipendenze funzionali, se ogni df in E è presente anche in F +, cioè se ogni dipendenza in E può essere inferita a partire da F; in alternativa possiamo dire che E è coperto da F. Definizione. Due insiemi E e F di dipendenze funzionali sono equivalenti se E + = F +. Perciò l equivalenza implica che ogni df in E possa essere inferita da F, e ogni df in F possa essere inferita da E; ossia E è equivalente a F se sussistono entrambe le condizioni E copre F e F copre E. Si può determinare se F copre E calcolando X + rispetto a F per ogni df X Y in E, e quindi verificando se questo X + comprende gli attributi presenti in Y. Se è così per ogni df in E, allora F copre E. Si determina se E e F sono equivalenti verificando se E copre F e F copre E. Insiemi minimali di dipendenze funzionali Informalmente, una copertura minimale di un insieme E di dipendenze funzionali è un insieme F di dipendenze funzionali che soddisfa la proprietà che ogni dipendenza in E è presente nella chiusura F + di F. Inoltre questa proprietà si perde rimuovendo una dipendenza dall insieme F; F non deve quindi contenere alcuna ridondanza e le dipendenze in E devono essere in forma standard. Per soddisfare queste proprietà, possiamo stabilire formalmente che un insieme F di dipendenze funzionali è minimale se soddisfa le seguenti condizioni: 1. ogni dipendenza presente in F ha come parte destra un solo attributo; 2. non è mai possibile sostituire una dipendenza X A di F con una dipendenza Y A, dove Y è un sottoinsieme proprio di X, e avere ancora un insieme di dipendenze equivalente a F; 3. non è mai possibile rimuovere una dipendenza da F e avere ancora un insieme di dipendenze equivalente a F.

8 8 Approfondimento Web Si può pensare a un insieme minimale di dipendenze come a un insieme di dipendenze in una forma standard o canonica e senza ridondanze. La condizione 1 assicura che ogni dipendenza si presenti in una forma canonica con un solo attributo nella parte destra. 4 Le condizioni 2 e 3 assicurano che non ci siano ridondanze nelle dipendenze o per la presenza di attributi ridondanti nella parte sinistra di una dipendenza (condizione 2) o per la presenza di una dipendenza che può essere inferita dalle altre df in F (condizione 3). Definizione. Una copertura minimale di un insieme E di dipendenze funzionali è un insieme minimale F di dipendenze che è equivalente a E. Possono esserci più coperture minimali per un dato insieme di dipendenze funzionali. Usando l Algoritmo 2 si può sempre trovare almeno una copertura minimale F per qualunque insieme E di dipendenze. Se parecchi insiemi di df risultano essere coperture minimali di E sulla base della definizione precedente, è comune usare ulteriori criteri per la minimalità. Ad esempio si può scegliere l insieme minimale sulla base del numero minimo di dipendenze oppure sulla base della lunghezza totale plain (la lunghezza totale di un insieme di dipendenze viene calcolata concatenando le dipendenze e trattandole come una lunga stringa di caratteri). Algoritmo 2. Ricerca di una copertura minimale F per un insieme E di dipendenze funzionali. 1. Si imposti F := E. 2. Si sostituisca ogni dipendenza funzionale X { A 1, A 2,..., A n } in F con le n dipendenze funzionali X A 1, X A 2,..., X A n. 3. Per ogni dipendenza funzionale X A in F per ogni attributo B che è un elemento di X se { {F {X A} } { (X {B} ) A} } è equivalente a F, allora si sostituisca X A con (X {B} ) A in F. 4. Per ogni dipendenza funzionale rimanente X A in F se {F {X A} } è equivalente a F, allora si rimuova X A da F. Illustriamo il precedente algoritmo con il seguente esempio. Sia dato E : {B A, D A, AB D} come insieme di dipendenze funzionali. Dobbiamo trovare la copertura minimale di E. Tutte le precedenti dipendenze sono in forma canonica; quindi il primo passo dell Algoritmo 2 è completato e possiamo procedere con il secondo. Nel secondo passo dobbiamo determinare se AB D contiene attributi ridondanti nella parte sinistra, cioè se la dipendenza è sostituibile da B D o A D. Poiché B A, aggiungendo B da entrambe le parti della dipendenza (RI2), otteniamo BB AB, cioè B AB (i). Tuttavia abbiamo che AB D come stabilito in (ii). 4 Questa è la forma standard per semplificare le condizioni e gli algoritmi che garantiscono che non esiste alcuna ridondanza in F. Usando la regola di inferenza RI4, si può convertire una singola dipendenza con più attributi nella parte destra in un insieme di dipendenze con singoli attributi nella parte destra.

9 Algoritmi di progettazione di basi di dati relazionali e altre dipendenze 9 Per la regola transitiva (RI3), da (i) e (ii) otteniamo B D. Dunque possiamo sostituire AB D con B D. In questo modo, otteniamo un insieme Eʹ equivalente a quello E di partenza, così composto Eʹ : {B A, D A, B D}. Poiché tutte le dipendenze funzionali hanno un singolo attributo nella parte sinistra non sono possibili ulteriori riduzioni nel secondo passo. Nel passo 3 verifichiamo la presenza in Eʹ di eventuali dipendenze funzionali ridondanti. Applicando la regola transitiva su B D e D A deriviamo B A. Dunque B A è ridondante in Eʹ e può essere eliminata. Abbiamo quindi che la copertura minima di E è {B D, D A}. 2. Proprietà delle decomposizioni relazionali Consideriamo il procedimento di decomposizione che è stato utilizzato in tutto il Capitolo 11 per decomporre relazioni ed eliminare dipendenze indesiderate ottenendo così forme normali superiori. Decomposizione delle relazioni e insufficienza delle forme normali Gli algoritmi di progettazione di basi di dati relazionali che presenteremo qui prendono inizio da un unico schema di relazione universale R = {A 1, A 2,..., A n } contenente tutti gli attributi della base di dati. Si farà implicitamente l ipotesi di relazione universale, la quale stabilisce che ogni nome di attributo sia unico. L insieme F di dipendenze funzionali che deve sussistere sugli attributi di R è specificato dai progettisti della base di dati ed è fornito agli algoritmi di progettazione. Basandosi sulle dipendenze funzionali, gli algoritmi decompongono lo schema di relazione universale R in un insieme di schemi di relazione D = {R 1, R 2,..., R m } che diventerà lo schema della base di dati relazionale; D è detto decomposizione di R. È necessario assicurarsi che ogni attributo presente in R sia anche presente in almeno uno schema di relazione R i nella decomposizione, così che non ci siano attributi persi ; formalmente si ha m i=1 R i = R Questa condizione è detta condizione di conservazione degli attributi di una decomposizione. Un altro obiettivo è quello che ogni singola relazione R i nella decomposizione D sia in bcnf o in 3NF. Questa condizione non è però sufficiente a garantire di per sé una buona progettazione di basi di dati. Occorre infatti considerare la decomposizione nel complesso, oltre a esaminare le singole relazioni. Per illustrare questo punto, si consideri la relazione IMP_SEDI(NOME_I, SEDE_P) della Figura 11. (Capitolo 11), che è sia in

10 10 Approfondimento Web 3NF sia in bcnf. In realtà ogni schema di relazione con due soli attributi è automaticamente in bcnf. Anche se IMP_SEDI è in bcnf, essa dà comunque origine a tuple spurie quando viene unita tramite join con IMP_PROG1(SSN, NUMERO_P, ORE, NOME_P, SEDE_P), che non è in bcnf (si veda il risultato del join naturale nella Figura 11.6). IMP_SEDI rappresenta perciò uno schema di relazione particolarmente mal definito, a causa della sua semantica contorta in cui SEDE_P fornisce la sede di uno dei progetti sui quali lavora un impiegato. L unione tramite join di IMP_SEDI con PROGETTO(NOME_P, NUMERO_P, SEDE_P, NUM_D) della Figura 11.2 che è in bcnf dà pure origine a tuple spurie. Ciò evidenzia la necessità di altri criteri che, insieme con le condizioni di 3NF o bcnf, evitino progetti di cattiva qualità di questo tipo. Nei tre sottoparagrafi seguenti verranno esaminate le condizioni aggiuntive che devono sussistere su una decomposizione D considerata nel suo insieme. Proprietà di conservazione delle dipendenze di una decomposizione Sarebbe utile che ogni dipendenza funzionale X Y specificata in F apparisse direttamente in uno degli schemi di relazione R i della decomposizione D, oppure potesse essere inferita dalle dipendenze presenti in qualche R i. Informalmente, quella enunciata è la condizione di conservazione delle dipendenze: si desidera conservare le dipendenze perché ogni dipendenza in F rappresenta un vincolo sulla base di dati. Se una delle dipendenze non è rappresentata in una singola relazione R i della decomposizione, non è possibile imporre questo vincolo considerando una sola relazione; occorre piuttosto unire tramite join due o più relazioni della decomposizione e quindi verificare che nel risultato dell operazione di JOIN sussistano le dipendenze funzionali. Non è necessario che le dipendenze specificate in F si presentino esattamente nelle singole relazioni della decomposizione D. È sufficiente che l unione delle dipendenze che sussistono sulle singole relazioni in D siano equivalenti a F. Si darà ora definizione formale di questi concetti. Definizione. Dato un insieme di dipendenze F su R, la proiezione di F su R i, denotata con p Ri (F), dove R i è un sottoinsieme di R, è l insieme di dipendenze X Y di F + tali che gli attributi di X Y siano tutti contenuti in R i. Perciò la proiezione di F su ogni schema di relazione R i della decomposizione D è l insieme delle dipendenze funzionali in F +, chiusura di F, tali che tutti i loro attributi di parte sinistra e di parte destra siano in R i. Si dirà che una decomposizione D = {R 1, R 2,..., R m } di R conserva le dipendenze rispetto a F se l unione delle proiezioni di F su ogni R i in D è equivalente a F; cioè ((p R1 (F))... (p Rm (F))) + = F + Se una decomposizione non conserva le dipendenze, qualche dipendenza viene persa nella decomposizione. Come detto prima, per verificare se una dipendenza persa sussiste comunque, occorre effettuare il JOIN di due o più relazioni presenti nella decomposizione, fino a ottenere una relazione che presenti tutti gli attributi di parte sinistra e di parte Il lettore è invitato a dimostrare, per esercizio, questa affermazione.

11 Algoritmi di progettazione di basi di dati relazionali e altre dipendenze 11 destra della dipendenza persa, e quindi verificare se nel risultato del JOIN sussiste la dipendenza, il che si presenta come un opzione poco pratica. Un esempio di decomposizione che non conserva le dipendenze è presentato nella Figura 11.12(a), in cui la dipendenza funzionale DF2 è persa quando LOTTI1A viene decomposta in {LOTTI1AX, LOTTI1AY}. Le decomposizioni della Figura 11.11, invece, conservano le dipendenze. Analogamente, per l esempio nella Figura 11.13, indipendentemente da quale delle tre decomposizioni mostrate venga scelta per la relazione INSEGNA(STUDENTE, INSEGNAMENTO, DOCENTE), una o entrambe le dipendenze originariamente presenti vengono perse. Si enuncia qui una proposizione relativa a tale proprietà senza darne la dimostrazione. Proposizione 1. È sempre possibile trovare una decomposizione D che conserva le dipendenze rispetto a F e tale che ogni relazione R i di D sia in 3NF. Più avanti descriveremo l Algoritmo 3, che crea, a partire da un insieme di dipendenze funzionali F, una decomposizione D = {R 1, R 2,..., R m } di una relazione universale R, che conserva le dipendenze e tale che ogni R i di D sia in 3NF. Proprietà di join non-additivo (senza perdita) di una decomposizione Un altra proprietà che una decomposizione D deve soddisfare è quella di join senza perdita o join non-additivo, che assicura che non vengano generate tuple spurie quando alle relazioni della decomposizione viene applicata un operazione di JOIN NATURALE. Il problema è già stato illustrato nel Sottoparagrafo (Capitolo 11) con l esempio delle Figure 11. e Dato che si tratta della proprietà di una decomposizione di schemi di relazione, la condizione di assenza di tuple spurie deve sussistere per ogni stato valido di relazione, cioè per ogni stato di relazione che soddisfa le dipendenze funzionali in F. La proprietà di join senza perdita è perciò sempre definita rispetto a un insieme specifico F di dipendenze. Definizione. Formalmente, una decomposizione D = {R 1, R 2,..., R m } di R soddisfa la proprietà di join senza perdita (non-additivo) rispetto all insieme di dipendenze F di R se, per ogni stato di relazione r di R che soddisfa F, sussiste quanto segue, dove * è il JOIN NATURALE di tutte le relazioni in D: *(p R1 (r),..., p Rm (r)) = r La parola perdita in senza perdita si riferisce a perdita di informazione, non a perdita di tuple. Se una decomposizione non soddisfa la proprietà di join senza perdita, è possibile che si presentino tuple spurie aggiuntive, dopo che sono state eseguite le operazioni di PROIEZIONE (p) e di JOIN NATURALE (*); queste tuple aggiuntive rappresentano un informazione errata. Si preferisce qui la locuzione join non-additivo perché essa descrive più fedelmente la situazione. Sebbene il termine join senza perdita sia molto popolare in letteratura, d ora in avanti useremo il termine join non-additivo, poiché risulta auto-esplicativo e non ambiguo. La proprietà di join non-additivo assicura che

12 12 Approfondimento Web non verranno generate tuple spurie nel risultato dell esecuzione delle operazioni di PRO- IEZIONE e JOIN. A volte potremo comunque usare il termine schema lossy (con perdite) per indicare uno schema contenente perdite di informazione (Algoritmo 4). Ovviamente la decomposizione di IMP_PROG(SSN, NUMERO_P, ORE, NOME_I, NOME_P, SEDE_P), della Figura 11.3, in IMP_SEDI(NOME_I, SEDE_P) e IMP_ PROG1(SSN, NUMERO_P, ORE, NOME_P, SEDE_P), presente nella Figura 11., non soddisfa la proprietà di join non-additivo, come illustrato nella Figura Per verificare se una decomposizione D di una relazione in n relazioni soddisfa la proprietà di join non-additivo rispetto a un insieme F di dipendenze funzionali date per la relazione useremo una procedura generale, presentata nel seguente Algoritmo 3. Come vedremo più avanti, per verificare la proprietà di join senza perdita nel caso di decomposizioni binarie si può usare invece un test più semplice. Algoritmo 3 Verifica della proprietà di join non-additivo. Input. Una relazione universale R, una decomposizione D = {R 1, R 2,..., R m } di R, e un insieme F di dipendenze funzionali. Nota: al termine di alcuni passi sono riportati commenti esplicativi nel seguente formato: (* commento *). 1. Si costruisca una matrice iniziale S con una riga i per ogni relazione R i di D, e una colonna j per ogni attributo A j di R. 2. Si ponga S(i, j) := b ij per ogni elemento della matrice. (* ogni b ij è un simbolo distinto associato agli indici (i, j) *) 3. Per ogni riga i che rappresenta lo schema di relazione R i { per ogni colonna j che rappresenta l attributo A j { se (la relazione R i contiene l attributo A j ) allora si ponga S(i, j) := a J ;} ;}; (* ogni a j è un simbolo distinto associato all indice (j) *) 4. Si ripeta il ciclo seguente finché l esecuzione di un ciclo completo non dà luogo ad alcun cambiamento in S { per ogni dipendenza funzionale X Y in F { per tutte le righe di S che presentano gli stessi simboli nelle colonne corrispondenti ad attributi presenti in X { si faccia sì che i simboli in ogni colonna corrispondente a un attributo di Y siano gli stessi per tutte queste righe nel modo seguente: se una riga presenta un simbolo a in quella colonna, allora si pongano le altre righe uguali, nella colonna, allo stesso simbolo a. Se non esiste alcun simbolo a per l attributo in alcuna riga, si scelga per l attributo uno dei simboli b presenti in una delle righe e si ponga nelle altre righe lo stesso simbolo b per quella colonna;} ;} ;} ;. Se una riga è costituita per intero di simboli a, allora la decomposizione ha la proprietà di join non-additivo; altrimenti non ha questa proprietà. Data una relazione R che è decomposta in un certo numero di relazioni R 1,R 2,..., R m, l Algoritmo 3 definisce la matrice S che rappresenta uno stato di relazione r di R. La riga i in S rappresenta una tupla t i (relativa alla relazione R i ) che ha simboli a nelle colonne corrispondenti agli attributi di R i e simboli b nelle altre colonne. L algoritmo

13 Algoritmi di progettazione di basi di dati relazionali e altre dipendenze 13 quindi trasforma le righe di questa matrice (durante il ciclo del passo 4) in modo tale che esse rappresentino tuple che soddisfano tutte le dipendenze funzionali in F. Al termine del passo 4, ogni coppia di righe in S che rappresentano due tuple di r che si accordano sui valori degli attributi di parte sinistra X di una dipendenza funzionale X Y di F, si accorderanno anche sui valori degli attributi di parte destra Y. Si può dimostrare che se, dopo aver applicato il ciclo del passo 4, una qualsiasi riga di S termina con tutti simboli a, allora la decomposizione D soddisfa la proprietà di join non-additivo rispetto a F. Se, d altro lato, nessuna riga ha alla fine tutti simboli a, allora D non soddisfa la proprietà di join non-additivo. In quest ultimo caso lo stato di relazione r rappresentato da S alla fine dell algoritmo sarà un esempio di stato di relazione r di R che soddisfa le dipendenze in F, ma non soddisfa la condizione di join non-additivo; perciò questa relazione serve come controesempio che p20rova che D non ha la proprietà di join nonadditivo rispetto a F. Si noti che i simboli a e b alla fine dell algoritmo non hanno alcun significato particolare. La Figura 1(a) mostra come si applica l Algoritmo 3 alla decomposizione dello schema di relazione IMP_PROG della Figura 11.3(b) nei due schemi di relazione IMP_PROG1 e IMP_SEDI della Figura 11.(a). Il ciclo al passo 4 dell algoritmo non può cambiare alcun simbolo b in un simbolo a ; perciò la matrice S risultante non ha una riga di soli simboli a, e quindi la decomposizione non gode della proprietà di join non-additivo. La Figura 1(b) mostra un altra decomposizione di IMP_PROG (in IMP, PROGETTO e LAVORA_SU) che gode della proprietà di join non-additivo, e la Figura 1(c) mostra come si può applicare l algoritmo a questa decomposizione. Una volta che una riga consista solo di simboli a, si sa che la decomposizione gode della proprietà di join non-additivo, ed è possibile smettere di applicare le dipendenze funzionali (passo 4 dell algoritmo) alla matrice S. Verifica della proprietà di join non-additivo su decomposizioni binarie L Algoritmo 3 ci consente di controllare se una specifica decomposizione D in n relazioni soddisfa la proprietà di join non-additivo rispetto a un insieme F di dipendenze funzionali. Esiste un caso speciale di decomposizione chiamata decomposizione binaria, che consiste nella decomposizione di una relazione R in due relazioni. A questo proposito vedremo un test più semplice da applicare dell Algoritmo 3, ma che è limitato alle sole decomposizioni binarie. Proprietà NJB (test di join non-additivo per decomposizioni binarie) Una decomposizione D = {R 1, R 2 } di R soddisfa la proprietà di join non-additivo rispetto a un insieme di dipendenze funzionali F di R se e solo se la DF ((R 1 R 2 ) (R 1 R 2 )) è in F +, oppure la DF ((R 1 R 2 ) (R 2 R 1 )) è in F +. Si verifichi come questa proprietà sussista nei nostri esempi informali di normalizzazione successiva dei Paragrafi 11.3 e 11.4 (Capitolo 11). Nel Paragrafo 11. abbiamo decomposto LOTTI1A in due relazioni BCNF chiamate LOTTI1AX e LOTTI1AY e abbiamo decomposto la relazione INSEGNA della Figura 11.14

14 14 Approfondimento Web (a) R={SSN, NOME_I, NUMERO_P, NOME_P, SEDE_P, ORE} R 1 =IMP_SEDI={NOME_I, SEDE_P} R 2 =IMP_PROG1={SSN, NUMERO_P, ORE, NOME_P, SEDE_P} D={R 1, R 2 } F={SSN NOME_I;NUMERO_P {NOME_P, SEDE_P}; {SSN,NUMERO_P} ORE} SSN NOME_I NUMERO_P NOME_P SEDE_P ORE R 1 b a b b a b R 2 a b a a a a (nessun cambiamento alla matrice dopo aver applicato le dipendenze funzionali) (b) IMP PROGETTO LAVORA_SU SSN NOME_I NUMERO_P NOME_P SEDE_P SSN NUMERO_P ORE (c) R={SSN, NOME_I, NUMERO_P, NOME_P, SEDE_P, ORE} R 1 =IMP={SSN, NOME_I} R 2 =PROG={NUMERO_P, NOME_P, SEDE_P} R 3 =LAVORA_SU={SSN, NUMERO_P, ORE} D={R 1, R 2, R 3 } F={SSN NOME_I;NUMERO_P {NOME_P, SEDE_P}; {SSN,NUMERO_P} ORE} SSN NOME_I NUMERO_P NOME_P SEDE_P ORE R 1 R 2 a a b b 1 2 b b b b a a a b R 3 a b a b b a (matrice originale S all inizio dell algoritmo) SSN NOME_I NUMERO_P NOME_P SEDE_P ORE R 1 a a b b 1 2 b b R 2 R 3 b b a a a b a a a a b 2 a b 4 b a (matrice S dopo l applicazione delle prime due dipendenze funzionali l ultima riga è costituita da tutti simboli a, e pertanto ci fermiamo) Figura 1 Test di join non-additivo per le decomposizioni n-arie. (a) Caso 1: la decomposizione di IMP_PROG in IMP_PROG1 e SEDI_IMP non soddisfa il test. (b) Una decomposizione di IMP_PROG che verifica la proprietà di join non-additivo. (c) Caso 2: la decomposizione di IMP_PROG in IMP, PROGETTO e LAVORA_SU soddisfa il test.

15 Algoritmi di progettazione di basi di dati relazionali e altre dipendenze 1 nelle due relazioni {DOCENTE, INSEGNAMENTO} e {DOCENTE, STUDENTE}. Queste sono decomposizioni valide, poiché sono non-additive in base al test sopra descritto. Ulteriori decomposizioni non-additive Nei paragrafi precedenti abbiamo visto la decomposizione successiva di relazioni durante il processo di normalizzazione seconda e terza forma normale. Per verificare che queste decomposizioni non siano non-additive, dobbiamo verificare un altra proprietà, come enunciato nella Proposizione 2. Proposizione 2 (Conservazione della non-additività in decomposizioni successive) Se una decomposizione D = {R 1, R 2,..., R m } di R soddisfa la proprietà di join non-additivo (senza perdita) rispetto a un insieme di dipendenze funzionali F su R e, se una decomposizione D i = {Q 1, Q 2,..., Q k } di R i soddisfa la proprietà di join non-additivo rispetto alla proiezione di F su R i, allora la decomposizione D 2 = {R 1, R 2,..., R i-1, Q 1, Q 2,..., Q k, R i+1,, R m } di R soddisfa la proprietà di join non-additivo rispetto a F. 3. Algoritmi di progettazione di schemi di basi di dati relazionali Forniamo ora tre algoritmi per creare una decomposizione relazionale. Ogni algoritmo, come vedremo nel seguito, ha proprietà specifiche. Decomposizione in schemi 3NF con conservazione delle dipendenze L Algoritmo 4 crea una decomposizione con conservazione delle dipendenze D = {R 1, R 2,..., R m } di una relazione universale R basata su un insieme di dipendenze funzionali F, in modo che ogni R i in D sia in 3NF. Garantisce solo la proprietà di conservazione delle dipendenze; non garantisce la proprietà di join non-additivo. Il primo passo dell Algoritmo 4 consiste nel trovare una copertura minimale G per F; a tale scopo si può usare l Algoritmo 2. Si noti che, per un dato insieme F, possono esistere diverse coperture minime (come mostreremo in seguito nell esempio successivo all Algoritmo 4). In questi casi gli algoritmi possono anche produrre schemi alternativi diversi. Algoritmo 4 Algoritmo di sintesi relazionale in 3NF con conservazione delle dipendenze. Input. Una relazione universale R e un insieme di dipendenze funzionali F sugli attributi di R. 1. Si trovi una copertura minimale G per F (si usi l Algoritmo 2); 2. Per ogni parte sinistra X di una dipendenza funzionale che compare in G, si crei uno schema di relazione in D con attributi {X {A 1 } {A 2 }... {A K } }, dove X A 1, X A 2,..., X A K sono le sole dipendenze in G con X come parte sinistra (X è la chiave di questa relazione); 3. Si pongano tutti gli attributi restanti (che non sono stati posti in alcuna relazione) in un unico schema di relazione per assicurare la proprietà di conservazione degli attributi.

16 16 Approfondimento Web Esempio dell Algoritmo 4. Si consideri la seguente relazione universale: U(SSN_imp, N_P, Stip_I, Telefono_I, N_D, Nome_P, Sede_P) SSN_imp, Stip_I, Telefono_I indicano, rispettivamente, codice della tessera sanitaria, stipendio e numero di telefono di un impiegato. N_P, Nome_P, Sede_P indicano, rispettivamente, numero, nome e sede di un progetto, mentre N_D è il numero di dipartimento. Sono presenti le seguenti dipendenze funzionali: DF1: SSN_imp Stip_I, Telefono_I, N_D DF2: N_P Nome_P, Sede_P DF3: SSN_imp, N_P Stip_I, Telefono_I, N_D, Nome_P, Sede_P In virtù della DF3, l insieme di attributi {SSN_imp, N_P} rappresenta una chiave della relazione universale. Dunque, l insieme F delle DF date comprende {SSN_imp Stip_I, Telefono_I, N_D; N_P Nome_P, Sede_P; SSN_imp, N_P Stip_I, Telefono_I, N_D, Nome_P, Sede_P}. Applicando l Algoritmo 2 di copertura minima, al passo 3 osserviamo che N_P è un attributo ridondante in SSN_imp, N_P Stip_I, Telefono_I, N_D. Inoltre, SSN_imp è ridondante in SSN_imp, N_P Nome_P, Sede_P. Dunque la copertura minima è data da DF1 e DF2 (DF3 è totalmente ridondante) come segue (raggruppando gli attributi con la medesima parte sinistra in un unica DF): Copertura minima G: {SSN_imp Stip_I, Telefono_I, N_D; N_P Nome_P, Sede_P} Applicando l Algoritmo 4 alla precedente copertura minima G, otteniamo uno schema in 3NF composto da due relazioni con rispettive chiavi SSN_imp e N_P come segue: R 1 (SSN_imp, Stip_I, Telefono_I, N_D) R 2 (N_P, Nome_P, Sede_P) Un lettore attento potrebbe facilmente notare che queste due relazioni hanno perso l informazione originaria contenuta nella chiave della relazione universale U (cioè l esistenza di impiegati che lavorano su progetti con associazione molti-a-molti). Quindi, pur preservando le dipendenze iniziali, l algoritmo non fornisce garanzia che tutte le informazioni siano preservate. Dunque, lo schema risultante è lossy. Proposizione 3 Ogni schema di relazione creato dall Algoritmo 4 è in 3NF. (Qui non forniremo una dimostrazione formale; 6 la dimostrazione dipende dal fatto che G sia un insieme minimale di dipendenze.) È ovvio che tutte le dipendenze in G vengono conservate dall algoritmo perché ogni dipendenza appare in qualche relazione R i nella decomposizione D. Poiché G è equivalente a F, tutte le dipendenze in F vengono conservate direttamente nella decomposizione oppure sono derivabili da quelle nelle relazioni risultanti, usando le regole di inferenza presentate all inizio di questo capitolo; in questo modo viene assicurata la proprietà 6 Per una dimostrazione si consulti Maier (1983) o Ullman (1982).

17 Algoritmi di progettazione di basi di dati relazionali e altre dipendenze 17 di conservazione delle dipendenze. L Algoritmo 4 è chiamato algoritmo di sintesi relazionale, perché ogni schema di relazione R i nella decomposizione è sintetizzato (costruito) a partire dall insieme di dipendenze funzionali in G aventi la stessa parte sinistra X. Decomposizione non-additiva in schemi in BCNF L algoritmo seguente decompone uno schema di relazione universale R = {A 1, A 2,..., A n } in una decomposizione D = {R 1, R 2,..., R m }, in modo che ogni R i sia in bcnf e la decomposizione D goda della proprietà di join non-additivo rispetto a F. L Algoritmo utilizza la proprietà LJ1 e la proposizione 2 (conservazione di non-additività in decomposizioni successive) per creare una decomposizione senza perdita D = {R 1, R 2,..., R m } di una relazione universale R basata su un insieme di dipendenze funzionali F, in modo che ogni R i in D sia in bcnf. Algoritmo Decomposizione relazionale in bcnf che verifica la proprietà di join non-additivo. Input. Una relazione universale R e un insieme di dipendenze funzionali F sugli attributi di R. 1. Si ponga D := {R} ; 2. Finché c è uno schema di relazione Q in D che non è in bcnf si esegua { si scelga uno schema di relazione Q in D che non sia in bcnf; si trovi una dipendenza funzionale X Y in Q che violi bcnf; si sostituisca Q in D con due schemi di relazione (Q Y) e (X Y); } ; Ogni volta che attraversiamo il ciclo presente nell Algoritmo decomponiamo uno schema di relazione Q che non è in bcnf in due schemi di relazione. Secondo la proprietà LJ1 per le decomposizioni binarie e la proposizione 2, la decomposizione D verifica la proprietà di join non-additivo. Al termine dell algoritmo, tutti gli schemi di relazione in D saranno in bcnf. Il lettore può verificare che l esempio di normalizzazione delle Figure e (Capitolo 11) segua sostanzialmente questo algoritmo. Le dipendenze funzionali DF3, DF4 e, più tardi, DF, violano la bcnf, pertanto la relazione LOTTI viene decomposta in relazioni bcnf e inoltre la decomposizione soddisfa la proprietà di join non-additivo. Analogamente, se applichiamo l algoritmo allo schema di relazione INSEGNA della Figura 11.13, questo viene decomposto in INSEGNA1(DOCENTE, STUDENTE) e INSEGNA2(DOCENTE, CORSO) dato che la dipendenza DF2: DOCENTE CORSO viola la bcnf. Nel passo 2 dell Algoritmo è necessario determinare se uno schema di relazione Q è o meno in bcnf. Un metodo per fare ciò consiste nel testare, per ogni dipendenza funzionale X Y in Q, se X + non riesce a includere tutti gli attributi di Q, stabilendo quindi se X è una (super)chiave di Q. Un altra tecnica si basa sull osservazione che, ogni volta che uno schema di relazione Q viola la bcnf, esiste una coppia di attributi A e B di Q tale che {Q {A, B} } A; calcolando la chiusura {Q {A, B} } + per ogni coppia di attributi {A, B} di Q, e verificando se la chiusura comprende A (o B), possiamo determinare se Q è in bcnf.

18 18 Approfondimento Web Decomposizione con conservazione delle dipendenze e non additiva (senza perdita) in schemi in 3NF Fino a questo punto abbiamo mostrato come ottenere uno schema in 3NF con una possibile perdita di informazione nell Algoritmo 4 e come ottenere uno schema in BCNF con una perdita potenziale di certe dipendenze funzionali nell Algoritmo. Ora sappiamo che non è possibile assicurare tutte e tre le seguenti condizioni: (1) garanzia di schema senza perdite, (2) garanzia di conservazione delle dipendenze, (3) tutte le relazioni in BCNF. Come detto in precedenza, la prima condizione è obbligatoria e non può essere compromessa. La seconda condizione è auspicabile, ma non obbligatoria, e potrebbe dover essere rilassata qualora si insistesse per ottenere BCNF. Ora presentiamo un algoritmo alternativo mediante il quale si soddisfano le condizioni 1 e 2 e si garantisce soltanto la 3NF. Una semplice modifica all Algoritmo 4, che produce l Algoritmo 6, fornisce una decomposizione D di R con le seguenti proprietà: mantiene le dipendenze; soddisfa la proprietà di join non-additivo; è tale che ogni schema di relazione risultante nella decomposizione è in 3NF. Poiché l Algoritmo 6 garantisce entrambe le proprietà auspicabili, e non solamente la conservazione delle dipendenze funzionali come nel caso dell Algoritmo 4, possiamo dire che si tratta di un algoritmo preferibile. Algoritmo 6 Algoritmo di sintesi relazionale in 3NF con conservazione delle dipendenze e proprietà di join non-additivo. Input. Una relazione universale R e un insieme di dipendenze funzionali F sugli attributi di R. 1. Si trovi una copertura minimale G di F (si usi l Algoritmo 2). 2. Per ogni parte sinistra X di una dipendenza funzionale che compare in G, si crei uno schema di relazione in D con attributi {X {A 1 } {A 2 }... {A K } }, dove X A 1, X A 2,..., X A K sono le sole dipendenze di G con X come parte sinistra (X è la chiave di questa relazione). 3. Se nessuno degli schemi di relazione in D contiene una chiave di R, allora si crei un ulteriore schema di relazione in D contenente attributi che formano una chiave di R Si eliminino le relazioni ridondanti dall insieme di relazioni risultante nello schema relazionale della base di dati. Una relazione R è considerata ridondante se R è una proiezione di un altra relazione S dello schema, oppure se R è sussunta da S. 8 7 Il passo 3 dell Algoritmo 4 non è necessario nell Algoritmo 6 per la conservazione degli attributi, perché la chiave comprenderà tutti gli attributi non considerati; questi sono gli attributi che non partecipano ad alcuna dipendenza funzionale. 8 Si noti che esiste un ulteriore tipo di dipendenza: R è una proiezione del join di due o più relazioni dello schema. Questo tipo di ridondanza è considerata una dipendenza di join e viene successivamente discussa in Dipendenze di join e quinta forma normale pubblicato on-line su questo sito come Approfondimento Web al Capitolo 11. Dunque, tecnicamente, questa dipendenza può continuare a esistere senza interferire con la condizione di 3FN dello schema.

19 Algoritmi di progettazione di basi di dati relazionali e altre dipendenze 19 Il passo 3 dell Algoritmo 6 comporta l identificazione di una chiave K per R. Esempio 1 dell Algoritmo 6 Consideriamo nuovamente l esempio illustrato alla fine dell Algoritmo 4. Come nell esempio precedente, facciamo riferimento alla copertura minima G e alle relazioni R 1 e R 2 prodotte al secondo passo dell algoritmo. Ora, nel passo 3, generiamo una relazione corrispondente alla chiave {SSN_imp, N_P}. Dunque, lo schema risultante contiene: R 1 (SSN_imp, Stip_I, Telefono_I, N_D) R 2 (N_P, Nome_P, Sede_P) R 3 (SSN_imp, N_P) Questo schema preserva entrambe le proprietà di conservazione delle dipendenze e di join non-additivo. Esempio 2 dell Algoritmo 6 (Caso X). Si consideri lo schema di relazione LOTTI1A mostrato nella Figura 11.13(a). Si assuma che questa sia fornita come relazione universale con le seguenti dipendenze funzionali: DF1: #id_proprietà #lotto, Nome_contea, Area DF2: #lotto, Nome_contea Area, #id_proprietà DF3: Area Nome_contea Nella Figura 11.13(a) queste erano indicate con DF1, DF2 e DF. Il significato dei precedenti attributi e le implicazioni delle precedenti dipendenze funzionali sono stati illustrati nel Paragrafo Per semplicità, abbreviamo ogni attributo con la prima lettera del nome (P per #id_proprietà, C per Nome_contea, A per Area, L per #lotto) rappresentando le dipendenze funzionali come l insieme: F: {P LCA, LC AP, A C} Se applichiamo a F l Algoritmo 2 di copertura minima, (al passo 2) possiamo rappresentare l insieme F come F: {P L, P C, P A, LC A, LC P, A C} Nell insieme F, P A può essere dedotta per transitività da P LC e LC A, ed è perciò ridondante. Quindi una possibile copertura minima è Copertura minima GX: {P LC, LC AP, A C} Al passo 2 dell Algoritmo 6 produciamo lo schema X (prima di eliminare le relazioni ridondanti) corrispondente a: Schema X: R 1 (P, L, C), R 2 (L, C, A, P) e R 3 (A, C) Al passo 4 dell algoritmo, troviamo che R 3 è sussunta da R 2 (cioè R 3 è sempre una proiezione di R 2 ) e allo stesso modo R 1 è una proiezione di R 2. Dunque queste due relazioni sono entrambe ridondanti e lo schema in 3NF che preserva le proprietà auspicabili è (dopo aver eliminato le relazioni ridondanti): Schema X: R 2 (L, C, A, P)

20 20 Approfondimento Web In altri termini questo schema è identico alla relazione LOTTI1A(#lotto, Nome_contea, Area, #id_proprietà) che abbiamo stabilito essere in 3NF nel Paragrafo (Capitolo 11). Esempio 2 dell Algoritmo 6 (caso Y). Partendo con LOTTI1A come relazione universale e con il medesimo insieme di dipendenze funzionali, il secondo passo dell Algoritmo 2 di copertura minima produce come in precedenza F: {P C, P A, P L, LC A, LC P, A C} La DF LC A può essere considerata ridondante, visto che può essere derivata per transitività da LC P e P A. Anche P C è considerabile ridondante, essendo derivabile per transitività da P A e A C. Questo porta a coperture minime alternative come Copertura minima GY: {P LA, LC P, A C}. Lo schema Y alternativo prodotto dall algoritmo è ora: Schema Y: S 1 (P, A, L), S 2 (L, C, P) e S 3 (A, C) Si noti che questo schema ha tre relazioni in 3NF, nessuna delle quali può essere considerata ridondante dalla condizione al passo 4. Tutte le DF nell insieme F iniziale sono preservate. Il lettore noterà che delle tre relazioni, le relazioni S 1 e S 3 sono state prodotte come schema in bcnf dalla procedura illustrata nel Paragrafo 11. (con l implicazione che S 2 è ridondante in presenza di S 1 e S 3 ). Tuttavia, non si può eliminare la relazione S 2 da questo insieme di tre relazioni in 3NF poiché essa non è proiezione né di S 1 né di S 3. Quindi, lo schema Y costituisce un possibile risultato finale dell Algoritmo 6 applicato alla relazione universale, producendo relazioni in 3NF. È importante notare che la teoria di decomposizione dei join non-additivi è basata sull ipotesi che non siano ammessi valori nulli per gli attributi di join. Nel paragrafo seguente si discutono alcuni dei possibili problemi causati dai valori nulli nelle decomposizioni relazionali. 4. Questioni relative a valori nulli, tuple dangling e progettazioni relazionali alternative In questo paragrafo discuteremo alcune questioni relative ai problemi che sorgono quando la progettazione relazionale non è affrontata in modo opportuno. Quando progettiamo uno schema di base di dati relazionale dobbiamo considerare attentamente i problemi associati ai valori nulli. Finora non c è una teoria di progettazione relazionale pienamente soddisfacente che comprenda i valori nulli. Quando alcune tuple presentano valori nulli negli attributi che saranno usati per collegare via join singole relazioni nella decomposizione si verifica un problema. Per illustrare ciò, si consideri la base di dati mostrata nella Figura 2(a), in cui vengono mostrate le due relazioni IMPIEGATO e DIPARTIMENTO. Le ultime due tuple impiegato, cioè Berger e Benitez, rappresentano impiegati appena assunti che non sono stati ancora assegnati a un dipartimento (si dia per scontato che ciò non violi alcun vincolo d integrità). Si supponga ora di voler reperire un elenco di valori di (NOME_I, NOME_D) per tutti gli impiegati. Se

Raffinamento dello schema e forme normali. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

Raffinamento dello schema e forme normali. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma Raffinamento dello schema e forme normali 1 Forme Normali Le forme normali consentono di valutare la qualità delle relazione Sono state proposte diverse forme normali che includono, in ordine di generalità:

Dettagli

SISTEMI INFORMATIVI AVANZATI -2010/2011 1. Introduzione

SISTEMI INFORMATIVI AVANZATI -2010/2011 1. Introduzione SISTEMI INFORMATIVI AVANZATI -2010/2011 1 Introduzione In queste dispense, dopo aver riportato una sintesi del concetto di Dipendenza Funzionale e di Normalizzazione estratti dal libro Progetto di Basi

Dettagli

Normalizzazione. Normalizzazione. Normalizzazione e modello ER. Esempio. Normalizzazione

Normalizzazione. Normalizzazione. Normalizzazione e modello ER. Esempio. Normalizzazione Normalizzazione Normalizzazione Introduzione Forma normale di Boyce Codd Decomposizione in forma normale Normalizzazione Introduzione La normalizzazione è un procedimento che, a partire da uno schema relazionale

Dettagli

1. PRIME PROPRIETÀ 2

1. PRIME PROPRIETÀ 2 RELAZIONI 1. Prime proprietà Il significato comune del concetto di relazione è facilmente intuibile: due elementi sono in relazione se c è un legame tra loro descritto da una certa proprietà; ad esempio,

Dettagli

BASI DI DATI DIPENDENZE FUNZIONALI E FORME NORMALI

BASI DI DATI DIPENDENZE FUNZIONALI E FORME NORMALI BASI DI DATI DIPENDENZE FUNZIONALI E FORME NORMALI Prof. Fabio A. Schreiber Dipartimento di Elettronica e Informazione Politecnico di Milano ERRORI DI PROGETTAZIONE INSERIMENTO DI ELEMENTI RIDONDANTI SPRECO

Dettagli

Decomposizione senza perdita. Decomposizione senza perdita. Conservazione delle dipendenze. Conservazione delle dipendenze

Decomposizione senza perdita. Decomposizione senza perdita. Conservazione delle dipendenze. Conservazione delle dipendenze Decomposizione senza perdita Data una relazione r su X, se X 1 e X 2 sono due sottoinsiemi di X la cui unione è X stesso, allora il join delle due relazioni ottenute per proiezione di r su X 1 e X 2 è

Dettagli

NORMALIZZAZIONE DI SCHEMI RELAZIONALI. Prof.ssa Rosalba Giugno

NORMALIZZAZIONE DI SCHEMI RELAZIONALI. Prof.ssa Rosalba Giugno NORMALIZZAZIONE DI SCHEMI RELAZIONALI Prof.ssa Rosalba Giugno PROBLEMA GENERALE La progettazione concettuale e logica produce uno schema relazionale che rappresenta la realta dei dati nella nostra applicazione.

Dettagli

FORME NORMALI E DIPENDENZE

FORME NORMALI E DIPENDENZE Sistemi Informativi: Forme Normali e Dipendenze FORME NORMALI E DIPENDENZE La teoria della normalizzazione e delle dipendenze ha come scopo principale quello di fornire gli strumenti teorici e pratici

Dettagli

Normalizzazione. Relazionali

Normalizzazione. Relazionali Normalizzazione di Schemi Relazionali Normalizzazione Forme Normali Una forma normale è una proprietà di uno schema relazionale che ne garantisce la qualità, cioè l assenza di determinati difetti Una relazione

Dettagli

DIP. FUNZIONALI E FORME NORMALI esempi cfr. Albano Ghelli Orsini Basi di dati relazionali e a oggetti Zanichelli, 1997, cap.6 RIDONDANZE E ANOMALIE

DIP. FUNZIONALI E FORME NORMALI esempi cfr. Albano Ghelli Orsini Basi di dati relazionali e a oggetti Zanichelli, 1997, cap.6 RIDONDANZE E ANOMALIE DIP. FUNZIONALI E FORME NORMALI esempi cfr. Albano Ghelli Orsini Basi di dati relazionali e a oggetti Zanichelli, 1997, cap.6 Ridondanze e anomalie Dipendenze funzionali e implicazione logica Regole di

Dettagli

Attributi e domini. A per {A}; XY per X Y (pertanto A 1 A 2 A 3 denota

Attributi e domini. A per {A}; XY per X Y (pertanto A 1 A 2 A 3 denota Attributi e domini Assumiamo un universo infinito numerabile U = {A 0, A 1, A 2...} di attributi. Denotiamo gli attributi con A, B, C, B 1, C 1... e gli insiemi di attributi con X, Y, Z, X 1,... per brevità

Dettagli

Capitolo 2. Operazione di limite

Capitolo 2. Operazione di limite Capitolo 2 Operazione di ite In questo capitolo vogliamo occuparci dell operazione di ite, strumento indispensabile per scoprire molte proprietà delle funzioni. D ora in avanti riguarderemo i domini A

Dettagli

b) Costruire direttamente le relazioni e poi correggere quelle che presentano anomalie

b) Costruire direttamente le relazioni e poi correggere quelle che presentano anomalie TEORIA RELAZIONALE: INTRODUZIONE 1 Tre metodi per produrre uno schema relazionale: a) Partire da un buon schema a oggetti e tradurlo b) Costruire direttamente le relazioni e poi correggere quelle che presentano

Dettagli

Dimensione di uno Spazio vettoriale

Dimensione di uno Spazio vettoriale Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione

Dettagli

risulta (x) = 1 se x < 0.

risulta (x) = 1 se x < 0. Questo file si pone come obiettivo quello di mostrarvi come lo studio di una funzione reale di una variabile reale, nella cui espressione compare un qualche valore assoluto, possa essere svolto senza necessariamente

Dettagli

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da Data una funzione reale f di variabile reale x, definita su un sottoinsieme proprio D f di R (con questo voglio dire che il dominio di f è un sottoinsieme di R che non coincide con tutto R), ci si chiede

Dettagli

LA NORMALIZZAZIONE. Introduzione

LA NORMALIZZAZIONE. Introduzione LA NORMALIZZAZIONE Introduzione La normalizzazione e' una tecnica di progettazione dei database, mediante la quale si elimina la rindondanza dei dati al fine di evitare anomalie nella loro consistenza

Dettagli

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................

Dettagli

Lezioni di Matematica 1 - I modulo

Lezioni di Matematica 1 - I modulo Lezioni di Matematica 1 - I modulo Luciano Battaia 16 ottobre 2008 Luciano Battaia - http://www.batmath.it Matematica 1 - I modulo. Lezione del 16/10/2008 1 / 13 L introduzione dei numeri reali si può

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

Dettagli

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI Prima di riuscire a scrivere un programma, abbiamo bisogno di conoscere un metodo risolutivo, cioè un metodo che a partire dai dati di ingresso fornisce i risultati attesi.

Dettagli

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. Algoritmi 1 Sommario Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi. 2 Informatica Nome Informatica=informazione+automatica. Definizione Scienza che si occupa dell

Dettagli

MODELLO RELAZIONALE. Introduzione

MODELLO RELAZIONALE. Introduzione MODELLO RELAZIONALE Introduzione E' stato proposto agli inizi degli anni 70 da Codd finalizzato alla realizzazione dell indipendenza dei dati, unisce concetti derivati dalla teoria degli insiemi (relazioni)

Dettagli

Appunti sulla Macchina di Turing. Macchina di Turing

Appunti sulla Macchina di Turing. Macchina di Turing Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso

Dettagli

Proof. Dimostrazione per assurdo. Consideriamo l insieme complementare di P nell insieme

Proof. Dimostrazione per assurdo. Consideriamo l insieme complementare di P nell insieme G Pareschi Principio di induzione Il Principio di Induzione (che dovreste anche avere incontrato nel Corso di Analisi I) consente di dimostrare Proposizioni il cui enunciato è in funzione di un numero

Dettagli

19. Inclusioni tra spazi L p.

19. Inclusioni tra spazi L p. 19. Inclusioni tra spazi L p. Nel n. 15.1 abbiamo provato (Teorema 15.1.1) che, se la misura µ è finita, allora tra i corispondenti spazi L p (µ) si hanno le seguenti inclusioni: ( ) p, r ]0, + [ : p

Dettagli

Operazioni sui database

Operazioni sui database Operazioni sui database Le operazioni nel modello relazionale sono essenzialmente di due tipi: Operazioni di modifica della base di dati (update) Interrogazioni della base di dati per il recupero delle

Dettagli

Il Modello Relazionale

Il Modello Relazionale Il Modello Relazionale Il modello relazionale 1 Il modello relazionale Proposto da E. F. Codd nel 1970 per favorire l indipendenza dei dati e reso disponibile come modello logico in DBMS reali nel 1981

Dettagli

Progettazione di Basi di Dati

Progettazione di Basi di Dati Progettazione di Basi di Dati Prof. Nicoletta D Alpaos & Prof. Andrea Borghesan Entità-Relazione Progettazione Logica 2 E il modo attraverso il quale i dati sono rappresentati : fa riferimento al modello

Dettagli

Il principio di induzione e i numeri naturali.

Il principio di induzione e i numeri naturali. Il principio di induzione e i numeri naturali. Il principio di induzione è un potente strumento di dimostrazione, al quale si ricorre ogni volta che si debba dimostrare una proprietà in un numero infinito

Dettagli

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0

4 3 4 = 4 x 10 2 + 3 x 10 1 + 4 x 10 0 aaa 10 2 10 1 10 0 Rappresentazione dei numeri I numeri che siamo abituati ad utilizzare sono espressi utilizzando il sistema di numerazione decimale, che si chiama così perché utilizza 0 cifre (0,,2,3,4,5,6,7,8,9). Si dice

Dettagli

10. Insiemi non misurabili secondo Lebesgue.

10. Insiemi non misurabili secondo Lebesgue. 10. Insiemi non misurabili secondo Lebesgue. Lo scopo principale di questo capitolo è quello di far vedere che esistono sottoinsiemi di R h che non sono misurabili secondo Lebesgue. La costruzione di insiemi

Dettagli

Parte 2. Determinante e matrice inversa

Parte 2. Determinante e matrice inversa Parte. Determinante e matrice inversa A. Savo Appunti del Corso di Geometria 013-14 Indice delle sezioni 1 Determinante di una matrice, 1 Teorema di Cramer (caso particolare), 3 3 Determinante di una matrice

Dettagli

Lezione 9: Cambio di base

Lezione 9: Cambio di base Lezione 9: Cambio di base In questa lezione vogliamo affrontare uno degli argomenti piu ostici per lo studente e cioè il cambio di base all interno di uno spazio vettoriale, inoltre cercheremo di capire

Dettagli

ESEMPIO 1: eseguire il complemento a 10 di 765

ESEMPIO 1: eseguire il complemento a 10 di 765 COMPLEMENTO A 10 DI UN NUMERO DECIMALE Sia dato un numero N 10 in base 10 di n cifre. Il complemento a 10 di tale numero (N ) si ottiene sottraendo il numero stesso a 10 n. ESEMPIO 1: eseguire il complemento

Dettagli

Alcune nozioni di base di Logica Matematica

Alcune nozioni di base di Logica Matematica Alcune nozioni di base di Logica Matematica Ad uso del corsi di Programmazione I e II Nicola Galesi Dipartimento di Informatica Sapienza Universitá Roma November 1, 2007 Questa é una breve raccolta di

Dettagli

LE FUNZIONI A DUE VARIABILI

LE FUNZIONI A DUE VARIABILI Capitolo I LE FUNZIONI A DUE VARIABILI In questo primo capitolo introduciamo alcune definizioni di base delle funzioni reali a due variabili reali. Nel seguito R denoterà l insieme dei numeri reali mentre

Dettagli

Database 1 biblioteca universitaria. Testo del quesito

Database 1 biblioteca universitaria. Testo del quesito Database 1 biblioteca universitaria Testo del quesito Una biblioteca universitaria acquista testi didattici su indicazione dei professori e cura il prestito dei testi agli studenti. La biblioteca vuole

Dettagli

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE LE SUCCESSIONI 1. COS E UNA SUCCESSIONE La sequenza costituisce un esempio di SUCCESSIONE. Ecco un altro esempio di successione: Una successione è dunque una sequenza infinita di numeri reali (ma potrebbe

Dettagli

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it Excel A cura di Luigi Labonia e-mail: luigi.lab@libero.it Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo

Dettagli

Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati

Basi di dati. Il Modello Relazionale dei Dati. K. Donno - Il Modello Relazionale dei Dati Basi di dati Il Modello Relazionale dei Dati Proposto da E. Codd nel 1970 per favorire l indipendenza dei dati Disponibile come modello logico in DBMS reali nel 1981 (non è facile realizzare l indipendenza

Dettagli

I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due:

I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due: Il modello relazionale I database relazionali sono il tipo di database attualmente piu diffuso. I motivi di questo successo sono fondamentalmente due: 1. forniscono sistemi semplici ed efficienti per rappresentare

Dettagli

Esercizio data base "Biblioteca"

Esercizio data base Biblioteca Rocco Sergi Esercizio data base "Biblioteca" Database 2: Biblioteca Testo dell esercizio Si vuole realizzare una base dati per la gestione di una biblioteca. La base dati conterrà tutte le informazioni

Dettagli

Secondo Compitino di Basi di Dati

Secondo Compitino di Basi di Dati Secondo Compitino di Basi di Dati 10 Giugno 2004 NOME: COGNOME: MATRICOLA: Esercizio Punti previsti 1 18 2 12 3 3 Totale 33 Punti assegnati Esercizio 1 (Punti 18) Si vuole realizzare un applicazione per

Dettagli

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo. DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti

Dettagli

1 Giochi a due, con informazione perfetta e somma zero

1 Giochi a due, con informazione perfetta e somma zero 1 Giochi a due, con informazione perfetta e somma zero Nel gioco del Nim, se semplificato all estremo, ci sono due giocatori I, II e una pila di 6 pedine identiche In ogni turno di gioco I rimuove una

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T3 1-Sottoprogrammi 1 Prerequisiti Tecnica top-down Programmazione elementare 2 1 Introduzione Lo scopo di questa Unità è utilizzare la metodologia di progettazione top-down

Dettagli

Normalizzazione (Codd, 1972)

Normalizzazione (Codd, 1972) Normalizzazione (Codd, 1972) La normalizzazione non è una tecnica, nè una metodologia di progettazione Le forme normali costituiscono uno dei criteri per ottenere basi di dati relazionali ben progettate

Dettagli

4. Operazioni elementari per righe e colonne

4. Operazioni elementari per righe e colonne 4. Operazioni elementari per righe e colonne Sia K un campo, e sia A una matrice m n a elementi in K. Una operazione elementare per righe sulla matrice A è una operazione di uno dei seguenti tre tipi:

Dettagli

Gli attributi di STUDENTE saranno: Matricola (chiave primaria), Cognome, Nome.

Gli attributi di STUDENTE saranno: Matricola (chiave primaria), Cognome, Nome. Prof. Francesco Accarino Raccolta di esercizi modello ER Esercizio 1 Un università vuole raccogliere ed organizzare in un database le informazioni sui propri studenti in relazione ai corsi che essi frequentano

Dettagli

Lezione 8. La macchina universale

Lezione 8. La macchina universale Lezione 8 Algoritmi La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale= l informazione

Dettagli

Matematica in laboratorio

Matematica in laboratorio Unità 1 Attività guidate Attività 1 Foglio elettronico Divisibilità tra numeri naturali Costruisci un foglio di lavoro per determinare se a è divisibile per b, essendo a e b due numeri naturali, con a

Dettagli

Note del corso di Calcolabilità e Linguaggi Formali - Lezione 6

Note del corso di Calcolabilità e Linguaggi Formali - Lezione 6 Note del corso di Calcolabilità e Linguaggi Formali - Lezione 6 Alberto Carraro 30 novembre DAIS, Universitá Ca Foscari Venezia http://www.dsi.unive.it/~acarraro 1 Funzioni Turing-calcolabili Finora abbiamo

Dettagli

Organizzazione degli archivi

Organizzazione degli archivi COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i

Dettagli

Parte 6. Applicazioni lineari

Parte 6. Applicazioni lineari Parte 6 Applicazioni lineari A Savo Appunti del Corso di Geometria 203-4 Indice delle sezioni Applicazioni fra insiemi, 2 Applicazioni lineari tra spazi vettoriali, 2 3 Applicazioni lineari da R n a R

Dettagli

Progettaz. e sviluppo Data Base

Progettaz. e sviluppo Data Base Progettaz. e sviluppo Data Base! Progettazione Basi Dati: Metodologie e modelli!modello Entita -Relazione Progettazione Base Dati Introduzione alla Progettazione: Il ciclo di vita di un Sist. Informativo

Dettagli

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1)

APPUNTI DI MATEMATICA ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1) ALGEBRA \ INSIEMISTICA \ TEORIA DEGLI INSIEMI (1) Un insieme è una collezione di oggetti. Il concetto di insieme è un concetto primitivo. Deve esistere un criterio chiaro, preciso, non ambiguo, inequivocabile,

Dettagli

Prodotto libero di gruppi

Prodotto libero di gruppi Prodotto libero di gruppi 24 aprile 2014 Siano (A 1, +) e (A 2, +) gruppi abeliani. Sul prodotto cartesiano A 1 A 2 definiamo l operazione (x 1, y 1 ) + (x 2, y 2 ) := (x 1 + x 2, y 1 + y 2 ). Provvisto

Dettagli

Alessandro Pellegrini

Alessandro Pellegrini Esercitazione sulle Rappresentazioni Numeriche Esistono 1 tipi di persone al mondo: quelli che conoscono il codice binario e quelli che non lo conoscono Alessandro Pellegrini Cosa studiare prima Conversione

Dettagli

Obiettivo Principale: Aiutare gli studenti a capire cos è la programmazione

Obiettivo Principale: Aiutare gli studenti a capire cos è la programmazione 4 LEZIONE: Programmazione su Carta a Quadretti Tempo della lezione: 45-60 Minuti. Tempo di preparazione: 10 Minuti Obiettivo Principale: Aiutare gli studenti a capire cos è la programmazione SOMMARIO:

Dettagli

Modello Relazionale dei DBMS - Vincoli Tradizionalmente, esistono quattro modelli logici: Gerarchico Reticolare Relazionale A oggetti XML I modelli

Modello Relazionale dei DBMS - Vincoli Tradizionalmente, esistono quattro modelli logici: Gerarchico Reticolare Relazionale A oggetti XML I modelli Modello Relazionale dei DBMS - Vincoli Tradizionalmente, esistono quattro modelli logici: Gerarchico Reticolare Relazionale A oggetti XML I modelli gerarchico e reticolare sono più vicini alle strutture

Dettagli

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti Capitolo 3 L applicazione Java Diagrammi ER Dopo le fasi di analisi, progettazione ed implementazione il software è stato compilato ed ora è pronto all uso; in questo capitolo mostreremo passo passo tutta

Dettagli

Algoritmi e strutture dati. Codici di Huffman

Algoritmi e strutture dati. Codici di Huffman Algoritmi e strutture dati Codici di Huffman Memorizzazione dei dati Quando un file viene memorizzato, esso va memorizzato in qualche formato binario Modo più semplice: memorizzare il codice ASCII per

Dettagli

IL MODELLO RELAZIONALE

IL MODELLO RELAZIONALE IL MODELLO RELAZIONALE E i vincoli per le basi di dati relazionali 2 La storia Introdotto nel 1970 da E. F. Ted Codd http://en.wikipedia.org/wiki/edgar_f._codd (centro ricerche IBM) Codd, E.F. (1970).

Dettagli

Il Modello Relazionale

Il Modello Relazionale Il Modello Relazionale 1 Proposto da E. F. Codd nel 1970 per favorire l indipendenza dei dati e reso disponibile come modello logico in DBMS reali nel 1981 Si basa sul concetto matematico di relazione,

Dettagli

Introduzione alla teoria dei database relazionali. Come progettare un database

Introduzione alla teoria dei database relazionali. Come progettare un database Introduzione alla teoria dei database relazionali Come progettare un database La struttura delle relazioni Dopo la prima fase di individuazione concettuale delle entità e degli attributi è necessario passare

Dettagli

Il seguente esempio ha lo scopo di illustrare i 3 tipi di relazione 1:1,1:N,N:N. Tabella Conto: Tabella Conto:

Il seguente esempio ha lo scopo di illustrare i 3 tipi di relazione 1:1,1:N,N:N. Tabella Conto: Tabella Conto: Il seguente esempio ha lo scopo di illustrare i 3 tipi di relazione 1:1,1:N,N:N. Tabella Conto: Tabella Conto: Tabella Cliente: Tabella NumTel: Tabella Dati_Cliente: L'esempio è per ragioni di chiarezza

Dettagli

Corrispondenze e funzioni

Corrispondenze e funzioni Corrispondenze e funzioni L attività fondamentale della mente umana consiste nello stabilire corrispondenze e relazioni tra oggetti; è anche per questo motivo che il concetto di corrispondenza è uno dei

Dettagli

Decomposizioni di uno schema, Decomposizioni che preservano i dati (loss-less joins) Prof.ssa Rosalba Giugno

Decomposizioni di uno schema, Decomposizioni che preservano i dati (loss-less joins) Prof.ssa Rosalba Giugno Decomposizioni di uno schema, Decomposizioni che preservano i dati (loss-less joins) Prof.ssa Rosalba Giugno Decomposizione di uno schema Dato uno schema relazionale R={A1,A2, An} una sua decomposizione

Dettagli

Guida all uso di Java Diagrammi ER

Guida all uso di Java Diagrammi ER Guida all uso di Java Diagrammi ER Ver. 1.1 Alessandro Ballini 16/5/2004 Questa guida ha lo scopo di mostrare gli aspetti fondamentali dell utilizzo dell applicazione Java Diagrammi ER. Inizieremo con

Dettagli

Per lo svolgimento del corso risulta particolarmente utile considerare l insieme

Per lo svolgimento del corso risulta particolarmente utile considerare l insieme 1. L insieme R. Per lo svolgimento del corso risulta particolarmente utile considerare l insieme R = R {, + }, detto anche retta reale estesa, che si ottiene aggiungendo all insieme dei numeri reali R

Dettagli

Progettazione di una base di dati Ufficio della Motorizzazione

Progettazione di una base di dati Ufficio della Motorizzazione Corso di Gestione dell Informazione Studenti NON frequentanti A.A. 2008/2009 1 Scopo del progetto Progettazione di una base di dati Ufficio della Motorizzazione Si vuole realizzare un applicazione base

Dettagli

Politecnico di Milano Facoltà di Ingegneria dell Informazione AGENTI AUTONOMI E SISTEMI MULTIAGENTE Appello COGNOME E NOME

Politecnico di Milano Facoltà di Ingegneria dell Informazione AGENTI AUTONOMI E SISTEMI MULTIAGENTE Appello COGNOME E NOME Politecnico di Milano Facoltà di Ingegneria dell Informazione AGENTI AUTONOMI E SISTEMI MULTIAGENTE Appello COGNOME E NOME 5 luglio 2006 RIGA COLONNA MATRICOLA Il presente plico pinzato, composto di quattro

Dettagli

Guida Compilazione Piani di Studio on-line

Guida Compilazione Piani di Studio on-line Guida Compilazione Piani di Studio on-line SIA (Sistemi Informativi d Ateneo) Visualizzazione e presentazione piani di studio ordinamento 509 e 270 Università della Calabria (Unità organizzativa complessa-

Dettagli

Osservazioni sulla continuità per le funzioni reali di variabile reale

Osservazioni sulla continuità per le funzioni reali di variabile reale Corso di Matematica, I modulo, Università di Udine, Osservazioni sulla continuità Osservazioni sulla continuità per le funzioni reali di variabile reale Come è noto una funzione è continua in un punto

Dettagli

UTILIZZATORI A VALLE: COME RENDERE NOTI GLI USI AI FORNITORI

UTILIZZATORI A VALLE: COME RENDERE NOTI GLI USI AI FORNITORI UTILIZZATORI A VALLE: COME RENDERE NOTI GLI USI AI FORNITORI Un utilizzatore a valle di sostanze chimiche dovrebbe informare i propri fornitori riguardo al suo utilizzo delle sostanze (come tali o all

Dettagli

Strutturazione logica dei dati: i file

Strutturazione logica dei dati: i file Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer

Dettagli

Probabilità discreta

Probabilità discreta Probabilità discreta Daniele A. Gewurz 1 Che probabilità c è che succeda...? Una delle applicazioni della combinatoria è nel calcolo di probabilità discrete. Quando abbiamo a che fare con un fenomeno che

Dettagli

G. Pareschi ALGEBRE DI BOOLE. 1. Algebre di Boole

G. Pareschi ALGEBRE DI BOOLE. 1. Algebre di Boole G. Pareschi ALGEBRE DI BOOLE 1. Algebre di Boole Nel file precedente abbiamo incontrato la definizione di algebra di Boole come reticolo: un algebra di Boole e un reticolo limitato, complementato e distributivo.

Dettagli

Lezione 1. Gli Insiemi. La nozione di insieme viene spesso utilizzata nella vita di tutti i giorni; si parla dell insieme:

Lezione 1. Gli Insiemi. La nozione di insieme viene spesso utilizzata nella vita di tutti i giorni; si parla dell insieme: Lezione 1 Gli Insiemi La nozione di insieme viene spesso utilizzata nella vita di tutti i giorni; si parla dell insieme: degli iscritti ad un corso di laurea delle stelle in cielo dei punti di un piano

Dettagli

Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora:

Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora: Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora: G.C.D.( a d, b d ) = 1 Sono state introdotte a lezione due definizioni importanti che ricordiamo: Definizione

Dettagli

Soluzione dell esercizio del 2 Febbraio 2004

Soluzione dell esercizio del 2 Febbraio 2004 Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo

Dettagli

1 Applicazioni Lineari tra Spazi Vettoriali

1 Applicazioni Lineari tra Spazi Vettoriali 1 Applicazioni Lineari tra Spazi Vettoriali Definizione 1 (Applicazioni lineari) Si chiama applicazione lineare una applicazione tra uno spazio vettoriale ed uno spazio vettoriale sul campo tale che "!$%!

Dettagli

Esercizi su lineare indipendenza e generatori

Esercizi su lineare indipendenza e generatori Esercizi su lineare indipendenza e generatori Per tutto il seguito, se non specificato esplicitamente K indicherà un campo e V uno spazio vettoriale su K Cose da ricordare Definizione Dei vettori v,,v

Dettagli

Lezione 2. Il modello entità relazione

Lezione 2. Il modello entità relazione Lezione 2 Il modello entità relazione Pag.1 Introduzione alla progettazione delle basi di dati 1. Analisi dei requisiti Quali sono le entità e le relazioni dell organizzazione? Quali informazioni su queste

Dettagli

Metodi e Modelli per l Ottimizzazione Combinatoria Il problema del flusso di costo minimo

Metodi e Modelli per l Ottimizzazione Combinatoria Il problema del flusso di costo minimo Metodi e Modelli per l Ottimizzazione Combinatoria Il problema del flusso di costo minimo L. De Giovanni G. Zambelli 1 Problema del flusso a costo minimo Il problema del flusso a costo minimo é definito

Dettagli

Convertitori numerici in Excel

Convertitori numerici in Excel ISTITUTO DI ISTRUZIONE SUPERIORE G. M. ANGIOY CARBONIA Convertitori numerici in Excel Prof. G. Ciaschetti Come attività di laboratorio, vogliamo realizzare dei convertitori numerici con Microsoft Excel

Dettagli

5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record

5.3 TABELLE 5.3.1 RECORD 5.3.1.1 Inserire, eliminare record in una tabella Aggiungere record Eliminare record 5.3 TABELLE In un sistema di database relazionali le tabelle rappresentano la struttura di partenza, che resta poi fondamentale per tutte le fasi del lavoro di creazione e di gestione del database. 5.3.1

Dettagli

Il database management system Access

Il database management system Access Il database management system Access Corso di autoistruzione http://www.manualipc.it/manuali/ corso/manuali.php? idcap=00&idman=17&size=12&sid= INTRODUZIONE Il concetto di base di dati, database o archivio

Dettagli

Teoria degli insiemi

Teoria degli insiemi Teoria degli insiemi pag 1 Easy Matematica di dolfo Scimone Teoria degli insiemi Il concetto di insieme si assume come primitivo, cioè non riconducibile a concetti precedentemente definiti. Sinonimi di

Dettagli

Ottimizazione vincolata

Ottimizazione vincolata Ottimizazione vincolata Ricordiamo alcuni risultati provati nella scheda sulla Teoria di Dini per una funzione F : R N+M R M di classe C 1 con (x 0, y 0 ) F 1 (a), a = (a 1,, a M ), punto in cui vale l

Dettagli

Progettazione concettuale

Progettazione concettuale Progettazione concettuale Strategie top-down A partire da uno schema che descrive le specifiche mediante pochi concetti molto astratti, si produce uno schema concettuale mediante raffinamenti successivi

Dettagli

Semantica Assiomatica

Semantica Assiomatica Semantica Assiomatica Anche nella semantica assiomatica, così come in quella operazionale, il significato associato ad un comando C viene definito specificando la transizione tra stati (a partire, cioè,

Dettagli

Il calendario di Windows Vista

Il calendario di Windows Vista Il calendario di Windows Vista Una delle novità introdotte in Windows Vista è il Calendario di Windows, un programma utilissimo per la gestione degli appuntamenti, delle ricorrenze e delle attività lavorative

Dettagli

SOMMARIO. 13.1 I radicali pag. 3. 13.2 I radicali aritmetici pag. 5. 13.3 Moltiplicazione e divisione fra radicali aritmetici pag.

SOMMARIO. 13.1 I radicali pag. 3. 13.2 I radicali aritmetici pag. 5. 13.3 Moltiplicazione e divisione fra radicali aritmetici pag. SOMMARIO CAPITOLO : I RADICALI. I radicali pag.. I radicali aritmetici pag.. Moltiplicazione e divisione fra radicali aritmetici pag.. Potenza di un radicale aritmetico pag.. Trasporto di un fattore esterno

Dettagli

Basi di Dati e Sistemi Informativi. Progettazione logica: Il modello relazionale

Basi di Dati e Sistemi Informativi. Progettazione logica: Il modello relazionale Basi di Dati e Sistemi Informativi Progettazione logica: Il modello relazionale Corso di Laurea in Ing. Informatica Ing. Gestionale Magistrale Introduzione Basato sul lavoro di Codd (~1970) E attualmente

Dettagli

Logica Numerica Approfondimento 1. Minimo Comune Multiplo e Massimo Comun Divisore. Il concetto di multiplo e di divisore. Il Minimo Comune Multiplo

Logica Numerica Approfondimento 1. Minimo Comune Multiplo e Massimo Comun Divisore. Il concetto di multiplo e di divisore. Il Minimo Comune Multiplo Logica Numerica Approfondimento E. Barbuto Minimo Comune Multiplo e Massimo Comun Divisore Il concetto di multiplo e di divisore Considerato un numero intero n, se esso viene moltiplicato per un numero

Dettagli

Esponenziali elogaritmi

Esponenziali elogaritmi Esponenziali elogaritmi Potenze ad esponente reale Ricordiamo che per un qualsiasi numero razionale m n prendere n>0) si pone a m n = n a m (in cui si può sempre a patto che a sia un numero reale positivo.

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli