报告SQL性能的表结构

时间:2018-12-19 08:14:57

标签: sql sql-server-2008

我不确定这是否是我想要做的最好的结构。

我有2张桌子。

第一个表称为Team的表包含3列,即Team ID,Team Name和Kit Colour。该表仅包含有关团队的数据。

称为球员名称的第二个表包含3列,即球员ID,球员名称和团队ID。不久将添加更多列。播放器表仅关于播放器。团队ID是将两个表链接在一起的外键。一个团队最多只能有15个玩家,因此每个团队可以有15个玩家条目。

可以有成千上万的球队,每队最多15名球员。

我有一个水平报告需要填写,如下所示:

Team Name | Player 1 Name | Player 2 Name | Player 3 Name....| Player Name 15

我的问题是,我是否为此报表设置了最佳表格结构?我如何在考虑绩效的情况下获取某个团队的数据?例如,我想要A队及其所有球员的信息。可以有15位玩家。如果我可以在一个选择语句中从左到右显示信息,则可以轻松地填写报告,但是如果不使用对性能有负面影响的多个选择,就无法做到这一点。

建议的另一个表结构是将两个表连接在一起,而不是2个表。每个玩家及其属性的专栏也会有一个专栏,但这看起来并不正确,因为桌子会很大,并且可以添加更多玩家属性。

我正在使用SQL 2008

1 个答案:

答案 0 :(得分:0)

您需要有两个单独的表,一个表用于团队,一个表用于玩家,因为团队属性对于多个玩家而言是通用的,因此最好将它们分开而不是全部合并并复制,在这种情况下,TeamID可以用作两者之间的链接团队和球员表。因此,在我看来,具有一对多关系的两张桌子是您的理想选择。

要检索特定团队的信息,可以使用简单的联接和选择语句

SELECT *
FROM TEAM T
INNER JOIN Player P
on T.TeamID=P.TeamID
WHERE T.TeamID=''