我正在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(可能每周更新几次)。
ps。我是否应该考虑将每个字符分成自己的表并以此方式跟踪用户的字符?用户将无法从角色中添加/删除技能,只能对其进行更新。
TIA。
答案 0 :(得分:1)
您的数据透视表对我来说很好。
我会考虑删除ID列(除非您需要),并使用复合主键:
PRIMARY_KEY(CharID, SkillID)
索引了主键,因此您将获得高效的查找。
关于其他建议,如果将其存储在JSON列中,您将失去执行联接的能力,因此最终将执行更多查询。