Anteprima
Vedrai una selezione di 10 pagine su 320
Sistemi Informativi Modulo 1 Pag. 1 Sistemi Informativi Modulo 1 Pag. 2
Anteprima di 10 pagg. su 320.
Scarica il documento per vederlo tutto.
Sistemi Informativi Modulo 1 Pag. 6
Anteprima di 10 pagg. su 320.
Scarica il documento per vederlo tutto.
Sistemi Informativi Modulo 1 Pag. 11
Anteprima di 10 pagg. su 320.
Scarica il documento per vederlo tutto.
Sistemi Informativi Modulo 1 Pag. 16
Anteprima di 10 pagg. su 320.
Scarica il documento per vederlo tutto.
Sistemi Informativi Modulo 1 Pag. 21
Anteprima di 10 pagg. su 320.
Scarica il documento per vederlo tutto.
Sistemi Informativi Modulo 1 Pag. 26
Anteprima di 10 pagg. su 320.
Scarica il documento per vederlo tutto.
Sistemi Informativi Modulo 1 Pag. 31
Anteprima di 10 pagg. su 320.
Scarica il documento per vederlo tutto.
Sistemi Informativi Modulo 1 Pag. 36
Anteprima di 10 pagg. su 320.
Scarica il documento per vederlo tutto.
Sistemi Informativi Modulo 1 Pag. 41
1 su 320
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

ESEMPIO:

CORSO DI LAUREA (id-cds, nome-cds, id-cordinatore) Se io scrivo nome-cds=x e id-

cordinatore=y

Tra i due c’è una dipendenza funzionale? Sulla base della conoscenza del dominio, sono certo

che se capita uno capita anche l’altro ossia sono sicuro che c’è una dipendenza funzionale.

Cioè se nome-cds: ingengeria gestionale magistrale e id-cordinatore=Gorgoglione, tutte le

volte che incontro ingegneria gestionale magistrale sono sicuro che troverò in quella tupla

andando su un’altra restrizione esattamente: Gorgoglione.

Questo in generale non si verifica tutte le volte quando prendo un sottoinsieme di attributi.

Cioè se io prendo:

STUDENTE ( matricola, nome, cognome..)

Se x= nome e y= cognome posso dire che x y? NO! Cioè se trovo scritto Arturo non sono

certo che in un’altra tupla trovo il cognome Di Domenico.

La dipendenza funzionale implica il fatto che avvenga sempre.

ATTENZIONE: non c’è una riflessività. In generale può essere che x y ma in generale y

non implica x. L’implicazione è monodimensionale.

ESEMPIO:

7001 è il CAP di bari e provincia.

Bari è 70125? No perché bari è solo 7001. Quindi è un’implicazione su una parte non su

tutto.

Cioè 70125 Bari ma Bari non è implicato da 70125 perché anche 70122 è Bari, anche 70100

è Bari.

(ha detto così ma non è stato chiarissimo)

In generale noi dovremmo trovare la chiusura transitiva del database cioè tutto l’insieme delle

possibili dipendenze funzionali (ma noi faremo una versione più ragionevole di questo.)

ASSIOMI DI AMSTRONG

Esistono degli assiomi di Amstrong che ci servono per trovare nuove dipendenze funzionali a

partire da quelle note.

RIFLESSIVITA’= Se x è incluso dentro y, x implica y.

AUMENTO= Se ho 3 sottoinsiemi di attributi sempre appartenenti alla stessa tabella x, y e z

e si verifica che c’è una dipendenza funzionale tra x e y, allora è vera anche la dipendenza

funzionale x unito a zero e y unito a zero.

TRANSITIVITA’= se ho tre sottoinsiemi di attributi x, y, z, se è vero sia che y dipende da x e

sia z dipende da y, ciò implica che sia vero anche che z dipende da x. Z è transitivamente

dipendente da x.

Noi per costruzione abbiamo sempre delle dipendenze funzionali in una tabella perché

comunque ogni attributo dipende funzionalmente dalla chiave e quindi da un superchiave. Se

così non fosse gli attributi sarebbero liberi e non varrebbe più il concetto di unicità.

Questo ci servirà tra poco.

Ora numeriamo le forme normali.

