用数字id作为表名后缀会是反模式吗

问题描述 投票:0回答:1

背景:

我有一个

Game
表,它是一个主表,它将保存预定义的游戏行,例如:

现在,我可以创建一个

Game_Detail
表,其中将包含特定于游戏的游戏状态/历史/数据,如下所示:



困境

这些游戏各自都会有异构数据,并且由于我没有使用 NoSQL/Document 数据库,因此无法将其有效存储在单个表中。因此我正在考虑使用以下方法:

在表名后添加游戏的外键/id 。即:


一些想法:

  1. 由于代码仅访问设计时/配置定义的游戏,因此不需要动态表名称串联,因此不存在难看的代码或性能问题
  2. 再次强调,由于这一切都是在设计时,ORM 不会有问题。我正在将 Sequalize 与 Node.js 一起使用
  3. 这可能会表现更好,因为将数据保存在同一个表中将有助于 i/o

额外:

  1. 出于显而易见的原因不想使用 JSON、键/属性查找表
  2. 我相信这是一种常见的情况,我过去已经解决过这个问题,但我无法清晰地思考,因此需要一些帮助。特别是,如果这是一种反模式,以后会出现任何问题吗?
sql mysql database-design anti-patterns
1个回答
0
投票

我认为你可以执行以下操作:

game
- id PK
- name Text
- ...

player
- id PK
- name Text
- ...

property
- id PK
- name Text

game_detail
- game FK(game.id)
- player FK(player.id)
- property FK(property.id)
- value Real
- PK(game,player,property)
© www.soinside.com 2019 - 2024. All rights reserved.