10.1.4 数据表设计
从处理流程中可以看出,开发猜数字游戏只需要两张表即可,分别用于存储游戏信息和游戏回合信息,游戏信息表的结构如表10-1所示,游戏回合信息表的结构如表10-2所示。
图10-1 猜数字游戏的核心处理流程
表10-1 游戏信息表
表10-2 游戏回合信息表
字段game_id是游戏信息表的主键,唯一标识一局游戏。字段game_answer是每局游戏的正确答案,通常是随机生成的。字段create_time和finish_time并不是必需的,但这两个字段有助于分析用户的使用行为,如用户通常在什么时间段玩游戏。
游戏信息表的建表语句如下:
- create table game(
- game_id int not null auto_increment primary key comment '游戏id',
- open_id varchar(50) not null comment '用户的OpenID',
- game_answer varchar(4) not null comment '猜数字游戏的正确答案',
- create_time varchar(20) not null comment '游戏创建时间',
- game_status int not null comment '游戏状态(0:游戏中 1:胜利 2:失败)',
- finish_time varchar(20) comment '游戏完成时间'
- ) comment='猜数字游戏的每一局';
字段game_id与游戏信息表中的game_id相对应,通过该字段能够确定当前游戏回合的记录属于哪一局游戏。
游戏回合信息表的建表语句如下:
- create table game_round(
- id int not null auto_increment primary key comment '主键id',
- game_id int not null comment '游戏id',
- open_id varchar(50) not null comment '用户的OpenID',
- guess_number varchar(4) not null comment '用户猜测的数字',
- guess_time varchar(20) not null comment '用户猜测的时间',
- guess_result varchar(4) not null comment '用户猜测的结果,即xAyB',
- FOREIGN KEY(game_id) REFERENCES game(game_id) on delete cascade on update cascade
- ) comment='猜数字游戏的每一回合';
我们在BAE的MySQL中将表game、game_round创建好,接下来的游戏开发中会直接使用这两张表。