Préface: Je n'ai aucune expérience avec les moteurs de règles, les règles de construction, les règles de modélisation, l'implémentation de structures de données pour les règles, ou quoi que ce soit d'autre. Par conséquent, je ne sais pas ce que je fais ou si ce que j'ai essayé ci-dessous est loin de la base.Qu'est-ce qu'une structure de données et un schéma de base de données appropriés pour stocker les règles logiques?
J'essaie de comprendre comment stocker et traiter le scénario hypothétique suivant. Pour simplifier mon problème, disons que j'ai un type de jeu où un utilisateur achète un objet, où il pourrait y avoir des milliers d'objets possibles, et les objets doivent être achetés dans une séquence spécifiée et seulement dans certains groupes. Par exemple, disons que je suis l'utilisateur et que je veux acheter l'objet F. Avant de pouvoir acheter l'objet F, je dois avoir préalablement acheté l'objet A OU (B et C). Je ne peux pas acheter F et A en même temps, ni F et B, C. Ils doivent être dans la séquence spécifiée par la règle. Une première, puis F plus tard. Ou, B, C d'abord, puis F plus tard. Je ne suis pas concerné en ce moment avec l'intervalle de temps entre les achats, ou d'autres caractéristiques de l'utilisateur, juste qu'ils sont la séquence correcte pour le moment.
Quelle est la meilleure façon de stocker ces informations pour potentiellement des milliers d'objets qui me permet de lire dans les règles de l'objet acheté, puis le vérifier contre les antécédents d'achat de l'utilisateur?
J'ai essayé, mais je suis coincé à essayer de mettre en œuvre les groupements tels que A OU (B et C). Je voudrais stocker les règles dans une base de données où j'ai ces tables:
Objects
(ID(int),Description(char))
ObjectPurchRules
(ObjectID(int),ReqirementObjectID(int),OperatorRule(char),Sequence(int))
Mais il est évident que vous traitez à travers les résultats, sans le groupement, vous obtenez la mauvaise réponse. Je voudrais éviter l'analyse excessive des chaînes si possible :). Un objet peut avoir un nombre inconnu d'achats requis précédents. Des extraits SQL ou psuedocode pour le traitement des règles seraient appréciés. :)