2.3. 数据描述
2.3.1. 数据建模
2.3.2. 数据字典
用户(User)
username: 唯一的文本字段,用户的唯一标识符。
email: 可选的文本字段,用户的电子邮件地址。
create_time: 自动设置的日期时间字段,记录用户的创建时间。
admin_type: 文本字段,默认值为“Regular User”,表示用户的管理类型。
character: 选择字段,选项为 'student' 或 'teacher',默认为 'student'。
problem_permission: 文本字段,默认为“None”,定义用户对问题的访问权限。
auth_token: 可选的文本字段,用于单点登录认证。
two_factor_auth: 布尔字段,默认为False,指示是否启用两因素认证。
tfa_token: 可选的文本字段,两因素认证的临时令牌。
session_keys: JSON字段,默认为空列表,存储会话密钥。
open_api: 布尔字段,默认为False,指示是否开启开放API。
open_api_appkey: 可选的文本字段,开放API的应用密钥。
is_disabled: 布尔字段,默认为False,指示用户是否被禁用。
题目
_id: 文本字段,具有数据库索引,用于显示的问题ID。
contest: 可选的外键,关联到Contest,表示问题所属的比赛。
is_public: 布尔字段,表示问题是否公开可见。
title: 文本字段,问题的标题。
description: 富文本字段,问题的描述。
input_description: 富文本字段,问题的输入描述。
output_description: 富文本字段,问题的输出描述。
samples: JSON字段,存储问题的样本输入输出。
test_case_id: 文本字段,关联的测试用例ID。
test_case_score: JSON字段,测试用例的分数。
hint: 可选的富文本字段,问题提示。
languages: JSON字段,支持的编程语言。
template: JSON字段,代码模板。
create_time: 自动设置的日期时间字段,问题的创建时间。
last_update_time: 可选的日期时间字段,问题的最后更新时间。
created_by: 外键,关联到User,问题的创建者。
time_limit: 整数字段,执行时间限制(毫秒)。
memory_limit: 整数字段,内存限制(MB)。
io_mode: JSON字段,定义输入输出模式。
spj: 布尔字段,指示是否使用特殊判题方法。
spj_language: 可选的文本字段,特殊判题使用的编程语言。
spj_code: 可选的文本字段,特殊判题的代码。
spj_version: 可选的文本字段,特殊判题的版本。
spj_compile_ok: 布尔字段,特殊判题编译是否成功。
rule_type: 文本字段,问题的规则类型(例如ACM, OI)。
visible: 布尔字段,表示问题是否可见。
difficulty: 文本字段,问题难度(例如High, Mid, Low)。
tags: 多对多关系,关联到ProblemTag,问题的标签。
source: 可选的文本字段,问题的来源。
比赛
title: 文本字段,比赛的标题。
description: 富文本字段,比赛的详细描述。
real_time_rank: 布尔字段,是否实时显示排名。
password: 可选的文本字段,比赛的访问密码。
rule_type: 文本字段,比赛的规则类型。
start_time: 日期时间字段,比赛开始时间。
end_time: 日期时间字段,比赛结束时间。
reate_time: 自动设置的日期时间字段,比赛的创建时间。
last_update_time: 自动更新的日期时间字段,比赛的最后更新时间。
created_by: 外键,关联到User,比赛的创建者。
visible: 布尔字段,表示比赛是否可见。
allowed_ip_ranges: JSON字段,允许访问比赛的IP范围。
提交 (Submission)
id: 文本字段,提交的唯一标识符,主键。
contest: 可选的外键,关联到Contest,表示提交所属的比赛。
problem: 外键,关联到Problem,表示提交的问题。
create_time: 自动设置的日期时间字段,记录提交的创建时间。
user_id: 整数字段,表示提交用户的ID,具有数据库索引。
username: 文本字段,提交用户的用户名。
code: 文本字段,用户提交的代码。
result: 整数字段,表示提交的结果,如通过、错误等,默认为待判状态(Pending)。
info: JSON字段,存储判题返回的详细信息。
language: 文本字段,表示提交所用的编程语言。
shared: 布尔字段,表示是否共享此提交,默认为False。
statistic_info: JSON字段,存储提交的统计信息,如时间和内存消耗。
ip: 可选的文本字段,提交时的IP地址。
测试用例(TestCase)
input: 文本字段,表示测试用例的输入数据。
output: 文本字段,表示测试用例的输出数据。
score: 整数字段,表示此测试用例的分数,默认为0。
问题标签(ProblemTag)
name: 文本字段,表示标签的名称
比赛排名(ACMContestRank 和 OIContestRank)
user: 外键,关联到User,表示参与比赛的用户。
contest: 外键,关联到Contest,表示所属比赛。
submission_number: 整数字段,表示用户的提交次数。
accepted_number (ACM专有): 整数字段,表示通过的问题数。
total_time (ACM专有): 整数字段,表示总用时,包括错误尝试的惩罚时间。
submission_info (ACM和OI均有): JSON字段,存储关于提交的详细信息。
total_score (OI专有): 整数字段,表示用户在OI比赛中的总分。
判题服务器 (JudgeServer)
hostname: 文本字段,服务器的主机名。
ip: 可选的文本字段,服务器的IP地址。
judger_version: 文本字段,判题服务器的版本。
cpu_core: 整数字段,服务器的CPU核心数。
memory_usage: 浮点字段,服务器的内存使用率。
cpu_usage: 浮点字段,服务器的CPU使用率。
last_heartbeat: 日期时间字段,服务器的最后心跳时间。
create_time: 自动设置的日期时间字段,服务器的创建时间。
task_number: 整数字段,服务器当前的任务数量。
service_url: 可选的文本字段,服务器的服务URL。
is_disabled: 布尔字段,表示服务器是否被禁用。
Last updated