Предисловие: у меня нет опыта работы с механизмами правил, правилами построения, правилами моделирования, реализацией структур данных для правил или еще чем-то. Поэтому я не знаю, что я делаю, или то, что я пытался сделать ниже, далеко от базы.
Я пытаюсь выяснить, как сохранить и обработать следующий гипотетический сценарий. Чтобы упростить мою проблему, скажем, что у меня есть тип игры, в которой пользователь покупает объект, где может быть 1000 возможных объектов, и объекты должны быть приобретены в определенной последовательности и только в определенных группах. Например, скажем, что я - пользователь, и я хочу купить объект F. Прежде чем я смогу купить объект F, я должен был предварительно купить объект A ИЛИ (B И C). Я не могу купить F и A одновременно, а также F и B, C. Они должны быть в последовательности, указанной в правиле. Сначала, потом F позже. Или B, C сначала, потом F позже. Сейчас меня не интересует промежуток времени между покупками или какие-либо другие характеристики пользователя, просто то, что они сейчас являются правильной последовательностью.
Каков наилучший способ хранения этой информации для потенциально тысяч объектов, который позволяет мне прочитать правила покупки объекта, а затем сравнить его с предыдущей историей покупок пользователя?
Я пытался это сделать, но я застрял при попытке реализовать такие группировки, как A ИЛИ (B И C). Я хотел бы сохранить правила в базе данных, где у меня есть эти таблицы:
Objects
(ID(int),Description(char))
ObjectPurchRules
(ObjectID(int),ReqirementObjectID(int),OperatorRule(char),Sequence(int))
Но очевидно, что при обработке результатов без группировки вы получаете неправильный ответ. Я хотел бы избежать чрезмерного разбора строк, если это возможно :). Один объект может иметь неизвестное количество предыдущих необходимых покупок. Фрагменты SQL или psuedocode для обработки правил приветствуются. :)