mercoledì 25 novembre 2009

COMPITI

Ecco i copiti da lei ass.
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)

Dipendenze:


( 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

da ormai un paio di settimane sto lavorando ad un progetto, un ENGINE3D!!

poi spiegherò cosa è un engine 3D ma per il momento... posto solo un immagine


E' scritto in c++ ed usa le librerie openGL e win32!

domenica 15 novembre 2009

concetti di base r. d.b. versione immagine

Per un aspetto migliore ho preferito stampare la mia versione word:

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:

Le righe devono contenere le istanze dell’entità
Le colonne devono contenere gli attributi dell’entità
Non è importante l’orine delle righe
Non è importante l’ordine delle colonne
Tutte le celle devono contenere dati del medesimo tipo (omogenei)
Non possono esistere due righe uguali
Ogni cella deve contenere un solo valore
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)
----------------------------------------------------------------------------------------------