gpt4 book ai didi

mysql - 一张或多张表,用于包含大约 70 个属性的实体

转载 作者:行者123 更新时间:2023-11-29 07:49:31 25 4
gpt4 key购买 nike

我有一个具有大约 70 个属性的实体。这是关于游戏中的一场战斗。攻击者有船只,防御者有船只和防御单位。有10种不同类型的船只和10种不同类型的防御单位。可以有 0 艘或更多相同类型的船只和防御单位。还有两种类型的资源。

所以我需要为每种类型的攻击舰在战斗前后、每种类型的防御舰在战斗前后、每种类型的防御单位在战斗前后以及每种类型的资源在战斗前后都有属性(总共 64 个属性)+ id_battle (AUTO_INCRMENT)、日期等属性...

如果表有 70 列,性能是否会出现问题?有没有更好的方法来创建这个,也许有更多的表?

最佳答案

您将标准化您的数据。永远不会有一个shiptype_a列和另一个shiptype_b列,而是一个包含船舶类型的表,也许还有其他在行而不是列中引用其记录的表。

或多或少:

“有 10 种不同类型的船只”

  • 这建议了一个表格ship_types

“以及 10 种不同类型的防御单位。”

  • 这建议了一个表defense_unit_types

“可以有 0 艘或更多相同类型的船只和防御单位。”

  • 这建议添加两个表:shipsdefense_units,或者仅继续使用类型。这取决于您是否想要平等地对待一种类型的实例(例如,您是否想知道它是类型 A 的船,一开始位于东方,现在位于西方,或者您只是想知道知道现在西边有一艘A型船)。

“还有两种类型的资源。”

  • 这可以是表格或标志

“攻击者拥有船只,而防御者拥有船只和防御单位[...]因此我需要在战斗前后为每种类型的攻击者船只提供属性[...]”

  • 所以每场比赛有一名进攻者和一名防守者。看来你想存储所有游戏步骤(这样你以后就可以回滚到以前的情况?)。

这将导致下表:

  • 游戏(game_id,...)
  • attacker_ship(game_id、step_no、ship_id)
  • defender_ship(game_id、step_no、ship_id)
  • defender_defense_unit(game_id、step_no、defense_unit_id)

或者在没有船舶和 Defense_unit_table 的情况下:

  • 游戏(game_id,...)
  • attacker_ship(game_id、step_no、ship_type_id)
  • defender_ship(game_id、step_no、ship_type_id)
  • defender_defense_unit(game_id、step_no、defense_unit_type_id)

如果是像国际象棋这样有 64 个字段的棋盘游戏,那么您可以存储整个棋盘,但通常您仍然会简单地存储单个字段,而不是存储具有 64 x n 字段的记录(fields1_is_what、field1_attacker_ship_id、field1_defender_ship_id、field1_defender_defense_unit_id、字段2_ ...)。然而,这与性能关系不大,而更多地与数据库的处理以及如何编写查询有关。

关于mysql - 一张或多张表,用于包含大约 70 个属性的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26842247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com