Java sql中没有中间表的多对多表关系?

Java sql中没有中间表的多对多表关系?,java,sql,Java,Sql,我正在制作一个可以查找生物的应用程序,并且正在尝试增加我的知识 我有桌上生物和桌上技能 一个生物和一个技能可以被多个生物使用 我正在使用sql manager用java编写代码 我使用1,2表示生物表中的技能,并使用数值引用技能表 我的一个想法是,有没有办法生成一个重载存储过程 我还没有开始编码,因为我仍在计划中,但如果有任何想法发送给我,我将不胜感激 我并不是想避开中间的桌子,只是想看看是否有一种方法可以做到这一点,而不是用另一种方法那么难,这是毫无意义的。您可能需要中间的桌子 在“生物”表中

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

我有桌上生物和桌上技能

一个生物和一个技能可以被多个生物使用

我正在使用sql manager用java编写代码

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

我的一个想法是,有没有办法生成一个重载存储过程

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


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

您可能需要中间的桌子

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

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


另请参见我对

的回答。如果您使用的是关系数据库,“正确的”一般解决方法是使用一个存储关系的表。 如果你想避开中间的表格,你可以对每个生物的最大技能数量设置一个限制——比如说最多5个技能,然后有一个叫做skill1,skill2,…,skill5的字段。我不能推荐这个选项,因为它会使查询变得更加复杂,但在某些情况下是可能的。
此选项的另一个改进是使用单个int或long字段,其中每个位代表一项技能。但在我看来还是不太好。

哪个数据库服务器?它支持多值列吗?您选择的数据库设计可能是无意的。Facepalm@Mark Storey Smith您能否澄清您所说的充满问题是什么意思+好的。谢谢你。如果说每个生物最多只能拥有5种技能,会有什么不同吗?不是为了追求这种方式,只是为了学习而尝试一切:)@user1698308,不,这不会有什么不同。在几乎100%的时间里,将数据存储在逗号分隔的列表中是个坏主意。不要这样做。为什么你反对用一个单独的表来存储信息?正如我在问题中所说的,我并不反对用其他方法来提高我的技能。@user1698308,在数据库中存储逗号分隔的列表唯一有效的时间是当你将列表视为原子的、不可还原的数据元素时。也就是说,您永远不会使用SQL语义来访问列表中的单个元素以进行搜索、排序、加入、计数等。谢谢,从我从收到的答案中收集到的信息来看,这只是一个糟糕的想法。谢谢你的意见。