在 SQL 数据库中存储“任务”的有效方法是什么?假设上下文是 RPG。(这是之前的问题:How to store Goals (think RPG Quest) in SQL)
总结一个任务可能是以下的组合:
Discover [Location]
Kill n [MOB Type]
Acquire n of [Object]
Achieve a [Skill] in [Skillset]
All the other things you get in RPGs
链接中列出的答案是:
对于 Quest 表:
| ID | Title | FirstStep (Foreign key to GuestStep table) | etc.
QuestStep 表
| ID | Title | Goal (Foreign key to Goal table) | NextStep (ID of next QuestStep)
我实际上认为它非常整洁,但我有两件事要补充:
假设我想创建它,以便任务只能在特定日子(例如仅 MWF)和/或仅在特定时间跨度(例如万圣节)激活。这样做的理想方式是什么?
另一件事:假设我想要一个有两个步骤的任务和一个有 8 个步骤的任务。我们可以创建一个 8 列宽的表,但我们会有很多空白空间。如果星星对齐并且我需要一个 9步宽的任务怎么办?
QuestStep 表实际上有一个 NextStep,有点像一个链表,但是你可以乱序执行的 Quests 呢?
PS:正如您所看到的,它可能是读取繁重的,并且架构可能是......非架构的。NosSQL 是一个竞争选择吗?(Redis 似乎只是内存,所以我更有可能使用 MongoDB)