Wstęp: Nie mam doświadczenia z silnikami reguł, regułami budowania, regułami modelowania, implementowaniem struktur danych dla reguł ani nic. Dlatego nie wiem, co robię lub jeśli to, co próbowałem poniżej, jest daleko poza bazą.Jaka jest odpowiednia struktura danych i schemat bazy danych do przechowywania reguł logicznych?
Próbuję dowiedzieć się, jak przechowywać i przetwarzać poniższy hipotetyczny scenariusz. Aby uprościć mój problem, powiedz, że mam typ gry, w której użytkownik kupuje obiekt, w którym może znajdować się 1000 możliwych obiektów, a przedmioty muszą zostać zakupione w określonej kolejności i tylko w określonych grupach. Na przykład powiedz, że jestem użytkownikiem i chcę kupić obiekt F. Zanim będę mógł kupić obiekt F, muszę wcześniej zakupić obiekt A OR (B i C). Nie mogę kupić F i A w tym samym czasie, ani F i B, C. Muszą być w kolejności określonej przez regułę. Pierwsza, potem F później. Albo najpierw B, C, potem F później. Nie interesuje mnie teraz czas między zakupami ani żadna inna cecha użytkownika, tylko że są one na razie właściwą sekwencją.
Jaki jest najlepszy sposób przechowywania tych informacji dla potencjalnie tysięcy obiektów, które pozwalają mi odczytać reguły dotyczące kupowanego obiektu, a następnie sprawdzić je w porównaniu z poprzednią historią zakupów użytkownika?
Próbowałem tego, ale utknąłem przy próbach implementacji grupowań, takich jak A OR (B i C). Chciałbym zapisać reguły w bazie danych, gdzie mam te tabele:
Objects
(ID(int),Description(char))
ObjectPurchRules
(ObjectID(int),ReqirementObjectID(int),OperatorRule(char),Sequence(int))
ale oczywiście, jak przetwarzać poprzez wynikach, bez grupowania, masz złą odpowiedź. Chciałbym, jeśli to możliwe, unikać nadmiernego parsowania napisów :). Jeden obiekt może mieć nieznaną liczbę wcześniejszych wymaganych zakupów. Zwracamy uwagę na fragmenty kodu SQL lub psuedocode do przetwarzania reguł. :)