如何在 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
.
假设我有一个滑动拼图,或者一个回合制游戏,或者在迷宫中导航,本质上是一个场景,在这个场景中我们关心移动是什么,也关心它们的顺序,而且它们的数量是可变的,我们如何设计一个存储 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
.