3

我正在制作一个可以查找生物的应用程序,并且正在尝试增加我的知识。

我有一张桌子 Creatures 和一张桌子 Skills

一个生物拥有多种技能,一个技能可以被多个生物使用。

我正在使用 sql 管理器在 java 中编码。

我使用 1,2 来表示生物表中的技能,并使用数值引用技能表。

我的一个想法是有没有办法制作一个重载的存储过程?

我还没有开始编码,因为我仍在计划中,但如果有任何想法发送给我,我将不胜感激。

我并不是想避开中间的桌子,只是看看是否有另一种方法可以做到这一点,而不是那么难,但毫无意义。

4

2 回答 2

8

你可能需要中间的桌子。

在 Creatures 表中存储以逗号分隔的技能列表可以很容易地获取每个生物的技能,但是如果您想知道具有给定技能的生物怎么办?

逗号分隔的列表充满了问题。您可以使用它们来优化访问数据的一种方式,但这会导致对其他访问数据的方式的大幅去优化。

另请参阅我对在数据库列中存储分隔列表真的那么糟糕吗?

于 2013-02-13T22:42:55.017 回答
2

如果您使用的是关系数据库,那么“正确”且通用的解决方法是使用存储关系的表。如果你想避开中间表,你可以限制每个生物的最大技能数量 - 比如说最多 5 个技能,然后有称为技能 1、技能 2、...、技能 5 的字段。我不能推荐这个选项,因为它会使查询变得更加复杂,但在某些情况下它是可能的。此选项的另一个改进是单个 int 或 long 字段,其中每个位代表一种技能。不过在我看来还是不好。

于 2013-02-13T22:46:35.060 回答