Consigli creazione DB veloci per esame di stato

di il
7 risposte

Consigli creazione DB veloci per esame di stato

Ciao a tutti,
a scuola abbiamo fatto una simulazione della seconda prova dell'esame di stato che consiste nella progettazione di un DB e purtroppo ho consumato tutte le 6 ore senza riuscire a concluderlo completamente per il fatto che ci ho impiegato molto tempo avendo creato anche troppe entita' e quindi perso abbastanza tempo nella progettazione e disegno del modello e-r, stesura dello schema logico, ma dovrei essere riuscito a rispettare la 3NF.
Dopo questa esperienza mi chiedevo se esistevano dei metodi di lavoro per procedere in modo piu' veloci attraverso delle procedure di analisi e in base al tipo di lavoro applicare dei template di modelli E-R per accellerare i lavori.
Il tema della simulazione era la gestione di un negozio di libri online dove ho tirato fuori una decina di entita', secondo me troppi per cosi' poco tempo anche perche' poi ho avuto difficolta' nelle query perche' dovevo collegare molte tabelle insieme( ma per rispettare la 3NF non mi sembra ci siano tante alternative), e ho inserito anche un'ereditarieta' a cui ho associato delle viste per avere facile accesso ad autori e utenti.
Accetto commenti e consigli di qualunque tipo, ed e' altamente apprezzato l'indirizzamento a tutorial online anche in inglese.
Grazie a tutti in anticipo.
Alla migliore risposta

