10.1.4 数据表设计

从处理流程中可以看出,开发猜数字游戏只需要两张表即可,分别用于存储游戏信息和游戏回合信息,游戏信息表的结构如表10-1所示,游戏回合信息表的结构如表10-2所示。

10.1.4 数据表设计 - 图1

图10-1 猜数字游戏的核心处理流程

表10-1 游戏信息表

10.1.4 数据表设计 - 图2

表10-2 游戏回合信息表

10.1.4 数据表设计 - 图3

字段game_id是游戏信息表的主键,唯一标识一局游戏。字段game_answer是每局游戏的正确答案,通常是随机生成的。字段create_time和finish_time并不是必需的,但这两个字段有助于分析用户的使用行为,如用户通常在什么时间段玩游戏。

游戏信息表的建表语句如下:

  1. create table game(
  2. game_id int not null auto_increment primary key comment '游戏id',
  3. open_id varchar(50) not null comment '用户的OpenID',
  4. game_answer varchar(4) not null comment '猜数字游戏的正确答案',
  5. create_time varchar(20) not null comment '游戏创建时间',
  6. game_status int not null comment '游戏状态(0:游戏中 1:胜利 2:失败)',
  7. finish_time varchar(20) comment '游戏完成时间' 
  8. ) comment='猜数字游戏的每一局';

字段game_id与游戏信息表中的game_id相对应,通过该字段能够确定当前游戏回合的记录属于哪一局游戏。

游戏回合信息表的建表语句如下:

  1. create table game_round(
  2. id int not null auto_increment primary key comment '主键id',
  3. game_id int not null comment '游戏id',
  4. open_id varchar(50) not null comment '用户的OpenID',
  5. guess_number varchar(4) not null comment '用户猜测的数字',
  6. guess_time varchar(20) not null comment '用户猜测的时间',
  7. guess_result varchar(4) not null comment '用户猜测的结果,即xAyB',
  8. FOREIGN KEY(game_id) REFERENCES game(game_id) on delete cascade on update cascade
  9. ) comment='猜数字游戏的每一回合';

我们在BAE的MySQL中将表game、game_round创建好,接下来的游戏开发中会直接使用这两张表。