Files
campus-activity-system/web/docs/init.sql
2026-01-19 23:15:20 +08:00

106 lines
5.7 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- 创建数据库
CREATE DATABASE IF NOT EXISTS `campus_activity`
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;
USE `campus_activity`;
-- 创建用户表
CREATE TABLE `user` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`username` VARCHAR(50) NOT NULL COMMENT '登录用户名',
`password` VARCHAR(255) NOT NULL COMMENT '密码',
`name` VARCHAR(50) NOT NULL COMMENT '真实姓名',
`student_id` VARCHAR(20) DEFAULT NULL COMMENT '学号',
`email` VARCHAR(100) DEFAULT NULL COMMENT '邮箱',
`phone` VARCHAR(20) DEFAULT NULL COMMENT '手机号',
`avatar` VARCHAR(255) DEFAULT NULL COMMENT '头像URL',
`role` TINYINT NOT NULL DEFAULT 0 COMMENT '角色0-学生1-管理员',
`status` TINYINT DEFAULT 1 COMMENT '状态0-禁用1-正常',
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_username` (`username`),
UNIQUE KEY `uk_student_id` (`student_id`),
KEY `idx_role` (`role`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户表';
-- 创建活动表
CREATE TABLE `activity` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '活动ID',
`title` VARCHAR(100) NOT NULL COMMENT '活动名称',
`description` TEXT DEFAULT NULL COMMENT '活动简介',
`cover_image` VARCHAR(255) DEFAULT NULL COMMENT '封面图片',
`start_time` DATETIME NOT NULL COMMENT '开始时间',
`end_time` DATETIME NOT NULL COMMENT '结束时间',
`registration_deadline` DATETIME DEFAULT NULL COMMENT '报名截止时间',
`location` VARCHAR(200) NOT NULL COMMENT '活动地点',
`max_participants` INT NOT NULL COMMENT '报名人数上限',
`current_participants` INT DEFAULT 0 COMMENT '当前报名人数',
`status` TINYINT DEFAULT 0 COMMENT '状态0-未开始1-报名中2-进行中3-已结束',
`category` VARCHAR(50) DEFAULT NULL COMMENT '活动分类',
`admin_id` BIGINT NOT NULL COMMENT '创建者ID',
`qr_code` VARCHAR(255) DEFAULT NULL COMMENT '签到二维码',
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除',
`version` INT DEFAULT 0 COMMENT '乐观锁版本号',
PRIMARY KEY (`id`),
KEY `idx_status` (`status`),
KEY `idx_start_time` (`start_time`),
KEY `idx_admin_id` (`admin_id`),
CONSTRAINT `fk_activity_admin` FOREIGN KEY (`admin_id`) REFERENCES `user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='活动表';
-- 创建报名表
CREATE TABLE `registration` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '报名ID',
`user_id` BIGINT NOT NULL COMMENT '用户ID',
`activity_id` BIGINT NOT NULL COMMENT '活动ID',
`ticket_code` VARCHAR(100) DEFAULT NULL COMMENT '电子票唯一码',
`ticket_pdf_url` VARCHAR(255) DEFAULT NULL COMMENT '电子票PDF地址',
`status` TINYINT DEFAULT 1 COMMENT '状态0-已取消1-已报名2-已签到',
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '报名时间',
`updated_at` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`canceled_at` DATETIME DEFAULT NULL COMMENT '取消时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_user_activity` (`user_id`, `activity_id`),
UNIQUE KEY `uk_ticket_code` (`ticket_code`),
KEY `idx_activity_id` (`activity_id`),
CONSTRAINT `fk_registration_user` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`),
CONSTRAINT `fk_registration_activity` FOREIGN KEY (`activity_id`) REFERENCES `activity` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='报名表';
-- 创建签到表
CREATE TABLE `check_in` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '签到ID',
`registration_id` BIGINT NOT NULL COMMENT '报名ID',
`user_id` BIGINT NOT NULL COMMENT '用户ID',
`activity_id` BIGINT NOT NULL COMMENT '活动ID',
`check_in_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '签到时间',
`check_in_method` TINYINT DEFAULT 0 COMMENT '签到方式0-扫码1-管理员代签',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_registration_id` (`registration_id`),
KEY `idx_activity_id` (`activity_id`),
KEY `idx_user_id` (`user_id`),
CONSTRAINT `fk_checkin_registration` FOREIGN KEY (`registration_id`) REFERENCES `registration` (`id`),
CONSTRAINT `fk_checkin_user` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`),
CONSTRAINT `fk_checkin_activity` FOREIGN KEY (`activity_id`) REFERENCES `activity` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='签到表';
-- 创建评价表
CREATE TABLE `review` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '评价ID',
`user_id` BIGINT NOT NULL COMMENT '用户ID',
`activity_id` BIGINT NOT NULL COMMENT '活动ID',
`rating` TINYINT NOT NULL COMMENT '评分1-5',
`content` TEXT DEFAULT NULL COMMENT '评论内容',
`created_at` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '评价时间',
`updated_at` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_user_activity` (`user_id`, `activity_id`),
KEY `idx_activity_id` (`activity_id`),
CONSTRAINT `fk_review_user` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`),
CONSTRAINT `fk_review_activity` FOREIGN KEY (`activity_id`) REFERENCES `activity` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='评价表';