【问题标题】:Create Relationship Between Two Columns Not Using PK SQL创建不使用 PK SQL 的两列之间的关系
【发布时间】:2016-01-30 15:23:43
【问题描述】:

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

游戏设计

GameId (PK)
GameGuid
MatchDate
TeamZeroScore
TeamOneScore
Active

GameStats 设计

GameStatsId (PK)
GameGuid
TeamId
Name
Kills
Deaths
Assists
Active

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

【问题讨论】:

    标签: sql linq database-design relationships


    【解决方案1】:

    你可以,但我不推荐它。通常,您可以使用主键或唯一键(其中键实际上可以包含多个列)来设置与另一个表的外键关系。

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

    GameStatsId (PK)
    GameId references Game(GameId)
    TeamId
    Name
    Kills
    Deaths
    Assists
    Active
    

    您可以通过加入来查找GameGuid。

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

    【讨论】:

    • 感谢您的迅速回复。我想我会将 GameId 添加到 GameStats 表中。但这引入了现有数据的问题,我需要遍历所有的Gamestats数据并通过相同的gameguid添加匹配的游戏ID
    猜你喜欢
    • 1970-01-01
    • 2017-03-19
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多