Modello Entity/Relationship e modello logico

Lawrence

Passante
Ciao a tutti, sono ufficialmente in crisi -.-

Ho serissime difficoltà nel passaggio dal modello E/R alle tabelle. Parto dicendo che nel mio istituto usiamo Access nelle ore di laboratorio e carta e penna in classe. Quando uso Access mi trovo molto bene perché le relazioni si creano da sole inserendo ricerca guidata come tipo del campo della tabella. Quando invece parto dal problema, costruisco il modello E/R e PROVO di passare alle tabelle, confronto il risultato che ottengo in Access con il risultato cartaceo e sono diversi, spiego perché.

Metodo Access --> Prendo, ad esempio, due tabelle, Voti e Materie. Voti contiene la sua chiave primaria a incremento, il campo voto, il campo argomento/i e il (fottutissimo) campo materia. La tabella Materie contiene il suo ID e il campo nome. Nel campo materia della tabella Voti inserisco ricerca guidata che punta all'ID_Materia, si crea quindi una relazione 1..N. STOP

Metodo carta e penna --> Prendo due entità Voti (con campi ID_Voti, Voto e Argomenti) e Materie (con campi ID_Materie e Nome). La relazione è 1..N come per Access (se fosse N..N ci sarebbe da mettere l'entità fittizia, per fortuna NO) ma quando trascrivo il tutto in tabelle se metto Materia come campo della tabella Voti il voto scende da 10 a 5 ( -.- ). Ovviamente ho messo la chiave esterna in Materia verso Voti, per chiarire. I miei professori sono molto esigenti e vogliono cose da una testa come la mia che non potranno mai avere. Sta di fatto che ormai sono in quinta e all'esame ci devo arrivare in un qualche modo... no?

Il problema che ho postato è molto semplice (utilizziamo una decina di entità per problema circa). Ho un compito prossima settimana sulle decine di entità, un'altro subito quella dopo su entità semplici ma su MySql e un'interrogazione di recupero chiesta da me dopo svariate lamentele. Per questo sono disperato... Ho visto che di informatici/ex-informatici ce ne sono, se leggete please help me!
 

Voidmain

Zoidberg
Guarda, io ho fatto queste cose 3 anni fa quindi non posso darti consigli specifici. Al limite se ho tempo posti un problema e cerco di aiutarti! Se non te lo hanno già detto a scuola per realizzare una struttura dati si seguono 4 passaggi:

1) Analisi del problema: questa è secondo me la parte più importante di tutte! Quando andavo a scuola io nei testi non venivano specificate molte cose ma ovviamente io e alcuni miei compagni ci facevamo delle pippe mentali su come poteva o non poteva essere quel determinato passaggio etc... Il mio consiglio è non fartele! Nel senso, chiedi sempre al professore e cerca "delle scappatoie", nel senso limitati esclusivamente alla risoluzione del problema e non cagarti eventuali ambiguità del testo. 
Rileggitelo fino alla nausea per ottimizzare il tuo futuro modello!

2) Modello concettuale: questo è il passaggio chiave, se sbagli questo, sbagliamo tutto. Parti dallo scrivere una "pseudo-tabella" , pensa al classico esempio Studente - Professore. Uno Studente fa parte di una Classe -> In ogni Classe insegna un Professore -> Ogni Professore insegnerà una Materia. Questo è un modello concettuale valido (seppur stupido), da qui a passare al diagramma E/R è un attimo! (Ovviamente un minimo di logica per le relazioni serve eh!)

3) Modello Logico: se ho capito bene questo è il passaggio che ti da più fastidio. Io facevo così: disegnavo tutte le tabelle >> Relazioni N:N? Se si guardavo quali erano, prendevo le chiavi di entrambe e ci facevo le altre tabelle >> Una volta disegnato tutto facevo le freccette e partivo da una tabella a caso e vedevo se attraverso le key riuscivo ad arrivare a qualunque tabella (se possibile, sempre rispettando il modello concettuale eh).

4) Test: non mi chiedere di scrivere codici perchè mi ricordo poco xD! Comunque poi lo vai a testare effettivamente su PC. Crei il database, e vi accedi tramite codice! Se funge tutto hai finito!

Ho trattato la questione in modo molto randomico, senza andare nello specifico...se ti serve altro scrivi!

Un ultimo consiglio: tanti esercizi! PROVA PROVA PROVA! 
Buon lavoro :)
 
Top Bottom