Skip to content

数据库结构

Eridanus Sora edited this page Sep 17, 2017 · 13 revisions

数据库结构

以下表述中的“关联”均采用 Laravel 文档中的表述方法。

Teams

队伍信息

表名:teams

关联关系

  1. 一对多关联 (hasMany) 答题记录 (log) 表。

字段详情

字段名 字段类型 说明
team_id integer 自增主键
team_name string 队伍名
email string 唯一、邮件地址
password string 密码
signUpTime dateTimeTz 注册时间
lastLoginTime dateTimeTz 上次登陆时间
score float 积分
banned boolean 是否被封禁
admin boolean 是否为管理员
remenber_token string 记住登陆token
created_at datetime Laravel 自动维护
updated_at datetime Laravel 自动维护

Log

答题记录

表名:log

关联关系

  1. 一对多关联 (hasMany) 从属于队伍 (teams) 表。
  2. 一对多关联 (hasMany) 从属于题目信息 (questions) 表。

字段详情

字段名 字段类型 说明
log_id integer 自增主键
team_id integer 队伍id
challenge_id integer 题目id
level_id integer level id
category_id integer category_id
status string 状态 correct/incorrect
flag string 提交的 flag 内容
score float 获得积分
created_at datetime Laravel 自动维护
updated_at datetime Laravel 自动维护

Challenges

题目详情

表名:Challenges

关联关系

  1. 一对多关联 (hasMany) flag
  2. 一对多关联 (hasMany) 答题记录 (log) 表

字段详情

字段名 字段类型 说明
challenge_id integer 自增主键
title string 标题
url string 链接
description text 简介
score float 基础分数
release_time datetime 发布时间
config text 设置,存储 JSON 字符串
created_at datetime Laravel 自动维护
updated_at datetime Laravel 自动维护
  • config 说明
    • multiFlag {boolean} 是否为多 Flag,多 Flag 意味着每个用户将会有自己的 Flag。需要事先导入多于用户数量的 Flag。
    • minimumSolveTime {integer} 最短解答时间,从开放该题到提交该题正确 Flag 的时间如果小于该值,将导致封禁。单位为秒。

Flags

表名:flags

关联关系

  1. 一对多关联 (hasMany) 从属于 题目 (questions) 表。

字段详情

字段名 字段类型 说明
flag_id integer 自增主键
challenge_id integer 题目id
flag string flag
team_id integer (optional) 可一用户一 Flag
created_at datetime Laravel 自动维护
updated_at datetime Laravel 自动维护

Categorys

表名:categorys

关联关系

  1. 本表一对多关联 (hasMany) 表 levels
  2. 本表远层一对多关联 (hasManyThrough) 表 challenges
  3. 本表远层一对多关联 (hasManyThrough) 表 logs

字段详情

字段名 字段类型 说明
category_id integer 自增主键
category_name string 分类名
created_at datetime Laravel 自动维护
updated_at datetime Laravel 自动维护

Levels

表名 levels

关联关系

  1. 本表一对多关联 (hasMany) 表 challenges
  2. 本表一对多关联 (hasMany) 表 logs
  3. 本表一对多关联从属于 (hasMany) 表 categorys

字段详情

字段名 字段类型 说明
level_id integer 自增主键
level_name string level 名
rules text level 开放规则 JSON存储
release_time datetimeTz 开放时间
created_at datetime Laravel 自动维护
updated_at datetime Laravel 自动维护