v2.1更新
This commit is contained in:
31
sql/upgrades/v1.7.sql
Normal file
31
sql/upgrades/v1.7.sql
Normal file
@@ -0,0 +1,31 @@
|
||||
-- ===========================================
|
||||
-- 班级操行分管理系统 - 升级至 v1.7
|
||||
-- 字符集: utf8mb4
|
||||
--
|
||||
-- 说明: 此脚本用于在已有数据库中创建版本管理系统。
|
||||
-- 适用于从 v1.7 之前的版本升级。
|
||||
--
|
||||
-- 变更内容:
|
||||
-- 1. 创建 system_settings 表(用于存储版本号等系统配置)
|
||||
-- 2. 插入初始版本号 1.7
|
||||
--
|
||||
-- 兼容性: 使用 IF NOT EXISTS 实现幂等,phpMyAdmin 可直接执行
|
||||
-- ===========================================
|
||||
|
||||
-- ===========================================
|
||||
-- 升级步骤 1: 创建 system_settings 表
|
||||
-- ===========================================
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `system_settings` (
|
||||
`setting_key` VARCHAR(50) PRIMARY KEY,
|
||||
`setting_value` VARCHAR(255) NOT NULL,
|
||||
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
-- ===========================================
|
||||
-- 升级步骤 2: 插入初始版本号
|
||||
-- ===========================================
|
||||
|
||||
INSERT INTO `system_settings` (`setting_key`, `setting_value`)
|
||||
VALUES ('db_version', '1.7')
|
||||
ON DUPLICATE KEY UPDATE `setting_value` = '1.7';
|
||||
131
sql/upgrades/v1.8.sql
Normal file
131
sql/upgrades/v1.8.sql
Normal file
@@ -0,0 +1,131 @@
|
||||
-- ===========================================
|
||||
-- 班级操行分管理系统 - v1.7 → v1.8 升级脚本
|
||||
-- 字符集: utf8mb4
|
||||
--
|
||||
-- 变更内容:
|
||||
-- 1. conduct_records 表添加 related_type 列
|
||||
-- 2. conduct_records 表添加 semester_id 列 + 外键
|
||||
-- 3. attendance_records 表添加 semester_id 列 + 外键
|
||||
--
|
||||
-- 兼容性: 使用存储过程实现幂等,phpMyAdmin 可直接执行
|
||||
-- ===========================================
|
||||
|
||||
-- ===========================================
|
||||
-- 升级步骤 1: conduct_records 添加 related_type 列
|
||||
-- ===========================================
|
||||
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE `upgrade_step`()
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'conduct_records'
|
||||
AND COLUMN_NAME = 'related_type'
|
||||
) THEN
|
||||
ALTER TABLE `conduct_records`
|
||||
ADD COLUMN `related_type` ENUM('manual', 'homework', 'attendance') DEFAULT 'manual'
|
||||
AFTER `recorder_name`;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
CALL `upgrade_step`();
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
|
||||
-- ===========================================
|
||||
-- 升级步骤 2: conduct_records 添加 semester_id 列
|
||||
-- ===========================================
|
||||
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE `upgrade_step`()
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'conduct_records'
|
||||
AND COLUMN_NAME = 'semester_id'
|
||||
) THEN
|
||||
ALTER TABLE `conduct_records`
|
||||
ADD COLUMN `semester_id` INT DEFAULT NULL COMMENT '所属学期ID'
|
||||
AFTER `revoked_at`;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
CALL `upgrade_step`();
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
|
||||
-- ===========================================
|
||||
-- 升级步骤 3: conduct_records 添加 semester_id 外键
|
||||
-- ===========================================
|
||||
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE `upgrade_step`()
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'conduct_records'
|
||||
AND COLUMN_NAME = 'semester_id'
|
||||
AND REFERENCED_TABLE_NAME IS NOT NULL
|
||||
) THEN
|
||||
ALTER TABLE `conduct_records`
|
||||
ADD FOREIGN KEY (`semester_id`) REFERENCES `semesters`(`semester_id`) ON DELETE SET NULL;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
CALL `upgrade_step`();
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
|
||||
-- ===========================================
|
||||
-- 升级步骤 4: attendance_records 添加 semester_id 列
|
||||
-- ===========================================
|
||||
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE `upgrade_step`()
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'attendance_records'
|
||||
AND COLUMN_NAME = 'semester_id'
|
||||
) THEN
|
||||
ALTER TABLE `attendance_records`
|
||||
ADD COLUMN `semester_id` INT DEFAULT NULL COMMENT '所属学期ID'
|
||||
AFTER `deduction_record_id`;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
CALL `upgrade_step`();
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
|
||||
-- ===========================================
|
||||
-- 升级步骤 5: attendance_records 添加 semester_id 外键
|
||||
-- ===========================================
|
||||
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE `upgrade_step`()
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'attendance_records'
|
||||
AND COLUMN_NAME = 'semester_id'
|
||||
AND REFERENCED_TABLE_NAME IS NOT NULL
|
||||
) THEN
|
||||
ALTER TABLE `attendance_records`
|
||||
ADD FOREIGN KEY (`semester_id`) REFERENCES `semesters`(`semester_id`) ON DELETE SET NULL;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
CALL `upgrade_step`();
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
6
sql/upgrades/v2.0.1.sql
Normal file
6
sql/upgrades/v2.0.1.sql
Normal file
@@ -0,0 +1,6 @@
|
||||
-- ===========================================
|
||||
-- 班级操行分管理系统 - v2.0 → v2.0.1 升级脚本
|
||||
-- 字符集: utf8mb4
|
||||
--
|
||||
-- 说明: v2.0.1 为纯前端修改版本,无数据库 schema 变更。
|
||||
-- ===========================================
|
||||
145
sql/upgrades/v2.0.sql
Normal file
145
sql/upgrades/v2.0.sql
Normal file
@@ -0,0 +1,145 @@
|
||||
-- ===========================================
|
||||
-- 班级操行分管理系统 - v1.8 → v2.0 升级脚本
|
||||
-- 字符集: utf8mb4
|
||||
--
|
||||
-- 变更内容:
|
||||
-- 1. 添加性能索引: conduct_records.semester_id
|
||||
-- 2. 添加性能索引: attendance_records.semester_id
|
||||
-- 3. 添加性能索引: conduct_records.student_id
|
||||
-- 4. 数据迁移: recorder_name 从 username 更新为 real_name
|
||||
-- 5. students 表添加 dormitory_number 列
|
||||
-- 6. students 表添加 points_updated_at 列
|
||||
--
|
||||
-- 兼容性: 使用存储过程实现幂等,phpMyAdmin 可直接执行
|
||||
-- ===========================================
|
||||
|
||||
-- ===========================================
|
||||
-- 升级步骤 1: 添加 conduct_records.semester_id 索引
|
||||
-- ===========================================
|
||||
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE `upgrade_step`()
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT * FROM INFORMATION_SCHEMA.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'conduct_records'
|
||||
AND INDEX_NAME = 'idx_conduct_semester'
|
||||
) THEN
|
||||
CREATE INDEX `idx_conduct_semester` ON `conduct_records`(`semester_id`);
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
CALL `upgrade_step`();
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
|
||||
-- ===========================================
|
||||
-- 升级步骤 2: 添加 attendance_records.semester_id 索引
|
||||
-- ===========================================
|
||||
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE `upgrade_step`()
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT * FROM INFORMATION_SCHEMA.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'attendance_records'
|
||||
AND INDEX_NAME = 'idx_attendance_semester'
|
||||
) THEN
|
||||
CREATE INDEX `idx_attendance_semester` ON `attendance_records`(`semester_id`);
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
CALL `upgrade_step`();
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
|
||||
-- ===========================================
|
||||
-- 升级步骤 3: 添加 conduct_records.student_id 索引
|
||||
-- ===========================================
|
||||
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE `upgrade_step`()
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT * FROM INFORMATION_SCHEMA.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'conduct_records'
|
||||
AND INDEX_NAME = 'idx_conduct_student'
|
||||
) THEN
|
||||
CREATE INDEX `idx_conduct_student` ON `conduct_records`(`student_id`);
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
CALL `upgrade_step`();
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
|
||||
-- ===========================================
|
||||
-- 升级步骤 4: 数据迁移 - recorder_name 从 username 更新为 real_name
|
||||
-- ===========================================
|
||||
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE `upgrade_step`()
|
||||
BEGIN
|
||||
UPDATE `conduct_records` cr
|
||||
INNER JOIN `users` u ON cr.recorder_id = u.user_id
|
||||
SET cr.recorder_name = u.real_name
|
||||
WHERE cr.recorder_name = u.username;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
CALL `upgrade_step`();
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
|
||||
-- ===========================================
|
||||
-- 升级步骤 5: students 表添加 dormitory_number 列
|
||||
-- ===========================================
|
||||
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE `upgrade_step`()
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'students'
|
||||
AND COLUMN_NAME = 'dormitory_number'
|
||||
) THEN
|
||||
ALTER TABLE `students`
|
||||
ADD COLUMN `dormitory_number` VARCHAR(20) DEFAULT NULL COMMENT '宿舍号'
|
||||
AFTER `parent_phone`;
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
CALL `upgrade_step`();
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
|
||||
-- ===========================================
|
||||
-- 升级步骤 6: students 表添加 points_updated_at 列
|
||||
-- ===========================================
|
||||
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
DELIMITER $$
|
||||
CREATE PROCEDURE `upgrade_step`()
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'students'
|
||||
AND COLUMN_NAME = 'points_updated_at'
|
||||
) THEN
|
||||
ALTER TABLE `students`
|
||||
ADD COLUMN `points_updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '分数最后更新时间';
|
||||
END IF;
|
||||
END$$
|
||||
DELIMITER ;
|
||||
|
||||
CALL `upgrade_step`();
|
||||
DROP PROCEDURE IF EXISTS `upgrade_step`;
|
||||
102
sql/upgrades/v2.1.sql
Normal file
102
sql/upgrades/v2.1.sql
Normal file
@@ -0,0 +1,102 @@
|
||||
-- ===========================================
|
||||
-- 班级操行分管理系统 - v2.0.1 → v2.1 升级脚本
|
||||
-- 主要内容:添加缺失的数据库索引,优化查询性能
|
||||
-- ===========================================
|
||||
|
||||
DELIMITER $$
|
||||
|
||||
-- conduct_records 表:添加 student_id + created_at 联合索引(学生端查询历史记录)
|
||||
CREATE PROCEDURE upgrade_add_conduct_student_created_idx()
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'conduct_records'
|
||||
AND INDEX_NAME = 'idx_student_created'
|
||||
) THEN
|
||||
ALTER TABLE `conduct_records` ADD INDEX `idx_student_created` (`student_id`, `created_at`);
|
||||
END IF;
|
||||
END$$
|
||||
|
||||
-- conduct_records 表:添加 recorder_id 索引(班干查询自己记录的)
|
||||
CREATE PROCEDURE upgrade_add_conduct_recorder_idx()
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'conduct_records'
|
||||
AND INDEX_NAME = 'idx_recorder_id'
|
||||
) THEN
|
||||
ALTER TABLE `conduct_records` ADD INDEX `idx_recorder_id` (`recorder_id`);
|
||||
END IF;
|
||||
END$$
|
||||
|
||||
-- attendance_records 表:添加 date 索引(按日期查询考勤记录)
|
||||
CREATE PROCEDURE upgrade_add_attendance_date_idx()
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'attendance_records'
|
||||
AND INDEX_NAME = 'idx_date'
|
||||
) THEN
|
||||
ALTER TABLE `attendance_records` ADD INDEX `idx_date` (`date`);
|
||||
END IF;
|
||||
END$$
|
||||
|
||||
-- login_logs 表:添加 username + created_at 联合索引(查询登录历史)
|
||||
CREATE PROCEDURE upgrade_add_login_username_created_idx()
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'login_logs'
|
||||
AND INDEX_NAME = 'idx_username_created'
|
||||
) THEN
|
||||
ALTER TABLE `login_logs` ADD INDEX `idx_username_created` (`username`, `created_at`);
|
||||
END IF;
|
||||
END$$
|
||||
|
||||
-- operation_logs 表:添加 operator_id + created_at 联合索引(查询操作历史)
|
||||
CREATE PROCEDURE upgrade_add_operation_operator_created_idx()
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'operation_logs'
|
||||
AND INDEX_NAME = 'idx_operator_created'
|
||||
) THEN
|
||||
ALTER TABLE `operation_logs` ADD INDEX `idx_operator_created` (`operator_id`, `created_at`);
|
||||
END IF;
|
||||
END$$
|
||||
|
||||
-- semester_archives 表:添加 semester_id 索引(查询学期归档数据)
|
||||
CREATE PROCEDURE upgrade_add_archive_semester_idx()
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE()
|
||||
AND TABLE_NAME = 'semester_archives'
|
||||
AND INDEX_NAME = 'idx_semester_id'
|
||||
) THEN
|
||||
ALTER TABLE `semester_archives` ADD INDEX `idx_semester_id` (`semester_id`);
|
||||
END IF;
|
||||
END$$
|
||||
|
||||
DELIMITER ;
|
||||
|
||||
-- 执行所有升级存储过程
|
||||
CALL upgrade_add_conduct_student_created_idx();
|
||||
CALL upgrade_add_conduct_recorder_idx();
|
||||
CALL upgrade_add_attendance_date_idx();
|
||||
CALL upgrade_add_login_username_created_idx();
|
||||
CALL upgrade_add_operation_operator_created_idx();
|
||||
CALL upgrade_add_archive_semester_idx();
|
||||
|
||||
-- 清理存储过程
|
||||
DROP PROCEDURE IF EXISTS upgrade_add_conduct_student_created_idx;
|
||||
DROP PROCEDURE IF EXISTS upgrade_add_conduct_recorder_idx;
|
||||
DROP PROCEDURE IF EXISTS upgrade_add_attendance_date_idx;
|
||||
DROP PROCEDURE IF EXISTS upgrade_add_login_username_created_idx;
|
||||
DROP PROCEDURE IF EXISTS upgrade_add_operation_operator_created_idx;
|
||||
DROP PROCEDURE IF EXISTS upgrade_add_archive_semester_idx;
|
||||
Reference in New Issue
Block a user