QtechOj数据库
自从和增兄搭伙一起弄OJ之后,倍感精神,前天我们就把数据库搭建好了。内容如下,欢迎大家指正不合理的地方。我们的数据库是照着hustoj的数据库改动的。图为hustoj原版数据库,改动地方均用红色和灰色表示了出来,通知也感谢hustoj的支持!
数据库设计我们目前只把第一版需要完成的进行了改动。论坛方面两人有一些争议,所以放在第二版实现。
通过这次数据库设计,让我长进很多。一开始我对数据库一直都是一个很轻视的态度,但是现在我则发现了,用面向对象的思想去思考数据库,数据库的设计真的决定了以后整个项目的维护性、可移植性、稳定性、资源合理利用性等多方面。
HustOj数据库( | |||
序号 | 表名 | 作用 | 我们的修改 |
1 | 记录编译错误记录 | 第一版需完成 | |
2 | 竞赛表 | 第一版需完成 改动 | |
3 | 竞赛题目 | 第一版需完成 不改 | |
4 | 登入日志 | 第一版需完成 留着防攻击 | |
5 | 消息列表 | 第二版处理 | |
6 | 新闻表 | 第三版处理 | |
7 | ??? | 删除 | |
8 | 权限授予 | 删除 | |
9 | 题目表 | ||
10 | 论坛(帖子及回复)表 | ||
11 | 运行时错误信息 | 第一版需完成 | |
12 | 相似度检测表 | 第二版处理 | |
13 | 程序运行结果记录 | 第一版需完成 | |
14 | 提交的源码 | ||
15 | 论坛帖子表 | 第二版处理 | |
16 | 用户信息 | 第一版需完成 改动 | |
17 | 用于在线IDE | 删除 | |
18 | admin | 管理员表 | 第一版需完成 新添加 |
Hustoj开源项目:http://code.google.com/p/hustoj/
Hustoj演示平台:http://hustoj.sinaapp.com/
Hustoj外挂BBS:http://hustoj.sinaapp.com/bbs/
记录编译错误的提交号(id)及原因 | ||||
字段名 | 类型 | 长度 | 是否允许为空 | 备注 |
solution_id | int | 11 | N | 主键(提交id,即RunID) |
error | text |
| Y | 编译错误原因 |
竞赛表 | |||||
字段名 | 类型 | 长度 | 是否允许为空 | 备注 | 我的改动 |
contest_id | int | 11 | N | 竞赛id(主键) |
|
user_id | varchar | 20 | N | 用户id(外键) | 创建者id |
title | varchar | 255 | Y | 竞赛标题 |
|
start_time | datetime |
| Y | 开始时间(年月日时分) |
|
end_time | datatime |
| Y | 结束时间(年月日时分) |
|
defunct | char | 1 | N | 是否屏蔽(Y/N) |
|
description | text |
| Y | 描述(在此版本中未用) | 准备使用 |
private | tinyint | 4 |
| 公开/内部(0/1) | 是否需要密码~ |
langmask | int | 11 |
| 语言 | 保留,不同老师需要布置不同语言的作业 |
password | varchar | 20 | Y |
| 添加的比赛密码 |
竞赛题目 | ||||
字段名 | 类型 | 长度 | 是否允许为空 | 备注 |
problem_id | int | 11 | N | 题目id |
contest_id | int | 11 | Y | 竞赛id |
title | char | 200 | N | 标题 |
num | int | 11 | N | 竞赛中题目编号 |
登入日志(不管是否登入成功都记录) | ||||
字段名 | 类型 | 长度 | 是否允许为空 | 备注 |
varchar | 20 | N | 用户id | |
password | varchar | 40 | Y | 密码(不一定正确) |
ip | varchar | 100 | Y | 登录的ip |
time | datetime |
| Y | 登入时间 |
站内消息系统 | |||||
字段名 | 类型 | 长度 | 是否允许为空 | 备注 | 我们的改动 |
mail_id | int | 11 | N | 消息编号 |
|
to_user | varchar | 20 | N | 接收者 |
|
from_user | varchar | 20 | N | 发送者 |
|
title | varchar | 200 | N | 标题 |
|
content | text |
| Y | 内容 |
|
new_mail | tinyint | 1 | N | 新消息(1/0) |
|
reply | tinyint | 4 | Y | 回复 |
|
in_date | datetime |
| Y | 时间 |
|
defunct | char | 1 | N | 是否屏蔽(Y/N) |
|
新闻(首页显示) | ||||
字段名 | 类型 | 长度 | 是否允许为空 | 备注 |
news_id | int | 11 | N | 新闻编号(主键) |
user_id | varchar | 20 | N | 用户账号 |
title | varchar | 200 | N | 新闻标题 |
content | text |
| N | 内容 |
time | datetime |
| N | 更新时间 |
importance | tinyint | 4 | N | 关键字??? |
defunct | char | 1 | N | 是否屏蔽(Y/N) |
Online(已删除) |
| |||
字段名 | 类型 | 长度 | 是否允许为空 | 备注 |
hash | varchar | 32 | N | 主键 |
ip | varchar | 20 | N |
|
ua | varchar | 255 | N |
|
refer | varchar | 255 | Y |
|
lastmove | int | 10 | N |
|
firsttime | int | 10 | Y |
|
uri | varchar | 255 | Y |
|
Privilege(已删除) | 用户分组 | |||
字段名 | 类型 | 长度 | 是否允许为空 | 备注 |
user_id | char | 20 | N | 用户帐号 |
rightstr | char | 30 | N | 分组 |
defunct | char | 1 | N | 是否屏蔽(Y/N) |
题目表 | |||||
字段名 | 类型 | 长度 | 是否允许为空 | 备注 | 我们的改动 |
problem_id | int | 11 | N | 题目编号,主键 |
|
title | varchar | 200 | N | 标题 |
|
description | text |
| Y | 题目描述 |
|
inupt | text |
| Y | 输入说明 |
|
output | text |
| Y | 输出说明 |
|
sample_input | text |
| Y | 输入参照 |
|
sample_output | text |
| Y | 输出参照 |
|
spj | char | 1 | N | 是否为特别题目 |
|
hint | text |
| Y | 暗示 |
|
source | varchar | 100 | Y | 来源 |
|
in_date | datetime |
| Y | 加入时间 |
|
time_limit | int | 11 | N | 限时(秒) |
|
memory_limit | int | 11 | N | 空间限制(MByte) |
|
defunct | char | 1 | N | 是否屏蔽(Y/N) |
|
accepted | int | 11 | Y | 总ac次数 |
|
submit | int | 11 | Y | 总提交次数 |
|
solved | int | 11 | Y | 解答(未用) | 删除 |
论坛(帖子及回复)(Web Board) | ||||
字段名 | 类型 | 长度 | 是否允许为空 | 备注 |
rid | int | 11 | N | 帖子序号(主键) |
author_id | varchar | 20 | N | 作者帐号 |
time | datetime |
| N | 发布时间 |
content | text |
| N | 帖子内容 |
topic_id | int | 11 | N | 帖子分组 |
status | int | 2 | N | 状态(0:正常,1:锁定,2:删除) |
ip | varchar | 30 | N | 发帖子者ip |
运行错误信息(Runtime Error) | ||||
字段名 | 类型 | 长度 | 是否允许为空 | 备注 |
solution_id | int | 11 | N | 运行id(主键) |
error | text |
| Y | 错误记录 |
相似度检测 | ||||
字段名 | 类型 | 长度 | 是否允许为空 | 备注 |
s_id | int | 11 | N | 提交号soltiotn_id(主键) |
sim_s_id | int | 11 | Y | 与s_id相似的soltion_id |
sim | int | 11 | Y | 相似度(50-100) |
程序运行结果记录 | |||||
字段名 | 类型 | 长度 | 是否允许为空 | 备注 | 我们的改动 |
solution_id | int | 11 | N | 运行id(主键) |
|
problem_id | int | 11 | N | 问题id |
|
user_id | char | 20 | N | 用户id |
|
time | int | 11 | N | 用时(秒) |
|
memory | int | 11 | N | 所用空间() |
|
in_date | datetime |
| N | 加入时间 |
|
result | smallint | 6 | N | 结果(4:AC) |
|
language | tinyint | 4 | N | 语言 |
|
ip | char | 15 | N | 用户ip | 删除 |
contest_id | int | 11 | Y | 所属于竞赛组 |
|
valid | tinyint | 4 | N | 是否有效??? |
|
num | tinyint | 4 | N | 题目在竞赛中的顺序号 |
|
code_lenght | int | 11 | N | 代码长度 |
|
judgetime | datetime |
| Y | 判题时间 | 删除 |
pass_rate | decimal | 2 | N | 通过百分比(OI模式下可用) |
记录源代码 | ||||
字段名 | 类型 | 长度 | 是否允许为空 | 备注 |
solution_id | int | 11 | N | 运行id(主键) |
source | text |
| N | 源代码 |
论坛(答辩)帖子主题 | |||||
字段名 | 类型 | 长度 | 是否允许为空 | 备注 | 我们改的 |
tid | int | 11 | N | 帖子编号(主键) |
|
title | varbinary | 60 | N | 标题 |
|
status | int | 2 | N | 状态(0:未锁定,1:锁定) |
|
top_level | int | 2 | N | 置顶等级(0,1:题目置顶,2:分区置顶,3:总置顶) |
|
cid | int | 11 | Y | 竞赛编号 |
|
pid | int | 11 | N | 竞赛中题目编号 |
|
varchar | 20 | N | 作者id |
|
用户表 | |||||
字段名 | 类型 | 长度 | 是否允许为空 | 备注 | 我们的改动 |
user_id | varchar | 20 | N | 用户id(主键) |
|
| varchar | 100 | Y | 用户E-mail |
|
submit | int | 11 | Y | 用户提交次数 |
|
solved | int | 11 | Y | 成功次数 |
|
defunct | char | 1 | N | 是否屏蔽(Y/N) |
|
ip | varchar | 20 | N | 用户注册ip | 删除 |
accesstime | datetime |
| Y | 用户注册时间 |
|
volume | int | 11 | N | 上次用户浏览第几页 | 删除 |
language | int | 11 | N | 语言 | 状态压缩使用 |
password | varchar | 32 | Y | 密码(加密) |
|
reg_time | datetime |
| Y | 用户注册时间 |
|
nick | varchar | 100 | N | 昵称 |
|
school | varchar | 100 | N | 用户所在学校 |
|
grade | smallint | 5 | N | 入学年份 | 新增 |
major | varchar | 50 | N | 专业 | 新增 |
class | smallint | 5 | N | 班级 | 新增 |
Custominput(已删除) | 用于IDE | |||
字段名 | 类型 | 长度 | 是否允许为空 | 备注 |
solution_id | int | 11 | N | 用户id(主键) |
Input_text | text |
|
| 输入测试数据 |
admin | 管理员表 | |||
字段名 | 类型 | 长度 | 是否允许为空 | 备注 |
admin_id | int | 11 | N | 管理员id(主键) |
admin_name | varchar | 20 | N |
|
admin_pwd | varchar | 32 | N |
|