首页 > 解决方案 > MySQL - 多行或 JSON

问题描述

我正在 Laravel 中构建一个应用程序,并且有一个关于我的 MySQL 数据库的设计问题。目前我有一个表格,它定义了我游戏中所有默认角色的技能。因为特征是从技能池中提取的,并且数量可变,所以我的一张表看起来像这样:

+----+--------+---------+-----------+
| ID | CharID | SkillID | SkillScore|
+----+--------+---------+-----------+
|  1 |      1 |      15 |       200 |
|  2 |      1 |      16 |       205 |
|  3 |      1 |      12 |       193 |
|  4 |      2 |      15 |       180 |
+----+--------+---------+-----------+

请注意任何给定的可变行数CharID。输入我的基本字符后,我的行数刚刚超过 300 行。

我的问题是存储用户的(自定义)角色副本。我认为每个用户存储 300 多行是没有意义的。我应该将此数据存储在另一个表中的 JSON Blob 中吗?我应该看看像 Mongo 这样的 NoSQL 解决方案吗?感谢指导。

注意:整个应用程序以使用角色的不同技能为中心。主要来自他们的报告,但用户也可以更新他们的 SkillScore(可能每周几次)。

附言。我是否应该考虑将每个角色分成自己的表格并以这种方式跟踪用户的角色?用户将无法添加/删除角色的技能,只能更新它们。

TIA。

标签: mysqldatabaselaravel

解决方案


你的数据透视表对我来说看起来不错。

我会考虑删除 ID 列(除非你需要它),并使用复合主键:

PRIMARY_KEY(CharID, SkillID)

主键被索引,因此您将获得有效的查找。

至于您的其他建议,如果您将其存储在 JSON 列中,您将失去执行连接的能力,因此最终会执行更多查询。


推荐阅读