208 lines
10 KiB
SQL
208 lines
10 KiB
SQL
-- ==========================================
|
||
-- 基于字典表的学院专业管理方案
|
||
-- 版本:V1.0.0
|
||
-- 创建时间:2025-01-22
|
||
-- 说明:利用现有sys_dict_data表管理学院和专业信息
|
||
-- 优势:快速实现,无需修改现有表结构
|
||
-- 劣势:功能有限,不支持复杂的业务逻辑
|
||
-- ==========================================
|
||
|
||
SET NAMES utf8mb4;
|
||
SET FOREIGN_KEY_CHECKS = 0;
|
||
|
||
-- ===========================================
|
||
-- 1. 创建学院字典类型
|
||
-- ===========================================
|
||
INSERT INTO `sys_dict_type` (
|
||
`dict_id`, `tenant_id`, `dict_name`, `dict_type`, `status`, `remark`,
|
||
`create_by`, `create_time`, `update_by`, `update_time`
|
||
) VALUES (
|
||
1001, '000000', '学院信息', 'xg_college', '0', '学院代码和名称字典',
|
||
1, NOW(), 1, NOW()
|
||
) ON DUPLICATE KEY UPDATE dict_name = VALUES(dict_name);
|
||
|
||
-- ===========================================
|
||
-- 2. 创建专业字典类型
|
||
-- ===========================================
|
||
INSERT INTO `sys_dict_type` (
|
||
`dict_id`, `tenant_id`, `dict_name`, `dict_type`, `status`, `remark`,
|
||
`create_by`, `create_time`, `update_by`, `update_time`
|
||
) VALUES (
|
||
1002, '000000', '专业信息', 'xg_major', '0', '专业代码和名称字典',
|
||
1, NOW(), 1, NOW()
|
||
) ON DUPLICATE KEY UPDATE dict_name = VALUES(dict_name);
|
||
|
||
-- ===========================================
|
||
-- 3. 插入学院字典数据
|
||
-- ===========================================
|
||
INSERT INTO `sys_dict_data` (
|
||
`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`,
|
||
`css_class`, `list_class`, `is_default`, `status`, `remark`,
|
||
`create_by`, `create_time`, `update_by`, `update_time`
|
||
) VALUES
|
||
-- 学院数据
|
||
(2001, '000000', 1, '计算机科学与技术学院', 'CS', 'xg_college', '', 'primary', 'N', '0', '计算机科学与技术学院', 1, NOW(), 1, NOW()),
|
||
(2002, '000000', 2, '电子信息工程学院', 'EE', 'xg_college', '', 'success', 'N', '0', '电子信息工程学院', 1, NOW(), 1, NOW()),
|
||
(2003, '000000', 3, '机械工程学院', 'ME', 'xg_college', '', 'info', 'N', '0', '机械工程学院', 1, NOW(), 1, NOW()),
|
||
(2004, '000000', 4, '经济管理学院', 'EC', 'xg_college', '', 'warning', 'N', '0', '经济管理学院', 1, NOW(), 1, NOW()),
|
||
(2005, '000000', 5, '文理学院', 'LA', 'xg_college', '', 'danger', 'N', '0', '文理学院', 1, NOW(), 1, NOW())
|
||
ON DUPLICATE KEY UPDATE
|
||
dict_label = VALUES(dict_label),
|
||
dict_sort = VALUES(dict_sort),
|
||
update_time = VALUES(update_time);
|
||
|
||
-- ===========================================
|
||
-- 4. 插入专业字典数据
|
||
-- ===========================================
|
||
INSERT INTO `sys_dict_data` (
|
||
`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`,
|
||
`css_class`, `list_class`, `is_default`, `status`, `remark`,
|
||
`create_by`, `create_time`, `update_by`, `update_time`
|
||
) VALUES
|
||
-- 计算机科学与技术学院专业
|
||
(3001, '000000', 1, '计算机科学与技术', 'CS001', 'xg_major', '', 'primary', 'N', '0', '计算机科学与技术学院-计算机科学与技术专业', 1, NOW(), 1, NOW()),
|
||
(3002, '000000', 2, '软件工程', 'CS002', 'xg_major', '', 'primary', 'N', '0', '计算机科学与技术学院-软件工程专业', 1, NOW(), 1, NOW()),
|
||
(3003, '000000', 3, '网络工程', 'CS003', 'xg_major', '', 'primary', 'N', '0', '计算机科学与技术学院-网络工程专业', 1, NOW(), 1, NOW()),
|
||
|
||
-- 电子信息工程学院专业
|
||
(3004, '000000', 4, '电子信息工程', 'EE001', 'xg_major', '', 'success', 'N', '0', '电子信息工程学院-电子信息工程专业', 1, NOW(), 1, NOW()),
|
||
(3005, '000000', 5, '通信工程', 'EE002', 'xg_major', '', 'success', 'N', '0', '电子信息工程学院-通信工程专业', 1, NOW(), 1, NOW()),
|
||
(3006, '000000', 6, '自动化', 'EE003', 'xg_major', '', 'success', 'N', '0', '电子信息工程学院-自动化专业', 1, NOW(), 1, NOW()),
|
||
|
||
-- 机械工程学院专业
|
||
(3007, '000000', 7, '机械设计制造及其自动化', 'ME001', 'xg_major', '', 'info', 'N', '0', '机械工程学院-机械设计制造及其自动化专业', 1, NOW(), 1, NOW()),
|
||
(3008, '000000', 8, '机械电子工程', 'ME002', 'xg_major', '', 'info', 'N', '0', '机械工程学院-机械电子工程专业', 1, NOW(), 1, NOW()),
|
||
|
||
-- 经济管理学院专业
|
||
(3009, '000000', 9, '工商管理', 'EC001', 'xg_major', '', 'warning', 'N', '0', '经济管理学院-工商管理专业', 1, NOW(), 1, NOW()),
|
||
(3010, '000000', 10, '会计学', 'EC002', 'xg_major', '', 'warning', 'N', '0', '经济管理学院-会计学专业', 1, NOW(), 1, NOW()),
|
||
|
||
-- 文理学院专业
|
||
(3011, '000000', 11, '汉语言文学', 'LA001', 'xg_major', '', 'danger', 'N', '0', '文理学院-汉语言文学专业', 1, NOW(), 1, NOW()),
|
||
(3012, '000000', 12, '英语', 'LA002', 'xg_major', '', 'danger', 'N', '0', '文理学院-英语专业', 1, NOW(), 1, NOW())
|
||
ON DUPLICATE KEY UPDATE
|
||
dict_label = VALUES(dict_label),
|
||
dict_sort = VALUES(dict_sort),
|
||
update_time = VALUES(update_time);
|
||
|
||
-- ===========================================
|
||
-- 5. 创建学院专业关联扩展字典
|
||
-- ===========================================
|
||
INSERT INTO `sys_dict_type` (
|
||
`dict_id`, `tenant_id`, `dict_name`, `dict_type`, `status`, `remark`,
|
||
`create_by`, `create_time`, `update_by`, `update_time`
|
||
) VALUES (
|
||
1003, '000000', '学院专业关联', 'xg_college_major', '0', '学院和专业的关联关系',
|
||
1, NOW(), 1, NOW()
|
||
) ON DUPLICATE KEY UPDATE dict_name = VALUES(dict_name);
|
||
|
||
-- 插入学院专业关联数据(格式:学院代码-专业代码)
|
||
INSERT INTO `sys_dict_data` (
|
||
`dict_code`, `tenant_id`, `dict_sort`, `dict_label`, `dict_value`, `dict_type`,
|
||
`css_class`, `list_class`, `is_default`, `status`, `remark`,
|
||
`create_by`, `create_time`, `update_by`, `update_time`
|
||
) VALUES
|
||
(4001, '000000', 1, 'CS-CS001', 'CS-CS001', 'xg_college_major', '', 'primary', 'N', '0', '计算机科学与技术学院-计算机科学与技术', 1, NOW(), 1, NOW()),
|
||
(4002, '000000', 2, 'CS-CS002', 'CS-CS002', 'xg_college_major', '', 'primary', 'N', '0', '计算机科学与技术学院-软件工程', 1, NOW(), 1, NOW()),
|
||
(4003, '000000', 3, 'CS-CS003', 'CS-CS003', 'xg_college_major', '', 'primary', 'N', '0', '计算机科学与技术学院-网络工程', 1, NOW(), 1, NOW()),
|
||
(4004, '000000', 4, 'EE-EE001', 'EE-EE001', 'xg_college_major', '', 'success', 'N', '0', '电子信息工程学院-电子信息工程', 1, NOW(), 1, NOW()),
|
||
(4005, '000000', 5, 'EE-EE002', 'EE-EE002', 'xg_college_major', '', 'success', 'N', '0', '电子信息工程学院-通信工程', 1, NOW(), 1, NOW()),
|
||
(4006, '000000', 6, 'EE-EE003', 'EE-EE003', 'xg_college_major', '', 'success', 'N', '0', '电子信息工程学院-自动化', 1, NOW(), 1, NOW()),
|
||
(4007, '000000', 7, 'ME-ME001', 'ME-ME001', 'xg_college_major', '', 'info', 'N', '0', '机械工程学院-机械设计制造及其自动化', 1, NOW(), 1, NOW()),
|
||
(4008, '000000', 8, 'ME-ME002', 'ME-ME002', 'xg_college_major', '', 'info', 'N', '0', '机械工程学院-机械电子工程', 1, NOW(), 1, NOW()),
|
||
(4009, '000000', 9, 'EC-EC001', 'EC-EC001', 'xg_college_major', '', 'warning', 'N', '0', '经济管理学院-工商管理', 1, NOW(), 1, NOW()),
|
||
(4010, '000000', 10, 'EC-EC002', 'EC-EC002', 'xg_college_major', '', 'warning', 'N', '0', '经济管理学院-会计学', 1, NOW(), 1, NOW()),
|
||
(4011, '000000', 11, 'LA-LA001', 'LA-LA001', 'xg_college_major', '', 'danger', 'N', '0', '文理学院-汉语言文学', 1, NOW(), 1, NOW()),
|
||
(4012, '000000', 12, 'LA-LA002', 'LA-LA002', 'xg_college_major', '', 'danger', 'N', '0', '文理学院-英语', 1, NOW(), 1, NOW())
|
||
ON DUPLICATE KEY UPDATE
|
||
dict_label = VALUES(dict_label),
|
||
dict_sort = VALUES(dict_sort),
|
||
update_time = VALUES(update_time);
|
||
|
||
-- ===========================================
|
||
-- 6. 创建查询视图(兼容现有系统)
|
||
-- ===========================================
|
||
|
||
-- 学院选项查询视图
|
||
CREATE OR REPLACE VIEW v_dict_college_options AS
|
||
SELECT
|
||
dict_value as value,
|
||
dict_label as label,
|
||
dict_sort as sort_order,
|
||
status,
|
||
remark
|
||
FROM sys_dict_data
|
||
WHERE dict_type = 'xg_college' AND status = '0'
|
||
ORDER BY dict_sort;
|
||
|
||
-- 专业选项查询视图
|
||
CREATE OR REPLACE VIEW v_dict_major_options AS
|
||
SELECT
|
||
dict_value as value,
|
||
dict_label as label,
|
||
dict_sort as sort_order,
|
||
status,
|
||
remark
|
||
FROM sys_dict_data
|
||
WHERE dict_type = 'xg_major' AND status = '0'
|
||
ORDER BY dict_sort;
|
||
|
||
-- 学院专业关联查询视图
|
||
CREATE OR REPLACE VIEW v_dict_college_major_relation AS
|
||
SELECT
|
||
SUBSTRING_INDEX(dict_value, '-', 1) as college_code,
|
||
SUBSTRING_INDEX(dict_value, '-', -1) as major_code,
|
||
c.dict_label as college_name,
|
||
m.dict_label as major_name,
|
||
cm.dict_sort as sort_order
|
||
FROM sys_dict_data cm
|
||
LEFT JOIN sys_dict_data c ON c.dict_value = SUBSTRING_INDEX(cm.dict_value, '-', 1) AND c.dict_type = 'xg_college'
|
||
LEFT JOIN sys_dict_data m ON m.dict_value = SUBSTRING_INDEX(cm.dict_value, '-', -1) AND m.dict_type = 'xg_major'
|
||
WHERE cm.dict_type = 'xg_college_major' AND cm.status = '0'
|
||
ORDER BY cm.dict_sort;
|
||
|
||
-- 恢复外键检查
|
||
SET FOREIGN_KEY_CHECKS = 1;
|
||
|
||
-- ===========================================
|
||
-- 7. 使用示例查询
|
||
-- ===========================================
|
||
|
||
-- 查询所有学院
|
||
-- SELECT * FROM v_dict_college_options;
|
||
|
||
-- 查询所有专业
|
||
-- SELECT * FROM v_dict_major_options;
|
||
|
||
-- 查询学院专业关联关系
|
||
-- SELECT * FROM v_dict_college_major_relation;
|
||
|
||
-- 根据学院代码查询专业
|
||
-- SELECT major_code, major_name FROM v_dict_college_major_relation WHERE college_code = 'CS';
|
||
|
||
-- 根据专业代码查询学院
|
||
-- SELECT college_code, college_name FROM v_dict_college_major_relation WHERE major_code = 'CS001';
|
||
|
||
-- 说明文档
|
||
-- 本方案基于现有的sys_dict_data表实现学院和专业管理,具有以下特点:
|
||
--
|
||
-- 优势:
|
||
-- 1. 快速实现:无需修改现有表结构,利用现有字典系统
|
||
-- 2. 兼容性好:与现有系统完全兼容
|
||
-- 3. 管理便捷:可通过系统字典管理界面进行维护
|
||
-- 4. 查询简单:提供了便捷的查询视图
|
||
--
|
||
-- 劣势:
|
||
-- 1. 功能有限:无法存储复杂的业务属性
|
||
-- 2. 扩展性差:不支持层级结构和复杂关联
|
||
-- 3. 性能一般:大量数据时查询性能较差
|
||
-- 4. 维护困难:关联关系需要手动维护
|
||
--
|
||
-- 适用场景:
|
||
-- 1. 快速原型开发
|
||
-- 2. 简单的学院专业管理需求
|
||
-- 3. 现有系统的临时解决方案
|
||
-- 4. 数据量不大的场景
|
||
--
|
||
-- 建议:
|
||
-- 如果业务需求复杂,建议采用独立表方案(19-college-major-tables.sql) |