【问题标题】:User inventory database design?用户库存数据库设计?
【发布时间】:2012-08-21 11:35:16
【问题描述】:

我正在使用 MySQL 用 PHP 制作游戏,我想知道存储用户购买的物品的最佳方式是什么,以便与他们的帐户相关联。

我计划建立一个包含项目信息的数据库,我能想到的唯一方法是:

  1. 在排序的序列化数组中为用户项目提供一个表
  2. 拥有大量列和一定数量的库存空间
  3. 带有 user_id 和 item_id 的表格,并在每次购买商品时添加一行,选择与用户相关的 user_id 以显示他们的商品

哪个最好?

【问题讨论】:

  • 恕我直言,您至少应该有三个表:USERS 表、ITEMS 表和 USERITEMS 表

标签: mysql


【解决方案1】:

我认为你一开始就知道用户可以购买哪些物品,所以我认为你应该有三张桌子

  • USERS 表,用于存储用户数据(PRIMARY KEYuser_id
  • ITEMS 表,您可以在其中存储商品及其成本和数据(PRIMARY KEYitem_id
  • USERITEMS 表,其中存储用户购买的每件商品。它应该有两列:user_iditem_id,并且每次用户购买商品时添加一行。

此设计可让您轻松管理购买的商品并向每位用户展示其库存。
更多:避免在数据库中浪费空间复制无用的信息

【讨论】:

  • 非常感谢,我认为这可能是最好的方法,我总是尝试删除不需要的重复信息,只是想得到一些保证,这是最好的方法。我担心大量的行真的会拖累数据库,但是在读取它时,您可以拥有大量行而不会对性能产生很大影响。
  • @Silenced:正确设置主键和索引后,查询数据库(即使有数十亿行)可能会非常快。对于我的想象,你应该使用SELECT i.* FROM ITEMS i INNER JOIN USERITEMS ui ON i.item_id = ui.item_id INNER JOIN USERS u ON ui.user_id = u.user_id WHERE u.user_id = ???
【解决方案2】:

根据你的问题,3 号是合适的。我更喜欢@Marco 的建议。

【讨论】:

    猜你喜欢
    • 2011-09-30
    • 2011-11-15
    • 2012-09-17
    • 2017-01-04
    • 1970-01-01
    • 2010-09-22
    • 2013-09-25
    相关资源
    最近更新 更多