Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Organizzare una tabella per un gestionale

    Ciao, volevo un consiglio su come organizzare un database.
    Allora, vediamo se riesco a spiegarvi la cosa.
    Dovrei fare un piccolo gestionale in php + MySQL per organizzare le offerte fatte dall'ufficio commerciale della mia azienda, e la tabella dovrebbe essere più o meno così:
    - numero offerta
    - cliente
    - data
    - bene offerto
    - importo

    Il mio problema sta nel numero dell'offerta, in quanto è composto da un prefisso (l'anno) e da un progressivo che ogni anno deve azzerarsi, quindi del tipo 2004.0568 (offerta 568 dell'anno 2004).
    PEnsavo diusare un campo per l'anno ed uno per il progressivo, ma non posso usare un auto_increment, in quanto ogni primo gennaio deve essere riazzerato.
    La soluzione era di andare a leggere l'ultimo numero inserito e di fare un + 1, ma siccome il gestionale può essere utilizzato da più persone contemporaneamente, potrei rischiare la duplicazione del numero di offerta, o il non inserimento per errore, se definisco il campo come unico.
    Una soluzione potrebbe essere quella di usare una tabella per ogni anno, e poi il progressivo sarebbe stato un semplice campo auto_increment, ma io volevo sapere come fare per utilizzare una sola tabella.

    Sono riuscito a spiegarmi, oppure ho fatto solo confusione :master:
    GNU/Linux is the answer...now, what was your question?

  2. #2
    Se non erro MySql gestisce perfettamente la concorrenza, quindi basta che lo setti come campo univoco, e fai un controllo appena prima del salvataggio del valore nel db.

  3. #3
    Ciao.

    Ho anch'io delle situazioni del genere. Le soluzioni possono essere varie. Da una tabella per anno, all'incremento + 1 del valore precedente. Rimane sempre in ogni caso la gestione del cambio anno.
    In pratica come gestire il cambio dell'anno e l'azzeramento del dato progressivo.

    Attualmente utilizzo due modi.

    1) una tabella per anno.

    2) Il numerello lo fornisco da una tabella numerelli. In pratica il numero viene inserito nella tabella in modo automatico, letto da una tabella protocolli che verra' aggiornata con la flag di usato, data e da chi. A fine inserimento passo allo user il protocollo assegnato.
    Di tabelle numerelli ovviamente ce ne sara' una per anno. Il nome della tabella numerelli e' il valore YEAR ....



    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Ciao Roger,
    tutti le soluzioni che ti hanno proposto sono valide, però se vuoi usare una sola tabella potresti applicare un lock per assicurarti che l'id che viene creato possa essere davvero unico

    In particolare in fondo a questa pagina se vuoi usare una tabella di tipo innoDb
    http://dev.mysql.com/doc/mysql/en/In...ing_reads.html

    oppure anche con le normali tabelle MyIsam
    http://dev.mysql.com/doc/mysql/en/LOCK_TABLES.html
    http://dev.mysql.com/doc/mysql/en/Mi...functions.html
    per favore NIENTE PVT TECNICI da sconosciuti

  5. #5
    E io lo sapevo che arrivava Fabio a risolvermi tutti i problemi!

    Tnx a lot Fabietto, ora vado a leggere i link.
    Come ti va? E' un pezzo che non ci si vede
    GNU/Linux is the answer...now, what was your question?

  6. #6
    Originariamente inviato da genset
    E io lo sapevo che arrivava Fabio a risolvermi tutti i problemi!

    Tnx a lot Fabietto, ora vado a leggere i link.
    Come ti va? E' un pezzo che non ci si vede
    ti mando un pvt
    per favore NIENTE PVT TECNICI da sconosciuti

  7. #7
    Originariamente inviato da Fabio Heller
    ti mando un pvt
    OK!

    Attendo
    GNU/Linux is the answer...now, what was your question?

  8. #8
    Fabio,
    tu mi consigli di usare innoDb o MyIsam?
    GNU/Linux is the answer...now, what was your question?

  9. #9
    Se ti servono funzionalità avanzate come le transazioni meglio le InnoDB (ma a questo punto quasi, quasi sostituirei il db con Postgres).
    Direi che puoi usare benissimo le MyIsam con il lock a livello di tabella o con get_lock
    per favore NIENTE PVT TECNICI da sconosciuti

  10. #10
    Originariamente inviato da Fabio Heller
    Se ti servono funzionalità avanzate come le transazioni meglio le InnoDB (ma a questo punto quasi, quasi sostituirei il db con Postgres).
    Direi che puoi usare benissimo le MyIsam con il lock a livello di tabella o con get_lock
    OK!
    Grazie mille
    GNU/Linux is the answer...now, what was your question?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.