334 lines
17 KiB
SQL
334 lines
17 KiB
SQL
-- ==========================================
|
||
-- 学院和专业管理表结构设计
|
||
-- 版本:V1.0.0
|
||
-- 创建时间:2025-01-22
|
||
-- 说明:补充缺失的学院表和专业表,完善数据模型
|
||
-- 特性:雪花ID、逻辑删除、多租户、完整字段覆盖
|
||
-- ==========================================
|
||
|
||
SET NAMES utf8mb4;
|
||
SET FOREIGN_KEY_CHECKS = 0;
|
||
|
||
-- ===========================================
|
||
-- 1. 学院信息表
|
||
-- ===========================================
|
||
DROP TABLE IF EXISTS `xg_college_info`;
|
||
CREATE TABLE `xg_college_info` (
|
||
-- 标准基础字段(必须)
|
||
`id` bigint(20) NOT NULL COMMENT '主键ID(雪花ID)',
|
||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||
|
||
-- 学院基础信息
|
||
`college_code` varchar(20) NOT NULL COMMENT '学院代码',
|
||
`college_name` varchar(100) NOT NULL COMMENT '学院名称',
|
||
`college_name_en` varchar(200) DEFAULT NULL COMMENT '学院英文名称',
|
||
`college_short_name` varchar(50) DEFAULT NULL COMMENT '学院简称',
|
||
`college_type` varchar(20) DEFAULT 'normal' COMMENT '学院类型:normal-普通学院,independent-独立学院,joint-联合学院',
|
||
|
||
-- 学院层级信息
|
||
`parent_id` bigint(20) DEFAULT 0 COMMENT '父学院ID',
|
||
`ancestors` varchar(500) DEFAULT '0' COMMENT '祖级列表',
|
||
`college_level` tinyint(1) DEFAULT 1 COMMENT '学院层级:1-一级学院,2-二级学院,3-系部',
|
||
|
||
-- 学院状态
|
||
`college_status` char(1) DEFAULT '1' COMMENT '学院状态:1-正常,2-停用,3-合并,4-撤销',
|
||
`establish_date` date DEFAULT NULL COMMENT '成立日期',
|
||
`revoke_date` date DEFAULT NULL COMMENT '撤销日期',
|
||
|
||
-- 联系信息
|
||
`contact_person` varchar(50) DEFAULT NULL COMMENT '联系人',
|
||
`contact_phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
|
||
`contact_email` varchar(100) DEFAULT NULL COMMENT '联系邮箱',
|
||
`office_location` varchar(200) DEFAULT NULL COMMENT '办公地点',
|
||
`website` varchar(200) DEFAULT NULL COMMENT '学院网站',
|
||
|
||
-- 管理信息
|
||
`dean_id` bigint(20) DEFAULT NULL COMMENT '院长ID',
|
||
`dean_name` varchar(50) DEFAULT NULL COMMENT '院长姓名',
|
||
`vice_dean_ids` text DEFAULT NULL COMMENT '副院长ID列表(JSON格式)',
|
||
`secretary_id` bigint(20) DEFAULT NULL COMMENT '党委书记ID',
|
||
`secretary_name` varchar(50) DEFAULT NULL COMMENT '党委书记姓名',
|
||
|
||
-- 统计信息
|
||
`student_count` int(11) DEFAULT 0 COMMENT '学生总数',
|
||
`teacher_count` int(11) DEFAULT 0 COMMENT '教师总数',
|
||
`major_count` int(11) DEFAULT 0 COMMENT '专业总数',
|
||
`class_count` int(11) DEFAULT 0 COMMENT '班级总数',
|
||
|
||
-- 描述信息
|
||
`college_description` text DEFAULT NULL COMMENT '学院简介',
|
||
`college_features` text DEFAULT NULL COMMENT '学院特色',
|
||
`development_history` text DEFAULT NULL COMMENT '发展历史',
|
||
|
||
-- 排序和其他
|
||
`sort_order` int(11) DEFAULT 0 COMMENT '排序顺序',
|
||
`is_key_college` tinyint(1) DEFAULT 0 COMMENT '是否重点学院:0-否,1-是',
|
||
|
||
-- 扩展字段
|
||
`ext_field1` varchar(200) DEFAULT NULL COMMENT '扩展字段1',
|
||
`ext_field2` varchar(200) DEFAULT NULL COMMENT '扩展字段2',
|
||
`ext_field3` varchar(200) DEFAULT NULL COMMENT '扩展字段3',
|
||
|
||
-- 备注字段
|
||
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
|
||
|
||
-- 主键和索引
|
||
PRIMARY KEY (`id`) USING BTREE,
|
||
UNIQUE KEY `uk_college_code_tenant` (`college_code`, `tenant_id`, `deleted`),
|
||
KEY `idx_tenant_id` (`tenant_id`),
|
||
KEY `idx_deleted` (`deleted`),
|
||
KEY `idx_college_status` (`college_status`),
|
||
KEY `idx_parent_id` (`parent_id`),
|
||
KEY `idx_college_level` (`college_level`),
|
||
KEY `idx_sort_order` (`sort_order`),
|
||
KEY `idx_dean_id` (`dean_id`),
|
||
KEY `idx_secretary_id` (`secretary_id`),
|
||
KEY `idx_establish_date` (`establish_date`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学院信息表';
|
||
|
||
-- ===========================================
|
||
-- 2. 专业信息表
|
||
-- ===========================================
|
||
DROP TABLE IF EXISTS `xg_major_info`;
|
||
CREATE TABLE `xg_major_info` (
|
||
-- 标准基础字段(必须)
|
||
`id` bigint(20) NOT NULL COMMENT '主键ID(雪花ID)',
|
||
`tenant_id` varchar(20) NOT NULL DEFAULT '000000' COMMENT '租户编号',
|
||
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
|
||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0代表存在 1代表删除)',
|
||
|
||
-- 专业基础信息
|
||
`major_code` varchar(20) NOT NULL COMMENT '专业代码',
|
||
`major_name` varchar(100) NOT NULL COMMENT '专业名称',
|
||
`major_name_en` varchar(200) DEFAULT NULL COMMENT '专业英文名称',
|
||
`major_short_name` varchar(50) DEFAULT NULL COMMENT '专业简称',
|
||
|
||
-- 专业分类
|
||
`major_category` varchar(50) DEFAULT NULL COMMENT '专业大类',
|
||
`major_type` varchar(20) DEFAULT 'undergraduate' COMMENT '专业类型:undergraduate-本科,graduate-研究生,vocational-专科',
|
||
`discipline_code` varchar(20) DEFAULT NULL COMMENT '学科门类代码',
|
||
`discipline_name` varchar(100) DEFAULT NULL COMMENT '学科门类名称',
|
||
|
||
-- 所属学院
|
||
`college_id` bigint(20) NOT NULL COMMENT '所属学院ID',
|
||
`college_code` varchar(20) NOT NULL COMMENT '所属学院代码',
|
||
`college_name` varchar(100) NOT NULL COMMENT '所属学院名称',
|
||
|
||
-- 专业状态
|
||
`major_status` char(1) DEFAULT '1' COMMENT '专业状态:1-正常,2-停招,3-撤销,4-合并',
|
||
`establish_date` date DEFAULT NULL COMMENT '设立日期',
|
||
`first_enrollment_year` int(4) DEFAULT NULL COMMENT '首次招生年份',
|
||
`revoke_date` date DEFAULT NULL COMMENT '撤销日期',
|
||
|
||
-- 培养信息
|
||
`training_type` varchar(20) DEFAULT '全日制' COMMENT '培养方式:全日制、在职、函授、夜大等',
|
||
`degree_type` varchar(20) DEFAULT '本科' COMMENT '学位类型:本科、专科、硕士、博士',
|
||
`school_system` int(2) DEFAULT 4 COMMENT '学制(年)',
|
||
`credit_requirement` int(3) DEFAULT 0 COMMENT '学分要求',
|
||
|
||
-- 招生信息
|
||
`enrollment_plan` int(11) DEFAULT 0 COMMENT '年度招生计划',
|
||
`current_enrollment` int(11) DEFAULT 0 COMMENT '当前在校生数',
|
||
`total_enrollment` int(11) DEFAULT 0 COMMENT '历年累计招生数',
|
||
`graduate_count` int(11) DEFAULT 0 COMMENT '毕业生总数',
|
||
|
||
-- 师资信息
|
||
`teacher_count` int(11) DEFAULT 0 COMMENT '专任教师数',
|
||
`professor_count` int(11) DEFAULT 0 COMMENT '教授数',
|
||
`associate_professor_count` int(11) DEFAULT 0 COMMENT '副教授数',
|
||
`lecturer_count` int(11) DEFAULT 0 COMMENT '讲师数',
|
||
|
||
-- 负责人信息
|
||
`director_id` bigint(20) DEFAULT NULL COMMENT '专业负责人ID',
|
||
`director_name` varchar(50) DEFAULT NULL COMMENT '专业负责人姓名',
|
||
`contact_person` varchar(50) DEFAULT NULL COMMENT '联系人',
|
||
`contact_phone` varchar(20) DEFAULT NULL COMMENT '联系电话',
|
||
`contact_email` varchar(100) DEFAULT NULL COMMENT '联系邮箱',
|
||
|
||
-- 专业特色
|
||
`major_features` text DEFAULT NULL COMMENT '专业特色',
|
||
`training_objectives` text DEFAULT NULL COMMENT '培养目标',
|
||
`core_courses` text DEFAULT NULL COMMENT '核心课程(JSON格式)',
|
||
`practice_bases` text DEFAULT NULL COMMENT '实践基地(JSON格式)',
|
||
|
||
-- 质量认证
|
||
`accreditation_status` varchar(20) DEFAULT NULL COMMENT '认证状态:pending-待认证,passed-已通过,failed-未通过',
|
||
`accreditation_agency` varchar(100) DEFAULT NULL COMMENT '认证机构',
|
||
`accreditation_date` date DEFAULT NULL COMMENT '认证日期',
|
||
`accreditation_valid_until` date DEFAULT NULL COMMENT '认证有效期至',
|
||
|
||
-- 就业信息
|
||
`employment_rate` decimal(5,2) DEFAULT 0.00 COMMENT '就业率(%)',
|
||
`graduate_school_rate` decimal(5,2) DEFAULT 0.00 COMMENT '升学率(%)',
|
||
`salary_average` decimal(10,2) DEFAULT 0.00 COMMENT '平均薪资',
|
||
|
||
-- 排序和标识
|
||
`sort_order` int(11) DEFAULT 0 COMMENT '排序顺序',
|
||
`is_key_major` tinyint(1) DEFAULT 0 COMMENT '是否重点专业:0-否,1-是',
|
||
`is_brand_major` tinyint(1) DEFAULT 0 COMMENT '是否品牌专业:0-否,1-是',
|
||
`is_characteristic_major` tinyint(1) DEFAULT 0 COMMENT '是否特色专业:0-否,1-是',
|
||
|
||
-- 扩展字段
|
||
`ext_field1` varchar(200) DEFAULT NULL COMMENT '扩展字段1',
|
||
`ext_field2` varchar(200) DEFAULT NULL COMMENT '扩展字段2',
|
||
`ext_field3` varchar(200) DEFAULT NULL COMMENT '扩展字段3',
|
||
|
||
-- 备注字段
|
||
`remark` varchar(500) DEFAULT NULL COMMENT '备注信息',
|
||
|
||
-- 主键和索引
|
||
PRIMARY KEY (`id`) USING BTREE,
|
||
UNIQUE KEY `uk_major_code_tenant` (`major_code`, `tenant_id`, `deleted`),
|
||
KEY `idx_tenant_id` (`tenant_id`),
|
||
KEY `idx_deleted` (`deleted`),
|
||
KEY `idx_college_id` (`college_id`),
|
||
KEY `idx_college_code` (`college_code`),
|
||
KEY `idx_major_status` (`major_status`),
|
||
KEY `idx_major_type` (`major_type`),
|
||
KEY `idx_discipline_code` (`discipline_code`),
|
||
KEY `idx_director_id` (`director_id`),
|
||
KEY `idx_sort_order` (`sort_order`),
|
||
KEY `idx_establish_date` (`establish_date`),
|
||
KEY `idx_college_major` (`college_id`, `major_code`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='专业信息表';
|
||
|
||
-- ===========================================
|
||
-- 3. 初始化基础数据
|
||
-- ===========================================
|
||
|
||
-- 插入学院基础数据
|
||
INSERT INTO `xg_college_info` (
|
||
`id`, `tenant_id`, `college_code`, `college_name`, `college_short_name`, `college_type`,
|
||
`college_status`, `establish_date`, `contact_phone`, `office_location`,
|
||
`student_count`, `teacher_count`, `major_count`, `class_count`, `sort_order`,
|
||
`college_description`, `create_by`, `create_time`, `update_by`, `update_time`
|
||
) VALUES
|
||
(1100001, '000000', 'CS', '计算机科学与技术学院', '计算机学院', 'normal', '1', '2000-01-01', '0571-88000001', '教学楼A座', 0, 0, 0, 0, 1, '培养计算机科学与技术专业人才', 1, NOW(), 1, NOW()),
|
||
(1100002, '000000', 'EE', '电子信息工程学院', '电信学院', 'normal', '1', '2000-01-01', '0571-88000002', '教学楼B座', 0, 0, 0, 0, 2, '培养电子信息工程专业人才', 1, NOW(), 1, NOW()),
|
||
(1100003, '000000', 'ME', '机械工程学院', '机械学院', 'normal', '1', '2000-01-01', '0571-88000003', '教学楼C座', 0, 0, 0, 0, 3, '培养机械工程专业人才', 1, NOW(), 1, NOW()),
|
||
(1100004, '000000', 'EC', '经济管理学院', '经管学院', 'normal', '1', '2000-01-01', '0571-88000004', '教学楼D座', 0, 0, 0, 0, 4, '培养经济管理专业人才', 1, NOW(), 1, NOW()),
|
||
(1100005, '000000', 'LA', '文理学院', '文理学院', 'normal', '1', '2000-01-01', '0571-88000005', '教学楼E座', 0, 0, 0, 0, 5, '培养文理科专业人才', 1, NOW(), 1, NOW());
|
||
|
||
-- 插入专业基础数据
|
||
INSERT INTO `xg_major_info` (
|
||
`id`, `tenant_id`, `major_code`, `major_name`, `major_short_name`, `major_category`, `major_type`,
|
||
`college_id`, `college_code`, `college_name`, `major_status`, `establish_date`, `first_enrollment_year`,
|
||
`training_type`, `degree_type`, `school_system`, `enrollment_plan`, `sort_order`,
|
||
`training_objectives`, `create_by`, `create_time`, `update_by`, `update_time`
|
||
) VALUES
|
||
-- 计算机科学与技术学院专业
|
||
(1200001, '000000', 'CS001', '计算机科学与技术', '计算机', '工学', 'undergraduate', 1100001, 'CS', '计算机科学与技术学院', '1', '2000-01-01', 2000, '全日制', '本科', 4, 100, 1, '培养计算机科学与技术专业人才', 1, NOW(), 1, NOW()),
|
||
(1200002, '000000', 'CS002', '软件工程', '软件工程', '工学', 'undergraduate', 1100001, 'CS', '计算机科学与技术学院', '1', '2005-01-01', 2005, '全日制', '本科', 4, 80, 2, '培养软件工程专业人才', 1, NOW(), 1, NOW()),
|
||
(1200003, '000000', 'CS003', '网络工程', '网络工程', '工学', 'undergraduate', 1100001, 'CS', '计算机科学与技术学院', '1', '2008-01-01', 2008, '全日制', '本科', 4, 60, 3, '培养网络工程专业人才', 1, NOW(), 1, NOW()),
|
||
|
||
-- 电子信息工程学院专业
|
||
(1200004, '000000', 'EE001', '电子信息工程', '电信工程', '工学', 'undergraduate', 1100002, 'EE', '电子信息工程学院', '1', '2000-01-01', 2000, '全日制', '本科', 4, 90, 1, '培养电子信息工程专业人才', 1, NOW(), 1, NOW()),
|
||
(1200005, '000000', 'EE002', '通信工程', '通信工程', '工学', 'undergraduate', 1100002, 'EE', '电子信息工程学院', '1', '2002-01-01', 2002, '全日制', '本科', 4, 70, 2, '培养通信工程专业人才', 1, NOW(), 1, NOW()),
|
||
(1200006, '000000', 'EE003', '自动化', '自动化', '工学', 'undergraduate', 1100002, 'EE', '电子信息工程学院', '1', '2003-01-01', 2003, '全日制', '本科', 4, 80, 3, '培养自动化专业人才', 1, NOW(), 1, NOW()),
|
||
|
||
-- 机械工程学院专业
|
||
(1200007, '000000', 'ME001', '机械设计制造及其自动化', '机械设计', '工学', 'undergraduate', 1100003, 'ME', '机械工程学院', '1', '2000-01-01', 2000, '全日制', '本科', 4, 100, 1, '培养机械设计制造专业人才', 1, NOW(), 1, NOW()),
|
||
(1200008, '000000', 'ME002', '机械电子工程', '机电工程', '工学', 'undergraduate', 1100003, 'ME', '机械工程学院', '1', '2004-01-01', 2004, '全日制', '本科', 4, 60, 2, '培养机械电子工程专业人才', 1, NOW(), 1, NOW()),
|
||
|
||
-- 经济管理学院专业
|
||
(1200009, '000000', 'EC001', '工商管理', '工商管理', '管理学', 'undergraduate', 1100004, 'EC', '经济管理学院', '1', '2000-01-01', 2000, '全日制', '本科', 4, 80, 1, '培养工商管理专业人才', 1, NOW(), 1, NOW()),
|
||
(1200010, '000000', 'EC002', '会计学', '会计学', '管理学', 'undergraduate', 1100004, 'EC', '经济管理学院', '1', '2001-01-01', 2001, '全日制', '本科', 4, 90, 2, '培养会计学专业人才', 1, NOW(), 1, NOW()),
|
||
|
||
-- 文理学院专业
|
||
(1200011, '000000', 'LA001', '汉语言文学', '中文', '文学', 'undergraduate', 1100005, 'LA', '文理学院', '1', '2000-01-01', 2000, '全日制', '本科', 4, 50, 1, '培养汉语言文学专业人才', 1, NOW(), 1, NOW()),
|
||
(1200012, '000000', 'LA002', '英语', '英语', '文学', 'undergraduate', 1100005, 'LA', '文理学院', '1', '2000-01-01', 2000, '全日制', '本科', 4, 60, 2, '培养英语专业人才', 1, NOW(), 1, NOW());
|
||
|
||
-- ===========================================
|
||
-- 4. 创建视图(用于兼容现有查询)
|
||
-- ===========================================
|
||
|
||
-- 学院选项视图
|
||
CREATE OR REPLACE VIEW v_college_options AS
|
||
SELECT
|
||
college_code as value,
|
||
college_name as label,
|
||
college_short_name,
|
||
college_status,
|
||
sort_order
|
||
FROM xg_college_info
|
||
WHERE deleted = 0 AND college_status = '1'
|
||
ORDER BY sort_order, college_name;
|
||
|
||
-- 专业选项视图
|
||
CREATE OR REPLACE VIEW v_major_options AS
|
||
SELECT
|
||
m.major_code as value,
|
||
m.major_name as label,
|
||
m.major_short_name,
|
||
m.college_code,
|
||
m.college_name,
|
||
m.major_type,
|
||
m.major_status,
|
||
m.sort_order
|
||
FROM xg_major_info m
|
||
WHERE m.deleted = 0 AND m.major_status = '1'
|
||
ORDER BY m.college_code, m.sort_order, m.major_name;
|
||
|
||
-- 学院专业关联视图
|
||
CREATE OR REPLACE VIEW v_college_major_relation AS
|
||
SELECT
|
||
c.id as college_id,
|
||
c.college_code,
|
||
c.college_name,
|
||
m.id as major_id,
|
||
m.major_code,
|
||
m.major_name,
|
||
m.major_type,
|
||
m.school_system,
|
||
m.enrollment_plan
|
||
FROM xg_college_info c
|
||
LEFT JOIN xg_major_info m ON c.id = m.college_id
|
||
WHERE c.deleted = 0 AND c.college_status = '1'
|
||
AND (m.deleted = 0 AND m.major_status = '1' OR m.id IS NULL)
|
||
ORDER BY c.sort_order, m.sort_order;
|
||
|
||
-- 恢复外键检查
|
||
SET FOREIGN_KEY_CHECKS = 1;
|
||
|
||
-- ===========================================
|
||
-- 5. 创建触发器(自动更新统计信息)
|
||
-- ===========================================
|
||
|
||
-- 专业数量统计触发器
|
||
DELIMITER $$
|
||
CREATE TRIGGER tr_update_college_major_count
|
||
AFTER INSERT ON xg_major_info
|
||
FOR EACH ROW
|
||
BEGIN
|
||
UPDATE xg_college_info
|
||
SET major_count = (
|
||
SELECT COUNT(*)
|
||
FROM xg_major_info
|
||
WHERE college_id = NEW.college_id AND deleted = 0 AND major_status = '1'
|
||
)
|
||
WHERE id = NEW.college_id;
|
||
END$$
|
||
DELIMITER ;
|
||
|
||
-- 说明文档
|
||
-- 本脚本创建了完整的学院和专业管理体系,包括:
|
||
-- 1. 学院信息表:存储学院的详细信息,支持层级结构
|
||
-- 2. 专业信息表:存储专业的详细信息,与学院关联
|
||
-- 3. 基础数据:预置了5个学院和12个专业的示例数据
|
||
-- 4. 查询视图:提供便捷的查询接口,兼容现有系统
|
||
-- 5. 统计触发器:自动维护学院的专业数量统计
|
||
--
|
||
-- 使用方法:
|
||
-- 1. 执行本脚本创建表结构和基础数据
|
||
-- 2. 更新现有的统计查询,使用新的表结构
|
||
-- 3. 逐步迁移现有数据到新的表结构中 |