Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Normalizzazione mysql

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    19

    Normalizzazione mysql

    Buongiorno a tutti. E' la prima volta che uso un database relazionale e vorrei partire con il piede giusto. La mia richiesta è generica, ma mi serve a capire un po' di cose: devo creare un db con commesse, ordini, e articoli. Ogni commessa avrà molti ordini e ogni ordine avrà diversi articoli. Teniamo presente che con gli anni gli ordini potranno arrivare anche a migliaia, se non decine di migliaia di record, e gli articoli saranno decine di migliaia, se non centinaia di migliaia. Per una corretta normalizzazione del db dovrei per ogni ordine avere un riferimento alla commessa e per ogni articolo avere un riferimento a un ordine. Questo in teoria, perchè mettiamo che debba fare una query che mi estragga tutti gli articoli andati in una commessa: dovrei prima fare una query che mi estragga tutti gli ordini di quella commessa e poi farne un'altra che mi estragga tutti gli articoli degli ordini estratti con la prima query. Mettiamo invece che il riferimento alla commessa lo inserisca anche nella tabella degli articoli oltre che in quella degli ordini: sarebbe un'evidente ridondanza, ma mi permetterebbe di realizzare un codice meno macchinoso e probabilmente più veloce. Cosa ne pensate? Grazie delle risposte.

  2. #2
    nella commessa avrai gli id degli ordini che la compongono; negli ordini avrai gli id degli articoli coinvolti. con una semplice join potrai sapere quali articoli sono compresi in una data commessa.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    19
    Veramente pensavo di fare al contrario: per ogni ordine ho l'ID della commessa alla quale fa riferimento e per ogni articolo ho l'ID dell'ordine al quale fa riferimento. Questo perchè ogni commessa ha, magari, centinaia di ordini e come faccio nel record della commessa a inserire il riferimento a centinaia di ordini? Mi faresti poi un essmpio dell'uso della join come lo intendevi? Grazie per l'aiuto.

  4. #4
    è vero che un ordine fa parte di una sola commessa, ma l'articolo può esser parte di n ordini!

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    19
    Originariamente inviato da optime
    è vero che un ordine fa parte di una sola commessa, ma l'articolo può esser parte di n ordini!
    Per la verità no. Posso fare un ordine di 10 articoli e questi 10 articoli appartengono a quell'ordine. E' possibile che un ordine successivo comprenda gli stessi articoli, ma avranno come riferimento un ordine diverso!

  6. #6
    Originariamente inviato da paolob73
    Per la verità no. Posso fare un ordine di 10 articoli e questi 10 articoli appartengono a quell'ordine. E' possibile che un ordine successivo comprenda gli stessi articoli, ma avranno come riferimento un ordine diverso!
    appunto! NON puoi memorizzare l'ordine di riferimento nell'articolo, altrimenti avresti sempre e solo l'ultimo. quindi l'ordine lo devi spezzare in testata e dettagli, e nei dettagli metti il riferimento all'ordine e agli articoli.

    commessa
    -------------
    id
    descrizione
    ... altro

    ordine_testata
    ---------------
    id
    id_commessa
    descrizione
    ... altro

    ordine_dettaglio
    ------------------
    id
    id_ordine_testata
    id_articolo
    .... altro

    articolo
    --------------
    id
    descrizione
    .... altro

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    19
    Allora OK! Stavamo dicendo la stessa cosa, ma mi sono spiegato male: per tabella articoli intendevo quello che tu intendevi per ordini_dettaglio. Di realizzare una tabella specifica per gli articoli non ci avevo pensato...grazie per le dritte!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.