PRIMA FORMA NORMALE= coincide con il concetto di relazione. Cioè ogni relazione

deve avere degli attributi che siano atomici ossia non ci possono essere attributi composti o

multi valore nella costruzione della relazione. La tabella è fatta da attributi atomici e per il

resto risponde alla definizione di relazione del modello.

SECONDA FORMA NORMALE= una tabella è in seconda forma normale se ogni attributo

non primo della tabella ha una dipendenza funzionale piena dalla chiave primaria.

Attributo primo= attributo che faccia parte di una generica chiave candidata.

Dipendenza funzionale piena= significa che essa è minima. Cioè supposto che questa sia una

dipendenza funzionale y dipende da x, supponiamo che io elimini anche un solo attributo e la

dipendenza funzionale cade.

Quindi diciamo che la dipendenza funzionale è piena se la parte a sinistra è minima cioè non

contiene attributi ridondanti rispetto alla dipendenza funzionale.

ESEMPIO: Ci sono 22 attributi nella parte sinistra e 23 nella parte destra. Da x io posso

togliere un attributo senza che cada la dipendenza funzionale? Se si la dipendenza funzionale

non è piena.

Se no e cioè se la dipendenza funzionale è piena, tutta la parte di x serve tutta insieme per

identificare la parte di y.

ESEMPIO:

ESAME SOSTENUTO (nome-disc, id-disc, voto, data-e, matricola)

La chiave è giusta.

Questa tabella è in prima forma normale? Tecnicamente no a meno che non accettiamo il

concetto di controllo di una parte degli attributi cioè la data è un attributo che nasce composto

quindi è quella che abbiamo definito una violazione controllata. Cioè io lo so che data è un

attributo composto fatto da giorno, mese ed anno ma lo so e lo gestisco come tale.

Quindi a questo punto possiamo definirla come tabella in prima forma normale perché siamo

certi che sapremo controllare la data.

E’ in seconda forma normale? Applichiamo la definizione. Vediamo quali sono gli attributi

primi. Gli attributi primi sono quelli che fanno parte della chiave. Gli attributi non primi

sono: nome-disc e voto. Ora vedo se hanno una dipendenza funzionale piena dalla chiave.

significa: “implicano tutte insieme”)

