|
@@ -79,6 +79,7 @@ CREATE TABLE dev.problem (
|
|
|
is_public SMALLINT NOT NULL DEFAULT 0 CHECK (is_public IN (0, 1)),
|
|
is_public SMALLINT NOT NULL DEFAULT 0 CHECK (is_public IN (0, 1)),
|
|
|
difficulty VARCHAR(10) CHECK (difficulty IN ('easy', 'medium', 'hard')),
|
|
difficulty VARCHAR(10) CHECK (difficulty IN ('easy', 'medium', 'hard')),
|
|
|
created_by BIGINT,
|
|
created_by BIGINT,
|
|
|
|
|
+ delete_flag INT NOT NULL DEFAULT 0 CHECK (delete_flag IN (0, 1)),
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
|
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
|
|
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
|
|
|
);
|
|
);
|
|
@@ -94,6 +95,7 @@ COMMENT ON COLUMN dev.problem.accepted_count IS '通过次数(AC次数)';
|
|
|
COMMENT ON COLUMN dev.problem.is_public IS '是否公开题目,0-未公开,1-公开';
|
|
COMMENT ON COLUMN dev.problem.is_public IS '是否公开题目,0-未公开,1-公开';
|
|
|
COMMENT ON COLUMN dev.problem.difficulty IS '难度:easy-简单,medium-中等,hard-困难';
|
|
COMMENT ON COLUMN dev.problem.difficulty IS '难度:easy-简单,medium-中等,hard-困难';
|
|
|
COMMENT ON COLUMN dev.problem.created_by IS '创建者ID,逻辑外键,关联用户表';
|
|
COMMENT ON COLUMN dev.problem.created_by IS '创建者ID,逻辑外键,关联用户表';
|
|
|
|
|
+COMMENT ON COLUMN dev.problem.delete_flag IS '删除标记';
|
|
|
COMMENT ON COLUMN dev.problem.created_at IS '创建时间';
|
|
COMMENT ON COLUMN dev.problem.created_at IS '创建时间';
|
|
|
COMMENT ON COLUMN dev.problem.updated_at IS '更新时间';
|
|
COMMENT ON COLUMN dev.problem.updated_at IS '更新时间';
|
|
|
|
|
|
|
@@ -106,6 +108,7 @@ CREATE TABLE dev.problem_case (
|
|
|
output TEXT,
|
|
output TEXT,
|
|
|
description TEXT,
|
|
description TEXT,
|
|
|
sort_order INT NOT NULL DEFAULT 0,
|
|
sort_order INT NOT NULL DEFAULT 0,
|
|
|
|
|
+ delete_flag INT NOT NULL DEFAULT 0 CHECK (delete_flag IN (0, 1)),
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
|
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
|
|
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
|
|
|
);
|
|
);
|
|
@@ -117,6 +120,7 @@ COMMENT ON COLUMN dev.problem_case.input IS '样例输入';
|
|
|
COMMENT ON COLUMN dev.problem_case.output IS '样例输出';
|
|
COMMENT ON COLUMN dev.problem_case.output IS '样例输出';
|
|
|
COMMENT ON COLUMN dev.problem_case.description IS '样例说明';
|
|
COMMENT ON COLUMN dev.problem_case.description IS '样例说明';
|
|
|
COMMENT ON COLUMN dev.problem_case.sort_order IS '显示顺序';
|
|
COMMENT ON COLUMN dev.problem_case.sort_order IS '显示顺序';
|
|
|
|
|
+COMMENT ON COLUMN dev.problem_case.delete_flag IS '删除标记';
|
|
|
COMMENT ON COLUMN dev.problem_case.created_at IS '创建时间';
|
|
COMMENT ON COLUMN dev.problem_case.created_at IS '创建时间';
|
|
|
COMMENT ON COLUMN dev.problem_case.updated_at IS '更新时间';
|
|
COMMENT ON COLUMN dev.problem_case.updated_at IS '更新时间';
|
|
|
|
|
|
|
@@ -129,6 +133,7 @@ CREATE TABLE dev.problem_test (
|
|
|
output TEXT,
|
|
output TEXT,
|
|
|
sort_order INT NOT NULL DEFAULT 0,
|
|
sort_order INT NOT NULL DEFAULT 0,
|
|
|
is_hidden INT NOT NULL DEFAULT 0,
|
|
is_hidden INT NOT NULL DEFAULT 0,
|
|
|
|
|
+ delete_flag INT NOT NULL DEFAULT 0 CHECK (delete_flag IN (0, 1)),
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
|
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
|
|
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
|
|
|
);
|
|
);
|
|
@@ -140,6 +145,7 @@ COMMENT ON COLUMN dev.problem_test.input IS '测试输入';
|
|
|
COMMENT ON COLUMN dev.problem_test.output IS '测试输出';
|
|
COMMENT ON COLUMN dev.problem_test.output IS '测试输出';
|
|
|
COMMENT ON COLUMN dev.problem_test.sort_order IS '判题顺序';
|
|
COMMENT ON COLUMN dev.problem_test.sort_order IS '判题顺序';
|
|
|
COMMENT ON COLUMN dev.problem_test.is_hidden IS '是否隐藏用例,0-不隐藏,1-隐藏(不展示给用户)';
|
|
COMMENT ON COLUMN dev.problem_test.is_hidden IS '是否隐藏用例,0-不隐藏,1-隐藏(不展示给用户)';
|
|
|
|
|
+COMMENT ON COLUMN dev.problem_test.delete_flag IS '删除标记';
|
|
|
COMMENT ON COLUMN dev.problem_test.created_at IS '创建时间';
|
|
COMMENT ON COLUMN dev.problem_test.created_at IS '创建时间';
|
|
|
COMMENT ON COLUMN dev.problem_test.updated_at IS '更新时间';
|
|
COMMENT ON COLUMN dev.problem_test.updated_at IS '更新时间';
|
|
|
|
|
|
|
@@ -159,6 +165,7 @@ CREATE TABLE dev.submission (
|
|
|
score INT,
|
|
score INT,
|
|
|
total_test_cases INT NOT NULL DEFAULT 0,
|
|
total_test_cases INT NOT NULL DEFAULT 0,
|
|
|
passed_test_cases INT NOT NULL DEFAULT 0,
|
|
passed_test_cases INT NOT NULL DEFAULT 0,
|
|
|
|
|
+ delete_flag INT NOT NULL DEFAULT 0 CHECK (delete_flag IN (0, 1)),
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
|
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
|
|
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
|
|
|
);
|
|
);
|
|
@@ -177,6 +184,7 @@ COMMENT ON COLUMN dev.submission.memory_used_kb IS '内存占用(KB)';
|
|
|
COMMENT ON COLUMN dev.submission.score IS '该题得分(用于比赛)';
|
|
COMMENT ON COLUMN dev.submission.score IS '该题得分(用于比赛)';
|
|
|
COMMENT ON COLUMN dev.submission.total_test_cases IS '总测试用例数';
|
|
COMMENT ON COLUMN dev.submission.total_test_cases IS '总测试用例数';
|
|
|
COMMENT ON COLUMN dev.submission.passed_test_cases IS '通过的测试用例数';
|
|
COMMENT ON COLUMN dev.submission.passed_test_cases IS '通过的测试用例数';
|
|
|
|
|
+COMMENT ON COLUMN dev.submission.delete_flag IS '删除标记';
|
|
|
COMMENT ON COLUMN dev.submission.created_at IS '创建时间';
|
|
COMMENT ON COLUMN dev.submission.created_at IS '创建时间';
|
|
|
COMMENT ON COLUMN dev.submission.updated_at IS '更新时间';
|
|
COMMENT ON COLUMN dev.submission.updated_at IS '更新时间';
|
|
|
|
|
|
|
@@ -186,6 +194,7 @@ CREATE TABLE dev.category (
|
|
|
id BIGSERIAL PRIMARY KEY,
|
|
id BIGSERIAL PRIMARY KEY,
|
|
|
category_name VARCHAR(50) NOT NULL UNIQUE,
|
|
category_name VARCHAR(50) NOT NULL UNIQUE,
|
|
|
description TEXT,
|
|
description TEXT,
|
|
|
|
|
+ delete_flag INT NOT NULL DEFAULT 0 CHECK (delete_flag IN (0, 1)),
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
|
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
|
|
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
|
|
|
);
|
|
);
|
|
@@ -194,6 +203,7 @@ COMMENT ON TABLE dev.category IS '题目类别表(如动态规划、贪心等
|
|
|
COMMENT ON COLUMN dev.category.id IS '类别唯一标识';
|
|
COMMENT ON COLUMN dev.category.id IS '类别唯一标识';
|
|
|
COMMENT ON COLUMN dev.category.category_name IS '类别名称';
|
|
COMMENT ON COLUMN dev.category.category_name IS '类别名称';
|
|
|
COMMENT ON COLUMN dev.category.description IS '类别描述';
|
|
COMMENT ON COLUMN dev.category.description IS '类别描述';
|
|
|
|
|
+COMMENT ON COLUMN dev.category.delete_flag IS '删除标记';
|
|
|
COMMENT ON COLUMN dev.category.created_at IS '创建时间';
|
|
COMMENT ON COLUMN dev.category.created_at IS '创建时间';
|
|
|
COMMENT ON COLUMN dev.category.updated_at IS '更新时间';
|
|
COMMENT ON COLUMN dev.category.updated_at IS '更新时间';
|
|
|
|
|
|
|
@@ -202,6 +212,7 @@ DROP TABLE IF EXISTS dev.problem_category_rel;
|
|
|
CREATE TABLE dev.problem_category_rel (
|
|
CREATE TABLE dev.problem_category_rel (
|
|
|
problem_id BIGINT NOT NULL,
|
|
problem_id BIGINT NOT NULL,
|
|
|
category_id BIGINT NOT NULL,
|
|
category_id BIGINT NOT NULL,
|
|
|
|
|
+ delete_flag INT NOT NULL DEFAULT 0 CHECK (delete_flag IN (0, 1)),
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
|
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
|
PRIMARY KEY (problem_id, category_id)
|
|
PRIMARY KEY (problem_id, category_id)
|
|
@@ -210,6 +221,7 @@ CREATE TABLE dev.problem_category_rel (
|
|
|
COMMENT ON TABLE dev.problem_category_rel IS '题目与类别关联表';
|
|
COMMENT ON TABLE dev.problem_category_rel IS '题目与类别关联表';
|
|
|
COMMENT ON COLUMN dev.problem_category_rel.problem_id IS '题目ID,逻辑外键,关联题目表';
|
|
COMMENT ON COLUMN dev.problem_category_rel.problem_id IS '题目ID,逻辑外键,关联题目表';
|
|
|
COMMENT ON COLUMN dev.problem_category_rel.category_id IS '类别ID,逻辑外键,关联类别表';
|
|
COMMENT ON COLUMN dev.problem_category_rel.category_id IS '类别ID,逻辑外键,关联类别表';
|
|
|
|
|
+COMMENT ON COLUMN dev.problem_category_rel.delete_flag IS '删除标记';
|
|
|
COMMENT ON COLUMN dev.problem_category_rel.created_at IS '创建时间';
|
|
COMMENT ON COLUMN dev.problem_category_rel.created_at IS '创建时间';
|
|
|
COMMENT ON COLUMN dev.problem_category_rel.updated_at IS '更新时间';
|
|
COMMENT ON COLUMN dev.problem_category_rel.updated_at IS '更新时间';
|
|
|
|
|
|
|
@@ -225,6 +237,7 @@ CREATE TABLE dev.contest (
|
|
|
end_datetime TIMESTAMP NOT NULL CHECK (end_datetime > start_datetime),
|
|
end_datetime TIMESTAMP NOT NULL CHECK (end_datetime > start_datetime),
|
|
|
status VARCHAR(20) NOT NULL DEFAULT 'pending' CHECK (status IN ('pending', 'running', 'ended')),
|
|
status VARCHAR(20) NOT NULL DEFAULT 'pending' CHECK (status IN ('pending', 'running', 'ended')),
|
|
|
created_by BIGINT,
|
|
created_by BIGINT,
|
|
|
|
|
+ delete_flag INT NOT NULL DEFAULT 0 CHECK (delete_flag IN (0, 1)),
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
|
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
|
|
updated_at TIMESTAMP NOT NULL DEFAULT NOW()
|
|
|
);
|
|
);
|
|
@@ -239,6 +252,7 @@ COMMENT ON COLUMN dev.contest.start_datetime IS '开始时间';
|
|
|
COMMENT ON COLUMN dev.contest.end_datetime IS '结束时间';
|
|
COMMENT ON COLUMN dev.contest.end_datetime IS '结束时间';
|
|
|
COMMENT ON COLUMN dev.contest.status IS '状态:pending-未开始,running-进行中,ended-已结束';
|
|
COMMENT ON COLUMN dev.contest.status IS '状态:pending-未开始,running-进行中,ended-已结束';
|
|
|
COMMENT ON COLUMN dev.contest.created_by IS '创建者ID,逻辑外键,关联用户表(管理员或教练)';
|
|
COMMENT ON COLUMN dev.contest.created_by IS '创建者ID,逻辑外键,关联用户表(管理员或教练)';
|
|
|
|
|
+COMMENT ON COLUMN dev.contest.delete_flag IS '删除标记';
|
|
|
COMMENT ON COLUMN dev.contest.created_at IS '创建时间';
|
|
COMMENT ON COLUMN dev.contest.created_at IS '创建时间';
|
|
|
COMMENT ON COLUMN dev.contest.updated_at IS '更新时间';
|
|
COMMENT ON COLUMN dev.contest.updated_at IS '更新时间';
|
|
|
|
|
|
|
@@ -249,6 +263,7 @@ CREATE TABLE dev.contest_problem (
|
|
|
problem_id BIGINT NOT NULL,
|
|
problem_id BIGINT NOT NULL,
|
|
|
display_order INT NOT NULL,
|
|
display_order INT NOT NULL,
|
|
|
score INT NOT NULL,
|
|
score INT NOT NULL,
|
|
|
|
|
+ delete_flag INT NOT NULL DEFAULT 0 CHECK (delete_flag IN (0, 1)),
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
|
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
|
PRIMARY KEY (contest_id, problem_id)
|
|
PRIMARY KEY (contest_id, problem_id)
|
|
@@ -259,6 +274,7 @@ COMMENT ON COLUMN dev.contest_problem.contest_id IS '比赛ID,逻辑外键,
|
|
|
COMMENT ON COLUMN dev.contest_problem.problem_id IS '题目ID,逻辑外键,关联题目表';
|
|
COMMENT ON COLUMN dev.contest_problem.problem_id IS '题目ID,逻辑外键,关联题目表';
|
|
|
COMMENT ON COLUMN dev.contest_problem.display_order IS '题目在比赛中的显示序号';
|
|
COMMENT ON COLUMN dev.contest_problem.display_order IS '题目在比赛中的显示序号';
|
|
|
COMMENT ON COLUMN dev.contest_problem.score IS '本题分值';
|
|
COMMENT ON COLUMN dev.contest_problem.score IS '本题分值';
|
|
|
|
|
+COMMENT ON COLUMN dev.contest_problem.delete_flag IS '删除标记';
|
|
|
COMMENT ON COLUMN dev.contest_problem.created_at IS '创建时间';
|
|
COMMENT ON COLUMN dev.contest_problem.created_at IS '创建时间';
|
|
|
COMMENT ON COLUMN dev.contest_problem.updated_at IS '更新时间';
|
|
COMMENT ON COLUMN dev.contest_problem.updated_at IS '更新时间';
|
|
|
|
|
|
|
@@ -268,6 +284,7 @@ CREATE TABLE dev.contest_registration (
|
|
|
id BIGSERIAL PRIMARY KEY,
|
|
id BIGSERIAL PRIMARY KEY,
|
|
|
contest_id BIGINT NOT NULL,
|
|
contest_id BIGINT NOT NULL,
|
|
|
user_id BIGINT NOT NULL,
|
|
user_id BIGINT NOT NULL,
|
|
|
|
|
+ delete_flag INT NOT NULL DEFAULT 0 CHECK (delete_flag IN (0, 1)),
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
|
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
|
UNIQUE (contest_id, user_id)
|
|
UNIQUE (contest_id, user_id)
|
|
@@ -277,6 +294,7 @@ COMMENT ON TABLE dev.contest_registration IS '比赛报名表';
|
|
|
COMMENT ON COLUMN dev.contest_registration.id IS '报名记录ID';
|
|
COMMENT ON COLUMN dev.contest_registration.id IS '报名记录ID';
|
|
|
COMMENT ON COLUMN dev.contest_registration.contest_id IS '比赛ID,逻辑外键,关联比赛表';
|
|
COMMENT ON COLUMN dev.contest_registration.contest_id IS '比赛ID,逻辑外键,关联比赛表';
|
|
|
COMMENT ON COLUMN dev.contest_registration.user_id IS '报名用户ID,逻辑外键,关联用户表';
|
|
COMMENT ON COLUMN dev.contest_registration.user_id IS '报名用户ID,逻辑外键,关联用户表';
|
|
|
|
|
+COMMENT ON COLUMN dev.contest_registration.delete_flag IS '删除标记';
|
|
|
COMMENT ON COLUMN dev.contest_registration.created_at IS '创建时间';
|
|
COMMENT ON COLUMN dev.contest_registration.created_at IS '创建时间';
|
|
|
COMMENT ON COLUMN dev.contest_registration.updated_at IS '更新时间';
|
|
COMMENT ON COLUMN dev.contest_registration.updated_at IS '更新时间';
|
|
|
|
|
|