Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不使用PK SQL在两列之间创建关系_Sql_Linq_Database Design_Relationships - Fatal编程技术网

不使用PK SQL在两列之间创建关系

不使用PK SQL在两列之间创建关系,sql,linq,database-design,relationships,Sql,Linq,Database Design,Relationships,我有两张表,一张是名为Game,另一张是GameStats 游戏设计 GameId (PK) GameGuid MatchDate TeamZeroScore TeamOneScore Active 游戏统计设计 GameStatsId (PK) GameGuid TeamId Name Kills Deaths Assists Active 一场游戏可以有很多游戏统计数据。所以我的问题是,是否有任何方法可以使用GameGuid字段在游戏和Gamestats之间建立关系,即使它们不是主键?您

我有两张表,一张是名为Game,另一张是GameStats

游戏设计

GameId (PK)
GameGuid
MatchDate
TeamZeroScore
TeamOneScore
Active
游戏统计设计

GameStatsId (PK)
GameGuid
TeamId
Name
Kills
Deaths
Assists
Active

一场游戏可以有很多游戏统计数据。所以我的问题是,是否有任何方法可以使用GameGuid字段在游戏和Gamestats之间建立关系,即使它们不是主键?

您可以,但我不推荐这样做。通常,可以使用主键或唯一键(其中键实际上可以由多列组成)设置与另一个表的外键关系

但是,您不希望在表中存储冗余数据。因此,如果
GameId
Game
的主键,那么第二个表应该是:

GameStatsId (PK)
GameId references Game(GameId)
TeamId
Name
Kills
Deaths
Assists
Active
您可以通过执行连接来查找
GameGuid


另一方面,如果您想使用
GameGuid
作为主键,则可以使用该键并删除
GameId
,,但我不推荐这样做。通常,可以使用主键或唯一键(其中键实际上可以由多列组成)设置与另一个表的外键关系

但是,您不希望在表中存储冗余数据。因此,如果
GameId
Game
的主键,那么第二个表应该是:

GameStatsId (PK)
GameId references Game(GameId)
TeamId
Name
Kills
Deaths
Assists
Active
您可以通过执行连接来查找
GameGuid


另一方面,如果您想使用
GameGuid
作为主键,请使用该键并删除
GameId

,谢谢您的快速回复。我想我会将GameId添加到GameStats表中。但这会引入现有数据的问题,我需要遍历所有Gamestats数据,并通过相同的GameGuidHanks添加匹配的游戏id,以便快速回复。我想我会将GameId添加到GameStats表中。但是这引入了现有数据的问题,我需要遍历所有Gamestats数据,并通过相同的gameguid添加匹配的游戏id