Database design 游戏记分应用程序的数据结构/模型(避免多对多对多)

Database design 游戏记分应用程序的数据结构/模型(避免多对多对多),database-design,data-structures,relational-database,entity-relationship,Database Design,Data Structures,Relational Database,Entity Relationship,我正在开发一个简单的记分应用程序,用于玩纸牌游戏拉米,作为一种锻炼。我正在为iOS构建它,但这有点无关,因为它使用SQLite数据存储,所以数据结构适用于任何环境。让我设置一个用例: 要开始记分,首先要安排好球员。我希望它是可能的,以保持球员,所以你可以跟踪统计数据等。因此,您要么创建新玩家,要么选择现有玩家 然后,当你玩的时候,你给每个玩家加上分数 游戏结束后,玩家和分数都会被保存,以便您可以查看过去游戏的日志 我遇到的问题是一个玩家可以玩很多游戏,有很多回合。但是,当观看一场比赛时,它有许多

我正在开发一个简单的记分应用程序,用于玩纸牌游戏拉米,作为一种锻炼。我正在为iOS构建它,但这有点无关,因为它使用SQLite数据存储,所以数据结构适用于任何环境。让我设置一个用例:

要开始记分,首先要安排好球员。我希望它是可能的,以保持球员,所以你可以跟踪统计数据等。因此,您要么创建新玩家,要么选择现有玩家

然后,当你玩的时候,你给每个玩家加上分数

游戏结束后,玩家和分数都会被保存,以便您可以查看过去游戏的日志

我遇到的问题是一个玩家可以玩很多游戏,有很多回合。但是,当观看一场比赛时,它有许多回合,每一轮都有许多玩家(显示他们的分数)

为此构建一个ERD表明我对这个数据结构的看法将多么失控


我好像在绕圈子转。是否有构建此数据的示例,或者任何人可以告诉我我在哪里偏离轨道?

如果你认为<代码>玩家<代码>表是一个可能的玩家的代码<游戏> <代码>,那么你需要一个<代码>游戏玩家< <代码> >介于<代码>游戏>代码>和<代码>玩家< /Cord>表中,以识别那个特定游戏的玩家集合。此表还可以容纳该游戏桌上四名玩家的
位置

对于此表上的PK,您可以使用GameID和PlayerID的组合,或者添加一个自动生成的ID。如果使用后一个选项(这是我更喜欢的),您仍然应该在
GameID/PlayerID
组合上有一个唯一的索引
GameID/Position
也是PK的有效候选,因为每个游戏的每个位置只能填充一次

我将完全删除圆桌会议,并在其位置添加一个
Score
表,以
RoundNum
作为一列。该
Score
将有一个外键引用返回到
GamePlayer
表(因为只有该游戏中的玩家才能实际得分)

同样,您可以在此表上选择PK
GamePlayerID/RoundNum
必须是唯一的,并且是PK的候选项,但是我会使用自动生成的ID。再一次,您应该在
GamePlayerID/RoundNum
组合上有一个唯一的索引

通过这四个表,您可以解析所有M:M关系


如果你认为<代码>玩家<代码>表是<<代码>游戏的可能玩家池,那么你需要在<<代码>游戏和玩家> /Cord>表之间找出<>代码>游戏玩家< /代码>表,以识别该特定游戏的玩家集。此表还可以容纳该游戏桌上四名玩家的
位置

对于此表上的PK,您可以使用GameID和PlayerID的组合,或者添加一个自动生成的ID。如果使用后一个选项(这是我更喜欢的),您仍然应该在
GameID/PlayerID
组合上有一个唯一的索引
GameID/Position
也是PK的有效候选,因为每个游戏的每个位置只能填充一次

我将完全删除圆桌会议,并在其位置添加一个
Score
表,以
RoundNum
作为一列。该
Score
将有一个外键引用返回到
GamePlayer
表(因为只有该游戏中的玩家才能实际得分)

同样,您可以在此表上选择PK
GamePlayerID/RoundNum
必须是唯一的,并且是PK的候选项,但是我会使用自动生成的ID。再一次,您应该在
GamePlayerID/RoundNum
组合上有一个唯一的索引

通过这四个表,您可以解析所有M:M关系

事实

  • 游戏存在

  • 游戏游戏回合

  • 玩家存在

  • 玩家游戏回合


约束条件

  • 有些游戏可能有多个
    游戏回合

  • 有些玩家可能玩多个游戏回合
    对于一些
    游戏回合
    多个
    玩家
游戏回合


合乎逻辑

事实

  • 游戏存在

  • 游戏游戏回合

  • 玩家存在

  • 玩家游戏回合


约束条件

  • 有些游戏可能有多个
    游戏回合

  • 有些玩家可能玩多个游戏回合
    对于一些
    游戏回合
    多个
    玩家
游戏回合


合乎逻辑


非常感谢您的支持。非常清晰和有条理。非常感谢,非常感谢。非常清晰和有条理。非常感谢。