WarGames的数据库结构-玩家-奖励

时间:2020-02-05 15:29:33

标签: database-design oracle11g oracle-sqldeveloper oracle11gr2

背景:-我的公会定期参加在线PvP锦标赛,并根据游戏结果获得游戏货币以及有时是真钱的奖励。我需要跟踪谁参加了哪个日期。 我创建了一个表,其中包含玩家数据,如果有人加入或离开我的战队,该数据将进行更新。 每个战争游戏为15对15。 我们每天玩4场战争游戏,每场都有多达7场战斗,涉及我队和对手的玩家。 因此, 每天每场战争游戏有15个条目

我的问题

1-如何设计一张表格,以记录战争游戏,日期和时间,结果以及所涉及的玩家。

2-根据上述表格,我还需要分配奖励并跟踪奖励。参与度越高,奖励越多。

我将Oracle 11g用于数据库。

1 个答案:

答案 0 :(得分:0)

您可以这样设置表:

玩家

idPlayer    PK
Name
cell#
email
... other fields that define a player

氏族

idClan      PK
Name

ClanAsPlayer

idClan      FK Clan.idClan
idPlayer    FK Player.idPlayer

WarGames

idWarGame   PK
Date
Time

战斗

WarGames   FK WarGames.idWarGame
Winner     FK Player.idPlayer
Looser     FK Player.idPlayer

奖励

idReward    PK
Reward      <-- what the reward is

PlayerAsReward

idPlayer    FK Player.idPlayer
idReward    FK Reward.idReward
  • 玩家:不使用名称作为主键,因为2位玩家可以使用相同的名称
  • 氏族:您拥有哪些氏族。如果您只有一个,则可能是Player表中的一个简单字段
  • ClanAsPlayer:将玩家链接到氏族。如果只有一个氏族,那就别用那张桌子了。
  • 战斗:WarGame中有许多战斗。因此,将WarGame链接到每个Battle条目。由于一场战斗不能与多个WarGame链接,因此只需将WarGame链接到该战役。

  • 要了解WarGame中存在哪些玩家,您可以通过Battle链接表进行查询

  • 或者,如果即使不参加战斗也可以让玩家出现在WarGame中,则可以添加一个链接表WarGamesAsPlayer。

  • PlayerAsReward:该表必须由应用程序根据您实现的某些逻辑填充

  • 当表之间具有n到n的关系时,可以使用链接表(如PlayerAsReward)。像这样的人,任何玩家都可以得到任何奖励。

这可以帮助您开始使用数据库设计器或建模软件。