7 Risposte

  • Re: Consigli creazione DB veloci per esame di stato

    Ciao,

    premetto che secondo me il modo per acquisire velocita' nello svolgimento di esercizi e' fare tanti esercizi.

    Comunque, per cercare di velocizzare e tenere tutto sotto controllo puoi fare in vari modi ad esempio :

    ti leggi il testo e man mano che individui entita te le segni semplicemente su un foglio a parte,
    ti rileggi il testo alla ricerca a questo punto delle relazioni e le appunti sempre da una parte. Stessa cosa per gli attributi.

    Nota bene il testo va letto tutto comprese le query perche' un buon progetto si puo' definire tale se almeno consente di rispondere alle richieste (query) dell'utente. Poi ci saranno vari livelli di bonta' ma questo e' un altro discorso...

    A questo punto hai un elenco di entita relazioni e attributi.

    Per le entita vedi se ce ne sono alcune superflue ed eventualmente eliminale. A questo punto se hai fatto tutto bene proseguire con diagrammi e/r e schema logico non sara' difficile.
  • Re: Consigli creazione DB veloci per esame di stato

    Grazie mille Bomberdini,
    ho fatto esattamente come hai suggerito durante la simulazione, mi sono fatto dare subito 2 fogli di cui uno aperto e diviso per prendere appunti vari dividendo in 4 sezioni, mi sono letto tutto, alla seconda lettura ho iniziato ad elencare tutte le richieste. Poi ho mollato il testo e provato ad immedesimarmi sia come cliente(pensando a quando acquisto su laFeltrinelli) ed eventuali operatori che devono aggiornare il negozio online. Ho cercato di migliorare le note che mi sono tirato giu, riletto il testo per essere sicuro che non mi sia sfugito nulle, e ho iniziato in parallello a creare un elenco delle entita' con la descrizione e motivazione delle mie scelto(come ci diceva la prof.) e la definizione del modello E-R con solo entita' e relazioni senza dettagli, finito questo ho dato nomi alle relazioni e studiato i tipi di relazioni, infine ho dettagliato le entita' con gli attributi ricercandoli nel testo perche' avevo cerchiato le entita', quest'ultimo lavoro mi ci e' voluto molto poco anche perche' il teste credo fosse semplificato perche' avevo gia dichiarato gli attributi in un elenco abbastanza esauriente.
    Dopo ho iniziato a risolvere le relazioni eventuali attributi non indispensabili, tabelle non necessarie, ridondanze, e rispettare la 3NF con solo i dettagli delle modifiche del modello ER esteso. Questo passo mi ha richiesto molto tempo 1 ora, quasi quanto lo studio, dopo ho iniziato a buttare giu lo schema logico e infine fatto le query. tranne il primo punto che mi ha preso 1,5 ore rispetto alle 2 che pensavo gli altri mi hanno richiesto almeno 15 min in piu' anche perche' quando le entita' diventano troppe si fa tutto piu' complicato, mi sono dovuto creare un sacco di viste per le query, non essendo pratico delle concatenazioni di join.
    Cosa ne pensi di questo sistema e cosa posso togliere dai passaggi e dove hai eventuali consigli per velocizzare.
    Lingyong Sun
  • Re: Consigli creazione DB veloci per esame di stato

    1) Se sei sicuro e convinto di aver creato molte entità tutte coerenti, facendo anche descrizioni dettagliate, hai provato a parlarne con la prof. della tua difficoltà di chiudere tutto il discorso entro le 6 ore? Se tutto sta fatto per bene, può darsi che la tua prof. tenga bene in considerazione la tua idea di dove volessi arrivare e comprendere l'impossibilità temporale del progetto e apprezzare comunque la coerenza del tuo sforzo.
    2) Il database Feltrinelli è un superdatabase davvero molto articolato. Se la domanda era semplicemente "creare un DB per un negozio on-line", può darsi che ti sei posto troppe domande dalla parte del Cliente che evidentemente al momento (entro le 6 ore di progettazione) doveva aspettare ancora un po'.

    Lysz210 ha scritto:


    mi sono dovuto creare un sacco di viste per le query, non essendo pratico delle concatenazioni di join.
    "...non essendo pratico delle concatenazioni di join..." diventa preoccupante. Come puoi creare un database articolato senza una idea chiara delle relazioni?

    Lysz210 ha scritto:


    Cosa ne pensi di questo sistema e cosa posso togliere dai passaggi e dove hai eventuali consigli per velocizzare.
    Finora si è parlato molto in astratto, occorrerebbe una descrizione dettagliata di tutti gli oggetti che hai creato, relazioni ecc...cioè occorre analizzare il database.
  • Re: Consigli creazione DB veloci per esame di stato

    Ciao,

    in linea di massima va bene come hai operato.

    Due appunti :
    Inanzitutto il foglio d'esame che ti viene consegnato e' una simulazione di cio' che succede realmente. Quindi li sopra c'è scritto tutto e solo quello che vuole il cliente. Nella vita reale quello e' un documento di requisiti che viene stilato insieme al cliente con un ingegnere nel ruolo di analista.

    Quindi ok aver presente il dominio di interesse ma, non mi soffererei a farmi troppe domande. Sicuramente si potrebbero aggiungere dettagli alla traccia, ma il cliente ti ha chiesto quello e non quello piu' altro

    Seconda cosa creare viste puo' andare bene perche' comunque il problema l'hai risolto ma come tu stesso dici e' dispendioso e si perde molto tempo quindi impara a fare query con join da qui a giugno vedrai che ti troverai meglio
  • Re: Consigli creazione DB veloci per esame di stato

    Il fatto di fermarti alla 3fn, vado a memoria include le m-m, quindi già un discreto livello, ma non comprende la relazione gerarchica, per la quale serve rinunciare alla 3fn, per orientarsi alla denormalizzazione, quindi non capisco cosa intendi quando dici 'ereditarietà'.... attributo più consono aduna programmazione ad oggetti...
    Ora quello che non capisco è se trovi difficoltà nel disegno e test o altro ?
    Per il disegno usa pure access che ha un editor molto semplice sia per le relazioni tra le tabelle che per la costruzione di queries, per i test devi inserire dati.... e vedere se girano tutti, bastano pochi dati.

    28/04/2013

    Rettifico, il fatto di fermarti alla 3FN esclude le MOLTI-MOLTI, quindi la questione è meno complessa, per la questione ereditarietà invece, se come si intuisce viene riferita ad una gestione Rerarchica, devi fare attenzione se la vuoi SINGOLA o FLESSIBILE.
    Nel 1° caso, un'elemento può avere SOLO 1 padre, basta che nella Tabella elemento vi sia la CIHAVE_PADRE e collegare la Tabella Elementi, in AUTOREFERENZIAZIONE su setessa scambiando la PK con la FK nella relazione.
    Nel 2° caso, ogni elemento può avere più padri, allora serve una sorta di MOLTI-MOLTI, che tuttavia è una denormalizzazione della 4FN, con una Tabella di definizione GERARCHICA nella quale metti PADRE-FIGLIO(e dettagli) e dalla parte 1(Padre) la PK della Tabella Elementi e dalla parte M(Figli) sempre la PK della Tabella Elementi in AUTOREFEENZIAZIONE.
  • Re: Consigli creazione DB veloci per esame di stato

    Credo che per ereditarieta' intenda la gerarchia IS-A.

    Parlando di esame di stato, l'esame e' solo scritto su carta quindi non potra' usare access...

    @Lysz210
    Tuttavia per testare le query ci sono dei metodi che su carta per piccole prove vanno bene. Se ti interessa te li dico

    ciao
  • Re: Consigli creazione DB veloci per esame di stato

    Bomberdini ha scritto:


    Credo che per ereditarieta' intenda la gerarchia IS-A.

    Parlando di esame di stato, l'esame e' solo scritto su carta quindi non potra' usare access...

    @Lysz210
    Tuttavia per testare le query ci sono dei metodi che su carta per piccole prove vanno bene. Se ti interessa te li dico

    ciao
    Questo e' interessantissimo.
    Per quanto riguarda lo schema, non me lo ricordo molto bene e devono ancora consegnarci le simulazioni.
    Si per ereditarieta' intendo proprio il IS-A, nel mio progetto l'ho usato per utente e autore, che poi l'entita' padre viene usato anche direttamente da una tabella come Direttore della casa editrice.
    Per quanto riguarda le query non sono molto pratico con le join concatenate, sono abituato a quella semplice tra 2 tabelle, qualcuno ha qualche consiglio per svilupparle senza intoppi? Per il momento quando vedo una query comincio a sottolineare in matita e siglare con i simboli le parti che riguardano la proiezione, selezione e congiunzione in modo da avere uno schema iniziale della query, senza pensarci troppo, e poi vedo eventuali raggruppamenti e altri punti di interesse.
    Per quanto riguarda la 3NF sinceramente non riesco a capirlo molto bene, quello che al momento riesco a dirvi (dopo una lunga ricerca online) e' che si deve essere nella 2NF(di conseguenza in 1NF) e che tutti gli attributi devono dipendere esclusivamente dalla/dalle chiave primaria e non da altri attributi, come ad esempio in persona l'indirizzo deve obbligatoriamente diventare un'entita' in quanto per esempio il civicodipende oltre che dalla persona anche dai vari elementi dell'indirizzo e quindi necessita' di una separazione.
    E per quanto riguarda l'ereditarie' la risolvo con un semplice 1:1, ho provato in postgresql a risolverle con INHERIT ma mi ha dato dei risultati che non mi sono piaciuti in quanto crea un legame suo interno e non mi rispetta nemmeno la chiave primaria del padre creando delle duplicazioni(la stessa guida spiega questa situazione).
    Non so se qualcuno e' fresco di esami e mi puo' dire se e' indispensabile rispettare la 3NF, secondo me e' piu importante cercare di completare tutte le richieste fatte dall'esame e non creare un DB perfetto, ma sviluppato al meglio per coprire tutte le necessita' richieste e rientrare nel tempo limite, anche perche' ora so gia' che non mi bastera' il tempo se continuo lo sviluppo in questo modo.
    Intanto vi ringrazio tutti quanti per i consigli dati( ora sono impegnato nel trasloco e nella tesina ) e cerchero' di fare del meglio per seguirne piu' possibile, appena arriva la correzione cerchero' di postare una img del modelle E-R
Devi accedere o registrarti per scrivere nel forum
7 risposte