Database design 战争游戏数据库结构-玩家-奖励

Database design 战争游戏数据库结构-玩家-奖励,database-design,oracle11g,oracle-sqldeveloper,oracle11gr2,Database Design,Oracle11g,Oracle Sqldeveloper,Oracle11gr2,背景:-我的氏族定期参加在线PvP比赛,并根据比赛结果获得游戏内货币奖励,有时还获得实币奖励。我需要记录谁在哪一天参加了比赛。 我已经创建了一个包含玩家数据的表,如果有人加入或离开我的氏族,该表将被更新。 每个战争游戏是15对15。 我们每天玩4场战争游戏,每一场都有多达7场涉及我的团队和对手的战斗。 因此,每天每场战争游戏有15个参赛作品 我的问题 1-如何设计一个表格,可以记录战争游戏,日期和时间,结果和参与者 2-根据上面提到的表格,我还需要分配奖励并跟踪这些奖励。参与越多,奖励越多 我正

背景:-我的氏族定期参加在线PvP比赛,并根据比赛结果获得游戏内货币奖励,有时还获得实币奖励。我需要记录谁在哪一天参加了比赛。 我已经创建了一个包含玩家数据的表,如果有人加入或离开我的氏族,该表将被更新。 每个战争游戏是15对15。 我们每天玩4场战争游戏,每一场都有多达7场涉及我的团队和对手的战斗。 因此,每天每场战争游戏有15个参赛作品

我的问题

1-如何设计一个表格,可以记录战争游戏,日期和时间,结果和参与者

2-根据上面提到的表格,我还需要分配奖励并跟踪这些奖励。参与越多,奖励越多


我正在将Oracle 11g用于我的数据库。

您可以像这样设置表:

玩家 宗派 响尾蛇 战争游戏 战争 奖赏
  • 玩家:不使用名字作为主键,因为两个玩家可以有相同的名字
  • 氏族:你有什么氏族。如果你只有一个(你的),它可能是玩家表中的一个简单字段
  • 部族玩家:将玩家链接到部族。如果只有一个氏族,那就忘了那张桌子吧
  • 战斗:战争游戏中有很多战斗。因此,将战争游戏链接到每个战斗条目。由于一场战斗不能链接到多个战争游戏,因此您只需将战争游戏链接到战斗中即可

  • 要知道战争游戏中有哪些玩家,可以通过“战斗链接”表进行查询

  • 或者,如果您可以让玩家参加战争游戏,即使他们不参加战斗,您也可以添加一个链接表WargamesaPlayer

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

  • 当表之间存在n对n关系时,可以使用链接表(如playeraward)。像这样,任何玩家都可以得到任何奖励


这可以让您从数据库设计器或模型化软件开始。

它不会只是一个表。这将是一系列的表格组成一个数据模型。如果您只使用一张表,我建议您只使用Excel。另外,如果这是针对Oracle的,请删除sql server标记。我不支持一系列表。这将是一个很好的学习机会。我维护Excel,但想在数据库中这样做,这样我可以得到更多的实践。这将是我的实时场景。查找数据建模。一般来说,您希望表信息与键、整个键以及除键以外的任何内容都相关,所以请帮助您进行Codd。我从12月份开始自学sql。所以我对数据库很陌生。我的电脑中安装了Oracle 11g。Oracle developer data modeler是一个不错的选择吗。我必须学习如何使用它。数据库建模与您使用的数据库软件无关。任何RDBMS都可以。首先,看看如何将需求拆分为对象(表)以及这些对象(外键和链接表)之间的链接。然后看看正规形式。一般来说,表格一、二及三足以应付大部分申请。谢谢。但是我该如何列出球队名单呢。是15比15。我的家族对另一个家族有15个。我必须存储所有(我的团队)参与人员的姓名。可能必须在战斗表中使用15列。因为你的氏族中有15名玩家,所以在战斗表中只需使用15行即可。每条线代表一场1比1的战斗。当你决定以后拥有10或20名玩家时,你将收获这种方法的好处。在表中添加一行要比添加新列容易得多。添加行是一个简单的查询,添加列会迫使您更改表结构,可能还会更改应用程序中的一些查询。为什么我没有想到这一点。我真傻。我可以添加日期和时间来确定战斗,因为这将永远是独一无二的。谢谢实际上日期和时间已经在战争游戏表中定义了。战斗链接到单个战争游戏,因此为您提供日期时间:-)
idPlayer    PK
Name
cell#
email
... other fields that define a player
idClan      PK
Name
idClan      FK Clan.idClan
idPlayer    FK Player.idPlayer
idWarGame   PK
Date
Time
WarGames   FK WarGames.idWarGame
Winner     FK Player.idPlayer
Looser     FK Player.idPlayer
idReward    PK
Reward      <-- what the reward is
idPlayer    FK Player.idPlayer
idReward    FK Reward.idReward