giovedì 3 dicembre 2009
mercoledì 25 novembre 2009
COMPITI
perfavore se può controlli il 9... che molto probabilmente è sbagliato...
ESERCIZIO 13 pag233
Materiali (Codice, Descrizione, Fornitore, Prezzo, IndirizzoFornitore, Quantità, PosizioneInMagazzino, Acciaio, NomeAcciaio, ResistenzaAcciaio, NomeFornitore)
Dipendenze
Acciaio -->(NomeAcciaio, ResistenzaAcciaio) //2rN
NomeAcciaio --> ResistenzaAcciaio //3rN
Acciaio --> ResistenzaAcciaio (transitiva) //3rN
Fornitore --> (IndirizzoFornitore, NomeFornitore) //2rN
Tabelle
Acciaio(Acciaio, NomeAcciaio) //2rN e 3fN
TipoAcciao(NomeAcciaio, ResistenzaAcciaio) //3fN
Fornitore (Fornitore, IndirizzoFornitore, NomeFornitore) //2rN
Materiali(Codice, Descrizione, Prezzo, IndirizzoFornitore,
Quantità, PosizioneInMagazzino, Acciaio, Fornitore) //2rN
ESERCIZIO 12 pag233
Scrivo la tabella di base:
Libro (CodiceDelLibro, NomeAutore, TitoloLibro, NomeEditore, IndirizzoEditore, Prezzo, AnnoEdizione)
Determino la chiave primaria:
Libro (CodiceDelLibro, NomeAutore, TitoloLibro, NomeEditore, IndirizzoEditore, Prezzo, AnnoEdizione)
Normalizzazione:
1fN:
Non vi sono dati ripetuti.
2fN:
Trovo dipendenze:
IndirizzoEditore --> nomeEditore
//siccome l’indirizzo può avere solo un editore, quindi solo quel nome, ed l’indirizzo è un dato univoco, mentre possono esistere editori con nomi uguali
3fN:
non ci sono dipendenze transitive
tabelle finali
Editore(IndirizzoEditore, nomeEditore)
Libro (CodiceDelLibro, NomeAutore, TitoloLibro, Prezzo, Anno Edizione, IndirizzoEditore)
Esercizio 11 pag233
//////////////
Tabella 1:
Esami1(Corso, Matricola, Data, Voto, NomeCorso)
Dipendenze:
(Matricola, Corso) --> Voto
Corso --> NomeCorso
Tabelle:
Corso(Corso, NomeCorso)
Matricola(Matricola, Corso, Voto)
Esami1(Corso, Matricola, Data)
///////////////
Tabella 2:
Esami2(Corso, Matricola, Data, VotoInCifre, VotoInLettere)
( Matricola, Corso )-->(VotoInCifre, VotoInLettere)
Proprietà transitiva:
VotoInCifre --> VotoInLettere
VotoInLettere --> VotoInCifre
( Matricola, Corso ) --> VotoInLettere
( Matricola, Corso ) --> VotoInCifre
Per togliere la 3° forma normale, siccome VotoInCifre e VotoInLettere possono essere sia determinanti che determinate, scelgo come determinante VotoInCifre
Tebelle :
Matricola(Matricola, Corso, VotoInCifre)
VotoCifre(VotoInCifre, VotoInLettere)
Esami2(Corso, Matricola, Data)
ESERCIZIO 10 pag233
Anagrafica (Nome, Cognome, Matricola, Nascita, Indirizzo, CodiceDipartimento, NomeDipartimento, IndirizzoDipartimento, Stipendio)
Dipendenze:
CodiceDipartimento --> (NomeDipartimento, IndirizzoDipartimento)
Tabelle:
Dipartimento(codiceDipartimento, NomeDipartimento, IndirizzoDipartimento)
Anagrafica (Matricola , Nome, Cognome, Nascita, Indirizzo, CodiceDipartimento)
ESERCIZIO 9 pag233
Tabella1(NomeStudente, DataDiNascitaStudente, indirizzoStudente, numeroTelefonicoStudente, viaStudente, numeroCivicoStudente, cittaResidenzaStudente, cittaDiNascitaStudente, VotoMateria1, VotoMateria2, VotoMateria3, VotoMateria4, VotoMateria5, VotoMateria6, VotoMateria7, VotoMateria8, VotoMateria9)
Tabella:
Tabella1(NomeStudente, DataDiNascitaStudente, indirizzoStudente, numeroTelefonicoStudente, viaStudente, numeroCivicoStudente, cittaResidenzaStudente, cittaDiNascitaStudente, VotoMateria1, VotoMateria2, VotoMateria3, VotoMateria4, VotoMateria5, VotoMateria6, VotoMateria7, VotoMateria8, VotoMateria9)
1,2 Normalizazione
Studente(NomeStudente, DataDiNascitaStudente, indirizzoStudente, numeroTelefonicoStudente, viaStudente, numeroCivicoStudente, cittaResidenzaStudente, cittaDiNascitaStudente, Materia_id )
Materia(id, VotoMateria1, VotoMateria2, VotoMateria3, VotoMateria4, VotoMateria5, VotoMateria6, VotoMateria7, VotoMateria8, VotoMateria9)
Oppure:
Tabella:
abbiamo 2 entità materia e voti: quindi 2 tabelle
associate Molti a Molti
Studente(NomeStudente, DataDiNascitaStudente, indirizzoStudente, numeroTelefonicoStudente, viaStudente, numeroCivicoStudente, cittaResidenzaStudente, cittaDiNascitaStudente)
Materia(nomeMateria,votoMateria)
Associazioni:
Valutato(nomeMateria, NomeStudente, DataDiNascitaStudente, indirizzoStudente, numeroCivicoStudente )
Studente(NomeStudente, DataDiNascitaStudente, indirizzoStudente, numeroTelefonicoStudente, viaStudente, numeroCivicoStudente, cittaResidenzaStudente, cittaDiNascitaStudente)
Materia(nomeMateria,votoMateria)
sabato 21 novembre 2009
ENGINE 3D openGL
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:

----------------------------------------------------------------------------------------------
(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)
----------------------------------------------------------------------------------------------

