mysql - 糟糕的 MySQL 数据库设计?

标签 mysql sql database database-design

我正在为浏览器游戏创建数据库。到目前为止,我做得很好(我猜),直到我决定让元素可堆叠。因此,我创建了“quantity_table”。这是我的简化数据库:

enter image description here

我的目标是在一次查询中获取商品和数量的数据。我试过这样的事情:

SELECT items.*, quantity_table.quantity1 FROM items JOIN quantity_table WHERE id_item = 3 AND id_quant = 1 

结果:

enter image description here

它有点管用...但是如果我选择项目编号。 2 最后一列是数量 2。而且我不需要 quantityX 列,而是一些通用的东西,比如“数量”。所以查询不是问题,而是数据库本身。但我永远被这个困住了!实在不知道怎么解决这个问题。谁能帮帮我?

最佳答案

数据库不像大多数编程语言那样有列表的概念。任何时候你需要一个关系,它必须是一个表。

在这里使用这个概念,你的设备表应该是这样的:

桌面设备

  • id_acc: int(10)
  • id_item: smallint(5)
  • 数量:tinyint(3)

要获取用户 1 的所有项目,请执行以下操作:

select i.id_item as item_id, name as item_name, type as item_type, qty as item_qty
from accounts as a 
inner join equipment as e 
  on a.id_acc = e.id_acc 
inner join items as i
  on e.id_item = i.id_item
where a.id_acc = 1

关于mysql - 糟糕的 MySQL 数据库设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41796525/

相关文章:

php - 数据库没有更新

php - 根据另一列的值按不同列排序

c# - 将值插入外键 MySQLCommand C#

sql - 查看数据库备份的时间

php - 使用 php 使用 session 从 sql 表中提取数据

mysql - 为什么Artifactory服务无法访问mysql?

java - 如何将 Java 变量插入 MySQL 查询?

php - mysql update a table from another 1 to 1 表

左连接时MySQL错误的计数值

sql - 我非常讨厌 MySQL(帮助构建查询)