Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    433

    MYSQL - Contatori per ogni soggetto

    Buongiorno, devo strutturare un DB per la creazioni/gestione di ordini per diverse aziende.
    (quindi multi azienda)


    ho già creato la maggior parte del DB : articoli / clienti / ecc ecc.

    ora però per la numerazione degli ordini dove avvenire in modo progressivo per ogni singola azienda . tradotto : ogni azienda avrà il suo contatore

    ordine 1 - azienda 1
    ordine 2 - azienda 1
    ordine 1 - azienda 2
    eccc...


    come dovrei struttore le tabelle?

    immagino che ovviamente non posso mettere un campo auto increment sulla tabella degli ordini ma dovrò staccarlo... datemi uno spunto please

    grazie
    Donerò loro dei fiori... poiché... sotto le nuvole... tutto è così rozzo e sporco

  2. #2
    aggiungi un campo (es. UltimoOrdine) nell'anagrafica dell'azienda

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    433
    ma non potrebbe essere autoincrement ma calcolato quindi.
    corretto?
    Donerò loro dei fiori... poiché... sotto le nuvole... tutto è così rozzo e sporco

  4. #4
    ordine 1 - azienda 1
    ordine 2 - azienda 1
    ordine 1 - azienda 2
    ...

    Mi sembra risolvibile semplicemente relazionando le tabelle.

    1 ordine puo' essere eseguito da N aziende.
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    433
    mmm forse mi sono spiegato male...


    intando dire che essendo il sito multi azienda ogni azienda avrà il suo ordine 1 , ogni azienda avrà il suo ordine 2 eccc

    alla data XX/XX/XXXX

    una azienda avrà il contatore a 30 l' altra a 50 eccc

    NON si tratta di far vedere un ordine a più aziende , ma ogni azienda avrà i suoi contatori separati..
    Donerò loro dei fiori... poiché... sotto le nuvole... tutto è così rozzo e sporco

  6. #6
    non ti ho già risposto?

  7. #7
    ok,

    allora se vuoi creare un campo auto_increment devi creare N tabelle ordini, 1 per ogni azienda.

    Altrimenti lasci una sola tabella ordine e in fase di inserimento gestisci manualmente o in maniera differente il "contatore"
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  8. #8
    un po' OT, però: mi sono sempre chiesto, nel caso dei "multi-aziendali" perché mescolare i dati di un'azienda con quelli di un'altra?

  9. #9
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    I DB multiaziendali vengono solitamente usati dai comercialisti per gestire centinaia di imprese
    pertanto e impensabile fare DB o tabelle separate


    la soluzione praticata e
    1 tabella con l'elenco delle 100 imprese
    poi ogni record di ogni altra tabella contiene un campo specifico con la indicazione dell' ID dell'impresa


    a parer mio Urbanus deve ad ogni nuovo ordine fare il Count degli ordini
    con filtro sulla impresa
    ( e anche con filtro sull'anno perche la numerazione riparte da 1 con l'anno nuovo ? )
    poi per comodita possiamo registrare il numero dell'ultimo ordine nell'anagrafica


    Mentre la Key autoincrementale globale non deve mai mancare


    .

  10. #10
    Utente bannato
    Registrato dal
    Dec 2012
    Messaggi
    679

    Allora per ordine ci sono vari approcci

    1) si tiene il contatore in una opportuna tabella "contatori"
    2) si prende il prossimo numero come MAX(progressivo)
    3) si utilizza un funzione ad hoc (utile per le numerazioni non necessariamente numeriche e progressive. Sì, è possibile,anche se fa abbastanza ribrezzo, avere le fatture "bis")

    1) viene tipicamente usata quando serve avere subito il numero del documento,
    durante la fase di compilazione.
    Ciò in generale è male, perchè bisogna porre un lock e bloccare l'accesso al contatore.
    Nonostante questi problemi (solo meramente accennati) spesso nei gestionali più grandi
    si utilizza questo metodo, per avere contatori su più esercizi (oltre che ovviamente più aziende) e per tabelle estremamente grandi (ad es. movimenti di magazzino), e anche perchè spesso non sono progettati proprio benissimo.

    2) questo è bene nel momento in cui la chiave primaria del documento viene scritta all'ultimissimo secondo (al COMMIT), è l'approccio migliore se si dispone di un sistema
    ACID affidabile per la serializzazione delle transazioni (almeno questa, ovviamente)

    3) qui si va a briglia sciolta con semafori implementati mediante lock vari su record e chi più ne ha ne metta.

    Segnalo, per inciso, che dal 2013 la numerazione dei documenti fiscali può anche essere progressiva "per sempre" (quindi non ripartita per esercizio), e inoltre pure con indicazione "parlante"dell'anno (una delle solite pensate superfurbe).

    Ovviamente campi autoincrementanti e numeratori fiscali fanno ridere, non mi dilungo.

    Riguardo poi all'azienda (o "polo") è praticamente ovvio che qualsiasi programmello anche da 4 soldi, al giorno d'oggi, deve marcare ogni singola riga col relativo "polo amministrativo" (o codice azienda che dir si voglia, dipende dalla nomenclatura adottata come prassi).

    D'altronde sarebbe pure bene che fosse in grado di gestire anche più tabelle diverse, questo per ragioni invece di facilità di controllo accesso per i dipendenti, cosa che può essere fondamentale oppure no.

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.