【发布时间】:2012-05-03 12:25:05
【问题描述】:
我有一个关于存储依赖项的数据库技术的问题。我知道那里有很多,但我不能轻易地将它们放在我需要的方案中。 我创建了简单的图像:
如您所见,我需要创建一个相互依赖的技能树(就像在游戏中一样)。因此,例如,如果有人想要拥有技能 8,我可以告诉他他需要先拥有技能 1,2 和 5。
这对于数据库中的分层数据可能很好,但我不太清楚如何动态地执行此模型。我遇到的问题是,技能将一直添加到树中所有可能的位置。没完没了。可以在任何级别添加技能。
在第一个问题之后,还有一个复杂的问题。我也需要有水平的技能。因此,例如技能 1 可以有 10 个级别。并且只有达到技能1的5级才能达到技能2。
对于玩魔兽世界这类游戏的人来说应该是可以理解的。
再注意一点,技能可以随时添加,但是添加后不能更改。在正常的基础上。以防万一某些技能非常糟糕或类似的情况,则将其删除,但这种情况很少发生。
感谢您的建议、链接或任何其他材料!
【问题讨论】:
-
如果没有某种存储过程来处理循环并递归地尝试添加所有符合条件的内容,则无法在单个查询中完成,因为您已经注意到您永远不知道有多少层深数据将继续。
-
它不必在单个查询中完成,我只需要一些技术来实现这一点
-
MySQL 是必需的吗?这在支持 CTE 和窗口功能的数据库上很容易stackoverflow.com/a/10395130stackoverflow.com/a/10401572 现场测试:sqlfiddle.com/#!1/db290/85
-
是的 MySQL 是必需的,但是您发布的链接看起来非常适合这个问题。
-
在你的图表上,7 需要技能 #6。但在您的表格结果中,不包括 6