【问题标题】:Need advice on how to structure my database schema for online trading card game需要有关如何为在线交易纸牌游戏构建我的数据库架构的建议
【发布时间】:2014-03-07 18:15:30
【问题描述】:

我目前正在开发一款处于早期阶段的集换式卡牌游戏。我有一个关于如何处理数据库架构的问题,如果我滥用了我的术语,请原谅。

关于如何使用它的一些背景知识。客户端使用 Unity3d 编码,所有命令都将通过 php 传递给服务器。 php 将处理游戏的逻辑功能。这在理论上应该会显着减少作弊。服务器将游戏状态返回给客户端,客户端将结果显示给用户。

我对 SQL 有点熟悉,我使用 MySQL 作为数据库。我已经阅读了有关它的可扩展性问题的内容。我不太在意它,因为我对拥有成千上万的玩家并不幻想破灭,而且如果有的话,我会担心的。

我的精简数据库结构如下:

users -> userID(unique device ID) , name
card -> cardID, name, type, cost, image, rarity, attack, defense, description
tag -> tagID, name, description
ability -> abilityID, name
card_tag -> cardID, tagID
card_ability -> cardID, abilityID

我不确定如何构建用于保存每个用户信息的数据库。我至少知道,或者相信我知道,我需要什么。数据库应该保存他们用户拥有的每张卡片以及它当前所在的牌组。我正在考虑允许 3 个牌组,而一张牌可能不属于任何牌组或更多牌组。卡片本身将能够获得经验和等级。此外,在升级卡的统计数据和能力时,可能会发生变化。当卡片升级时,用户将看到不同的选项来增强它。所以同一张牌的两张不同等级会有细微的差别,例如:一张有+1攻击,另一张可能有+1防御。

我在想一个解决方案是为每个用户创建一个表格,以包含他们的卡片,其中包含卡片体验、级别、套牌会员资格以及其他独特的东西。我可以看到这可能会失控。

另一种可能性是拥有一个包含卡片实例的非常大的表,并在其中引用用户。

我相信还有其他方法,但你不知道你不知道什么。非常感谢任何帮助!

编辑:玩家将能够拿走他们拥有的卡片并将它们分配到牌组中进行分组。一副牌将由 60 张左右的牌组成,这将是在游戏中使用的牌。一个小例子:用户有卡片 A、B、C、D、E 和 F 的 2x。甲板一由卡片 A、B、C 和 F 组成。甲板二由 B、C、D 和 F 组成。而甲板三由 A、B、D 和 2x F 组成。

【问题讨论】:

  • 请说明什么是“甲板”
  • 添加了上面示例的说明。
  • 卡组 1 和卡组 3 中的卡 A 真的一样吗?即甲板1中的升级A适用于甲板3中的A?

标签: mysql sql database database-design unity3d


【解决方案1】:

根据我从您的描述中可以得到的信息,您至少需要:

user_cards(userID, cardID, attack, defense)
user_decks_cards(userID, cardID, deck_no)
user_card_abilities(userID, cardID, abilityID)

【讨论】:

  • 如果卡表中有 500 行并且有 200 多个用户,这会是一个很好的解决方案吗?这种设置的可扩展性如何,它可以容纳成千上万的用户,每个用户都有数百张卡吗?另外,感谢您的快速回复。
  • 就可扩展性而言,我确信这不是问题。但是,仅凭您提供的信息,我无法确定设计是否是最好的。
  • 忘了说,你需要合适的索引来提高性能
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-26
  • 1970-01-01
  • 2013-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多