小编R B*_*oks的帖子

不在此数据库中使用规范化表是不是很糟糕?

我最近了解了我的信息学课程中的规范化,并且我正在开发一个使用SQLite作为后端数据库的多人游戏.

有关它的一些信息:

简化的结构看起来有点像下面这样:

 player_id |  level | exp  | money | inventory
---------------------------------------------------------
    1      |    3   | 120  | 400   | {item a; item b; item c}
Run Code Online (Sandbox Code Playgroud)

好的.如您所见,我将以字符串形式将表/数组存储在"inventory"列中.这违反了规范化.

但问题是:为玩家的库存制作额外的桌子对我来说只是一个缺点!

  • 我访问数据库的唯一点是:
    • 当玩家加入游戏并加载他的个人资料时
    • 保存球员的个人资料时

当玩家加入时,我从数据库加载他的数据并将其存储在内存中.保存播放器时,我每隔五分钟就会写一次DB.所以我的脚本中实际上只有很少的SQL查询.

如果我在加载时使用了额外的表格,我将不得不:

  • 执行性能和可能更多数据密集型查询以从库存表中获取属于玩家X的所有项目
  • 浏览结果并将其转换为表格以便存储在内存中

保存时:

  • 从库存表中删除属于玩家X的所有物品(玩家可能已经丢弃/出售了一些物品?)
  • 浏览表格并对玩家拥有的每个项目执行查询

如果我将所有玩家数据保存在一个表中:

  • 我只有一个用于保存和加载的查询
  • 一切都会在一个地方
  • 在我的脚本中,我只需要在加载和保存时(de)序列化表

我现在应该怎么做?

我的论点和情况是否有理由反对正常化?

sql database theory normalization

6
推荐指数
2
解决办法
507
查看次数

标签 统计

database ×1

normalization ×1

sql ×1

theory ×1