domenica 15 novembre 2009

concetti di base per la realizzazione di un data base:

----------------------------------------------------------------------------------------------
Tabella è definita RELAZIONALE IN FOMRA 1nF (prima forma normale/lizzata)
quando rispetta le seguenti caratteristiche:

1° Le righe devono contenere le istanze dell’entità
2° Le colonne devono contenere gli attributi dell’entità
3° Non è importante l’orine delle righe
4° Non è importante l’ordine delle colonne
5° Tutte le celle devono contenere dati del medesimo tipo (omogenei)
6° Non possono esistere due righe uguali
7° Ogni cella deve contenere un solo valore
8° Ogni colonna deve avere un nome univoco

----------------------------------------------------------------------------------------------
Le regole di derivazione

1) la prima regola di derivazione dice che:

ad ogni entità corrisponde una tabella
ad ogni riga corrisponde un istanza dell'entità
ad ogni colonna corrisponde un attributo dell'entità
la chiave primaria è una o più colonne

2) la seconda regola di derivazione dice:

la relazione 1 a M (uno a molti) si risolve mettendo la chiave esterna,
cioè la chiave primaria della tabella che corrisponde all'1,
nella tabella appartenente al ruolo di molti.

3) la terza regola di derivazione dice che:

nella associazione M a N (molti a molti)
si ha una tabella associativa formata da chiavi esterne delle entità(/tabelle) associate,
che insieme formano la sua chiave primaria della tabella associativa.

4) la quarta regola di derivazione dice:

la relazione tra un entità forte ed un entità debole si risolve mettendo la chiave esterna,
cioè la chiave primaria della tabella/entità forte,
nella tabella/entità debole, ed insieme della chiave debole di quest’ultima entità
formano la chiave primaria della tabella dell'entità debole.

----------------------------------------------------------------------------------------------
In più:

CHIAVE ESTERNA-->è il dato che ci permette di risalire l'istanza di un altra tabella a cui è associata

Casi speciali:
Nella associazione 1 a 1, la chiave esterna va messa in una tabella, a libera scelta
Nella associazione 1(non tutti) a 1(tutti) la chiave esterna va su quella che ha tutte le istanza associate
Nella associazione 1(tutti) a 1(tutti) la chiave esterna va messa in una tabella, a libera scelta


----------------------------------------------------------------------------------------------
La Normalizzazione in breve:
Dopo aver trasformato il proprio schema concettuale in un database vero e proprio utilizzando le regole di derivazione, si passa ad normalizzare questo database:
Per normalizzazione si intende: Scovare le dipendenze funzionali, e trasitive, tra i vari attributi, e creare per esse delle tabelle separate.

----------------------------------------------------------------------------------------------
DIPENDENZA FUNZIONALE:
quando una variabile/attributo, dipende da un'altro attributo, e ne può determinare il valore.
(Tra gli attributi quindi vie è qualche tipo di relazione)

nomeOggetto-->coloreOggetto

il determinante è l’attributo che si trova a sinistra.
Si possono avare più determinanti, e più valori determinati:

(nomePersona; CognomePersona)-->codiceFiscale
nome Persona, cognome Persona determinano il codice Fiscale
(ed il codiceFiscale ha una dipendenza funzionale con nomePersona, cognome Persona)

nomeOggetto-->(coloreOggetto; formaOggetto)
nomeOggetto determina coloreOggetto e formaOggetto
(ed il coloreOggetto e formaOggetto hanno una dipendenza funzionale con nomeOggetto)

----------------------------------------------------------------------------------------------
DIPENDENZA TRANSITIVA: quando una variabile determina un'altra ed quando questultima ne determina un'altra ancora (e cosi via)

a-->b
b ha una dipendenza funzionale con a

b-->c
c ha una dipendenza funzionale con b

a-->b-->c
c ha una dipendenza funzionale con b che a sua volta ha una dipendenza funzionale con a
----------------------------------------------------------------------------------------------




----------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
Esempio:


Ipotizziamo che ci sia solo un autore per disco (per semplificare)

----------------------------------------------------------------------------------------------
(prima parte) (prima regola)

Casadiscografica( nome ; amministratore)
Discho( nome; nomeAutore; cognomeAutore; numeroTracce)

----------------------------------------------------------------------------------------------
Poi: (derivazione seconda parte) (seconda regola)

Casadiscografica( nome; amministratore)
Discho( nome; nomeAutore; cognomeAutore; numeroTracce; nome_Casadiscografica)

----------------------------------------------------------------------------------------------
Normalizzata:

C’è una relazione funzionale:
nomeAutore-->cognomeAutore

per essa creiamo una tabella a parte:
Autore( id; nomeAutore, cognomeAutore)

n.b. il determinante (nomeAutore), o anche cognomeAutore, o la chiave composta tra i due, non è consigliata come chiave primari siccome ci potrebbero essere casi di omonimia.

E la relazioniamo con la tabella Discho
(di fatto abbiamo una sorta di relazione 1 a 1, totale da entrambe le tabelle/entità
(anche se in realtà non è proprio cosi, però ricordiamo che inizialmente abbiamo ipotizzato un solo autore per disco ))

Risultato:
Casadiscografica( nome; amministratore)
Autore( id; nomeAutore, cognomeAutore)
Discho( nome; numeroTracce; id_Autore; nome_Casadiscografica)
----------------------------------------------------------------------------------------------