如何在 BCNF 关系设计中表示可变长度序列?

How to represent variable length sequence in BCNF relation design?

假设我有一个滑动拼图,或者一个回合制游戏,或者在迷宫中导航,本质上是一个场景,在这个场景中我们关心移动是什么,也关心它们的顺序,而且它们的数量是可变的,我们如何设计一个存储 puzzle/game/maze 信息的模式,使其在 BCNF 中?

假设,作为一个工作示例,架构类似于:

Puzzle = (puzzle_id, time_limit, solved, moves)

其中 moves 是一系列动作,长度可变,例如 'tile_1_down; tile_2_up; tile_18_right; ...'

我们如何在 BCNF 设计中表达这种有序序列与可变长度相结合的想法?

通常这种情况的建模方式如下:

Puzzle  = (puzzle_id, time_limit, solved)
Move = (puzzle_id, number_of_move, move)

Puzzle 中使用 puzzle_id 主键,在 Move 中使用 puzzle_id, number_of_move 主键,在 Puzzle 中移动外键 puzzle_id .