PDA

Visualizza la versione completa : problema su utenti e dababase in uso


amodio
07-07-2004, 16:53
salve a tutti

avendo un programma che gira su 10 ditte che si appoggiano verso un'unico server che contiene il database

è uscito questo problema:

la ditta A man mano che fa vedere il proprio catalogo al cliete, carica la lita degli articoli con la relativa quantita,ovvio che se la quantita è minore a 1 non lo fa comprare!!!!

il punto è che il cliente ci mette sempre un po di tempo a fare gli acquisti, e ...nel frattempo se la ditta B con il suo cliente frettoloso carica la lista e compra quell'articolo a giacenza 1!!!!
la ditta A nel suo scehrmo fara sempre vedere giacenza uno",ma è un valore fittizzio xche non è stata ricaricato il database da internet

come si puo' fare?

quindi
cosa mi consigliate di fare?
mandare un avvertimento alla ditta che sta utilizzando lo stesso articolo nel medesimo arco di tempo?-->uhm secondo me impossibile :master:

caricare il loro database ogni 5 secondi?-->uhm lentissimo :master:

bloccare la tabella del database? -->mah 10 ditte non riusciranno mai a fare niente . :master:

LeleFT
07-07-2004, 17:08
E bloccare solamente la tupla della tabella? Oppure effettuare un controllo prima di confermare l'acquisto?


Ciao. :ciauz:

alka
07-07-2004, 17:19
Generalmente, queste problematiche vengono gestite lato server definendo opportune regole (business rules) all'interno del database il quale provvede autonomamente a scartare tutti i dati non validi.

Nel caso in esame, se l'utente A consuma tutti gli articoli in giacenza, l'utente B deve ricevere un errore quanto tenta di inviare un ordine che includa articoli non più disponibili.

L'indicazione lato client della giacenza, a mio avviso, è un'informazione utile, sebbene non farei nulla per mantenerla periodicamente aggiornata (si tratterebbe di una richiesta onerosa per il database server, considerando un panorama con molte stazioni connesse) istruirei l'operatore affinchè consideri tale indicazione come una stima di massima (se la quantità è già a zero, inutile inviare l'ordine); l'operatore non deve comunque fare affidamento su tale indicazione: in poche parole, vale la giacenza quando l'ordine viene effettivamente inviato (con relativo messaggio di errore nel caso sia impossibile portarlo a termine per mancanza di articoli a magazzino).

Per finire, ingloberei tutto quanto in una transazione, senza correre il rischio di sottrarre articoli a magazzino per confermare un'ordine che verrà poi interrotto a metà per un'eventuale assenza di articoli disponibili per un determinato prodotto (succede molto spesso).

Riassumendo, avvierei una transazione per racchiudere la definizione dell'ordine; l'operatore seleziona gli articoli desiderati per i quali viene riportata la quantità attuale; quando l'operatore invia l'ordine, il server valida tutte le righe accertandosi che la quantità sia sufficiente e i dati siano validi; in caso affermativo, la transazione viene confermata e l'intero ordine viene preso in carico, aggiornando le tabelle delle quantità a magazzino di conseguenza; in caso contrario, l'ordine viene rifiutato e la transazione rimane sospesa fino a quando l'operatore non cambierà le proprie scelte oppure non porrà fine all'ordine annullandolo (che si tradurrà poi nella cancellazione della transazione).

Il tutto, ovviamente, a livello molto teorico... :)

Ciao! :ciauz:

Loading