存储大量数据库信息,即mySql数据库中的成就/收藏品

时间:2014-01-24 16:27:14

标签: mysql database multiplayer

为多人游戏存储大量数据的最佳方式是什么?我有一个数据库来存储重要信息,例如登录信息和联系方式,但在记录库存项目和成就方面我很困难。我对数据库是相当新的,我能想到的唯一解决方案是为每个单独的项创建id并存储玩家拥有的项ID,或者在表中为每个单独的项/成就创建一列。 游戏中可能还有一个可收集的卡元素,需要解决方案来存储哪个 一个帐户拥有的卡。最好的方法是什么?

编辑:更具体一点,我会用卡片来解释它;假设该游戏包含300张独特牌,并且玩家在玩游戏时收集它们,我将如何存储玩家所拥有的牌的数据,记住这些牌不是以线性方式收集的IE玩家随机解锁牌并且可以拥有每张卡的多个副本。

编辑2:为了避免任何混淆,数据库不需要在每张卡上存储信息,只需要保存一个可以通过php访问的ID,以解锁登录时的项目。

1 个答案:

答案 0 :(得分:1)

听起来你在谈论many-to-many关系(可能是几个)。

假设你有

Players
--------
player_id, name, etc etc

你想要添加

Achievements
--------
achievement_id, description, type,

并将它们与

绑在一起
Player_achievements
--------
player_id, achievement_id

根据复杂程度,如果您有多种类型,您可能需要一个类型查找表(卡片,成就,收藏品等)或者您可能希望将每个表格放入自己的表格中一个是不同的。

编辑:看到你的编辑,你提到你可以只在数据库中存储一个ID,并保持与PHP代码中的300张卡相关的信息?不,我不会这样做。我会存储卡信息,以及数据库中的任何规则/权限/任何内容。然后,您可以添加,更改等,而无需更改代码。像:

Cards
--------
card_id, description, bonus, damage, damage_type, i_have_no_idea, im_making_these_up

并将它们与

绑在一起
Player_cards
--------
player_id, card_id, quantity

注意我向player_cards添加了数量,因为你提到一个玩家可以有多个。