1 (id-disc, data-e, matricola) VOTO (

Voto ha una dipendenza funzionale piena dalla chiave.

Il fatto che ha una dipendenza funzionale piena dalla chiave vuol dire che se io non so

l’esame non posso sapere il voto, se io non so la matricola non posso sapere il voto e la stessa

cosa per la data dell’esame. Cioè ho bisogno di tutti e tre pienamente affinché io possa sapere

quello che non è parte della chiave cioè il voto.

Nel caso dell’attributo: nome-disc siamo in una situazione diversa. Perché se tolgo id-disc

cade la dipendenza funzionale ma se tolgo matricola il nome della disciplina lo so comunque

perché finché ho id-disc so il nome della disciplina.

Questo vuol dire che questa tabella non è in seconda forma normale. Ora quindi come

decompongo?

Se una tabella non è in seconda forma normale essa può essere decomposta in tabelle in

seconda forma normale cioè in due o più tabelle, individuando la parte della chiave da cui

l’attributo non primo ha una dipendenza funzionale piena e costruendo una nuova tabella in

cui copiamo la parte della chiave che costituisce la parte in dipendenza piena ed estraendo

prima dalla tabella originale e ricopiando nella nuova tabella l’attributo non primo che

violava la seconda forma normale.

RIEPILOGO:

1° PASSO: Ho una tabella, vedo se è in seconda forma normale cioè vedo se gli attributi che

non fanno parte della chiave dipendono interamente dalla chiave o no. Se dipendono

interamente dalla chiave ok festa grande: la tabella è in seconda forma normale. Nel nostro

caso noi abbiamo due attributi non primi di cui uno ha una dipendenza funzionale piena,

l’altro invece ha una dipendenza funzionale non piena cioè basta un pezzo della chiave ad

identificarlo univocamente. Quindi a quel punto dico che la tabella non è in seconda forma

normale.

2° PASSO: La tabella la posso portare in seconda forma normale. Come? Creo una nuova

tabella in cui copio la parte della chiave da cui la dipendenza funzionale era piena. Poi

estraggo l’attributo non primo su cui c’è la dipendenza funzionale. Chiave della nuova tabella

è proprio la parte della chiave che è stata copiata.

Decomponendo ottengo a meno di altri attributi la tabella con i NOMI DISCIPLINE. L’altra

è di nuovo ESAME SOSTENUTO. Per la prima tabella però ho scritto A invece che NOME

DISCIPLINA perché non so logicamente che cos’è Non so darle un nome perché in realtà io

la tabella la sto ottenendo per progressiva decomposizione cioè semplicemente guardano il

fatto che c’è ridondanza, tolgo i pezzi (mantenendoli logicamente correlati.) Prima invece

l’ho costruita sulla logica di come era fatta secondo me la base di dati e quindi ho scritto

questo è il nome della disciplina .

ESAME SOSTENUTO (nome-disc, ID-disc, voto, data-e, matr) A ( ID-disc, nome-disc)

Ora la tabella A è in seconda forma normale perché se una tabella ha una chiave costituita da

un attributo è per forza in seconda forma normale. Non saprei cosa togliere a questa tabella

quindi è in seconda forma normale.

Quindi se la chiave è un attributo la tabella è sicuramente in seconda forma normale.

TERZA FORMA NORMALE= Una tabella è in terza forma normale se dato uno schema

relazionale R, due sottoinsiemi di attributi x ed y, per ogni dipendenza funzionale y dipende

da x: x è superchiave per la relazione R oppure y è attributo primo della relazione R.

ESEMPI:

DISCIPLINA (ID-disc, nome-disc, CFU, ID-prof)

E’ in seconda forma normale. Per scoprire se è in terza dobbiamo guardare le dipendenze

funzionali.

Una volta che ho la chiave è normale che tutti gli attributi dipendono dalla chiave il problema

è se sono le uniche dipendenze. Che dipendono dalla chiave è nella costruzione del concetto

di chiave altrimenti se non dipendessero non ci sarebbe nessun vincolo di unicità.

Per essere quindi in terza forma normale ci devono essere altre dipendenze funzionali oltre

quella banale dalla chiave. Questa è in terza forma normale.

STUDENTE ( matricola, nome, cognome, ID-cds, nome-cds)

E’ in seconda forma normale perché ha un unico attributo.

E’ in terza forma normale? No perché esiste una dipendenza funzionale tra ID-cds (x) e

nome-cds

(y) ma x non è una superchiave e y non è un attributo primo. Quindi non è verificato nessuno

dei due.

Rispetto alla chiave matricola, nome non viola la terza forma normale.

FORMA ALTERNATIVA DELLA TERZA FORMA NORMALE:

Potremo dire anche che una tabella è in terza forma normale se non ci sono dipendenze

transitive sulla chiave. Cioè non posso applicare una forma di transitività per arrivare in

termini di dipendenza funzionale, alla chiave.

Se io guardo:

matricola ID-cds ma è anche vero che ID-cds- nome-cds e quindi è vero

matricola nome-cds

Cioè io arrivo all’ultimo per transitività. Se avviene ciò la tabella non è in terza forma

normale. La dipendenza deve essere diretta e non transitiva affinché la tabella sia in terza

forma normale.

Se aggiungiamo CF, codice fiscale, alla tabella STUDENTE, matricola e CF insieme non

violano la terza forma normale. Se faccio la dipendenza funzionale tra CF e matricola, CF

comunque sarebbe una superchiave.

Abbiamo quindi verificato che la tabella non è in terza forma normale. Come la portiamo in

terza forma normale?

PORTARE LA TABELLA IN TERZA FORMA NORMALE

Individuiamo gli attributi che violano la terza forma normale e creiamo una nuova tabella

nella quale riportiamo l’attributo da cui dipende l’altro attributo ossia quello che viola la terza

forma normale o quello per cui avviene la transitività. Quindi ottengo la tabella

Dettagli
Publisher
A.A. 2017-2018
320 pagine
3 download
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher ValCan10 di informazioni apprese con la frequenza delle lezioni di Basi di dati e sistemi informativi e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Politecnico di Bari o del prof Colucci Simona.