Database design 你将如何设计一个数据库来存储迷宫和在同一个迷宫上玩的游戏?

Database design 你将如何设计一个数据库来存储迷宫和在同一个迷宫上玩的游戏?,database-design,uml,Database Design,Uml,我的任务是设计一个数据库来存储迷宫和在这些迷宫上玩的游戏 迷宫本质上是一个网格,包含奖品和陷阱。任务并不是更具体:它要求我们找到一些一般规则来表达游戏中发生的事件以及这些事件的规则 我写下了一个简单的概念模式: 根据我对作业的描述,你认为这是一个好的解决方案吗?如何改进它?您应该将任务分为 1) 储存迷宫 2) 存储事件 考虑到(2),您可以使用关系数据库记录事件,甚至可以将英雄的移动记录在一个列列表中: 游戏|时间|演员|事件类型|事件数据 (不要每场比赛创建一张桌子;) 考虑(1): 您应

我的任务是设计一个数据库来存储迷宫和在这些迷宫上玩的游戏

迷宫本质上是一个网格,包含奖品和陷阱。任务并不是更具体:它要求我们找到一些一般规则来表达游戏中发生的事件以及这些事件的规则

我写下了一个简单的概念模式:


根据我对作业的描述,你认为这是一个好的解决方案吗?如何改进它?

您应该将任务分为

1) 储存迷宫 2) 存储事件

考虑到(2),您可以使用关系数据库记录事件,甚至可以将英雄的移动记录在一个列列表中:

游戏|时间|演员|事件类型|事件数据

(不要每场比赛创建一张桌子;)

考虑(1):
您应该将迷宫存储为网格。这可以通过一个数组来实现,例如,每个网格单元描述其类型的单个字节(能够存储wall、free和254项)。存储此数组的位置由您决定,但如果您将其存储在数据库中,请不要尝试将迷宫和单元格拆分为不同的表(您描述的1:n关系),只需将迷宫作为BLOB存储在表中,其中包含所有迷宫的BLOB。

因此迷宫是一个网格,每个节点都包含数据。 每个节点包含若干内容: 1) 指向其他节点的链接列表 2) 该节点上可用的项目列表

其他一切都可以用这些来表达

这意味着一个表格迷宫,包含迷宫的基本数据,如ID、名称、描述等。 然后是一个表节点,包含关于该节点的数据。ID、名称、坐标和迷宫ID 第三项,带有ID、项名称、节点ID、项类型,可能还有其他内容

为了加快查找操作,您可能需要一个链接表MAZE_节点,其中只包含MAZE_ID和NODE_ID,并带有两个表的外键,以及一个具有类似NODE_ID和ITEM_ID字段的NODE_ITEM表

可能需要其他列和表来保存不特定于数据层次结构的信息(例如关于项的统计信息、节点的环境条件等)

这只是迷宫的一个非常基本的数据结构。 对于知识故事,您至少需要包含文本、章节、每章启动条件等的表格。
这几乎与迷宫无关,但条件可能包括玩家在迷宫中的特定位置,或告诉他去特定位置。

谜语的目的是什么?如果你得到某种奖励,它不应该也是一个特殊的正方形吗?理想情况下,它只用于存储问题和正确答案。我决定不强加正确/错误答案的后果:它也可能是死亡,很像斯芬克斯。我认为节点路径应该是一个实体,连接任何两个节点实体-允许各种各样的恶作剧,比如N维迷宫和单向路径。然后可以将NODE_事件与进入给定节点的潜在方式联系起来。