2016-02-28 60 views
1

好的,所以我可能会因为懒惰而被屠杀,而不是自己研究这个 - 但我无法理解它,它让我的大脑受到伤害。我相信对于你们中的一些人来说,这是一个非常基本的问题。SQL多对多设计

我与足球(足球)球员和他们的属性,一个Excel表格...

Player Table

和另外六人制足球(足球)队,其中6次人得分上六个位置。

Teams Table

我希望能够到两个表链接,这样我可以根据玩家的属性使总团队属性,然后运行查询的队伍的质量(即最会传球的球队,最aggresive球队等)。

在Excel中,我只需从玩家表中进行查找,然后添加玩家属性的各种组合。

然而在SQL中它看起来很复杂 - 即每个团队都有很多玩家,任何一个玩家可以在一个以上的团队中,并且任何一个玩家都可以在多个不同的职位上进行游戏。玩家在哪个位置上影响对球队属性贡献的权重(即防守队员对球队创造力的贡献小于前腰球员,对于球队攻击能力的贡献大于对前锋的贡献)。我想我需要一个中间连接表或几个?或者,也许这只是简单而已?

有没有人有任何建议?

三江源

+1

圣墙文本请至少提供样本数据或使您的问题更简洁。 – jkdba

+0

为了回答我认为问题是“中间连接表”的问题,是的,应该这样做。至少对我而言,这比在这些类型的关系中不使用它们要复杂得多。 – jkdba

+0

谢谢@John K ...我现在有一条前进的道路 - 我也发现我可以如何说明本网站上的数据。 :0) – BenSellars

回答

1

如果我明白你的问题,答案如下。您将拥有一个玩家表(PlayerID,PlayerName,PlayerAtribbute1,...),一个表(TeamId,TeamName,HomeTown,...)和一个连接两者的中间表(PlayerId,TeamId,位置,...)。 SQL和数据库设计中使用最后一个中间表来表示多对多关系。

如果你采用这种方法,你还应该在队表中的PlayerId的队列表的TeamID中索引PlayerId,并在中间表的(PlayerId,TeamID)上有一个复合索引,你应该是金手指。

+0

谢谢@S卡拉斯,我想我没有得到我的头脑是player_ID和team_ID的组合索引。所以对于每个球员和球队的组合,中间表都会有一条线,这也表明了他们为这支球队所扮演的角色。我现在有一些东西需要处理......我的下一步是调查我是否可以自动从Excel创建连接表 - 要手动输入每行是很痛苦的。 – BenSellars

+0

...我想我可以使用连接的ID和其他相关列从Excel中导入。 – BenSellars

+0

我很高兴我能帮到你!我知道这有点奇怪,但你可以提出我的答案或将其设置为你问题的验证答案吗? –

0

在我脑海中拼图的缺失部分是连接表中的复合索引(由S Karras提供)。我现在可以把这个前进看看它是如何发展的。