我有一个拥有大约70个属性的实体。这是关于游戏中的一场战斗。 攻击者有船只,而后卫有船只和防御单位。 有10种不同类型的船只和10种不同类型的防御单位。可以有0个或更多相同类型的船舶和防御单位。 还有两种类型的资源。
所以我需要为战斗前后各种类型的攻击舰,战斗前后各类防御舰,战斗前后各类防御单位以及战前后的各类资源(总计64个属性)+ id_battle(AUTO_INCREMENT),日期等属性
如果表有70列,是否存在性能问题? 是否有更好的方法来创建它,可能有更多的表?
答案 0 :(得分:2)
您可以规范化数据。永远不会有一个列shiptype_a和另一个shiptype_b,而是一个包含船类型的表,也可能是其他引用行记录而不是列的记录。
或多或少:
"有10种不同类型的船舶"
"以及10种不同类型的防御单位。"
"可以有0个或更多相同类型的船只和防御单位。"
"还有两种类型的资源。"
"攻击者有船只,而后卫有船只和防御单位[...]所以我需要在战斗前后为每种类型的攻击舰提供属性[...]"
这将导致以下表格:
或者没有船舶和防御_unit_table:
如果它是一个包含国际象棋等64个字段的棋盘游戏,那么你可以存储整个棋盘,但你通常只会存储单个字段而不是64个字段的字段(fields1_is_what,field1_attacker_ship_id,field1_defender_ship_id,field1_defender_defense_unit_id, field2_ ...)。这与性能无关,但更多的是处理数据库以及如何编写查询。