Prefazione: non ho esperienza con motori di regole, regole di costruzione, regole di modellazione, implementazione di strutture di dati per regole o quant'altro. Pertanto, non so cosa sto facendo o se quello che ho tentato di seguito è completamente fuori base.Che cos'è una struttura dati appropriata e uno schema di database per memorizzare le regole logiche?
Sto cercando di capire come memorizzare ed elaborare il seguente scenario ipotetico. Per semplificare il mio problema, diciamo che ho un tipo di gioco in cui un utente acquista un oggetto, dove potrebbero esserci migliaia di oggetti possibili, e gli oggetti devono essere acquistati in una sequenza specifica e solo in determinati gruppi. Ad esempio, supponiamo che io sia l'utente e desidero acquistare l'oggetto F. Prima di poter acquistare l'oggetto F, è necessario aver acquistato in precedenza l'oggetto A OR (B AND C). Non posso comprare F e A allo stesso tempo, né F e B, C. Devono essere nella sequenza specificata dalla regola. Un primo, poi F dopo. O, B, C prima, poi F dopo. Al momento non mi interessa l'intervallo di tempo tra gli acquisti o qualsiasi altra caratteristica dell'utente, solo che per ora sono la sequenza corretta.
Qual è il modo migliore per archiviare queste informazioni per potenzialmente migliaia di oggetti che mi consentono di leggere le regole per l'oggetto acquistato e quindi controllarlo rispetto alla cronologia acquisti precedente dell'utente?
Ho tentato di farlo, ma sono bloccato nel tentativo di implementare i raggruppamenti come A OR (B AND C). Vorrei memorizzare le regole in un database dove ho queste tabelle:
Objects
(ID(int),Description(char))
ObjectPurchRules
(ObjectID(int),ReqirementObjectID(int),OperatorRule(char),Sequence(int))
Ma ovviamente, come si elabora attraverso i risultati, senza il raggruppamento, si ottiene la risposta sbagliata. Vorrei evitare un'eccessiva analisi delle stringhe, se possibile :). Un oggetto potrebbe avere un numero sconosciuto di acquisti precedenti richiesti. Snippet SQL o psuedocode per l'elaborazione delle regole sarebbero apprezzati. :)