Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente bannato
    Registrato dal
    Mar 2002
    Messaggi
    1,811

    problema su utenti e dababase in uso

    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:

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    E bloccare solamente la tupla della tabella? Oppure effettuare un controllo prima di confermare l'acquisto?


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    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!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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.