新增数据库:编制10-10试用集成主数据扩展与教学资源兼容迁移脚本
This commit is contained in:
1 parent
a8e42b32bd
commit
041bcef242
2 files changed
+206
No files matched your search
@@ -0,0 +1,168 @@
|
||||
-- ==============================================================================
|
||||
-- RailwaySystem 数据库 V2 迁移脚本: 011_pilot_20261010_master_data_and_resource.sql
|
||||
-- 适用数据库: KingbaseES V009R003C018 (schema: public)
|
||||
-- 执行目标:
|
||||
-- 1. 补齐学员、教师、教室、实训场地、课程主数据新增扩展字段 (11个物理列)
|
||||
-- 2. 创建统一教学资源表 (train_resource) 及其索引与字典
|
||||
-- 3. 补齐教学资源管理菜单 (sys_menu) 与培训管理员/超级管理员角色授权 (sys_role_menu)
|
||||
-- 事务边界: 全程在显式事务 BEGIN ... COMMIT 中执行
|
||||
-- 幂等保证: 全部 DDL / DML 均具备 IF NOT EXISTS 或 NOT EXISTS 守卫,可安全重复执行
|
||||
-- ==============================================================================
|
||||
|
||||
BEGIN;
|
||||
|
||||
-- =============================================================================
|
||||
-- 步骤 1: 主数据表扩展字段补齐 (11个物理列)
|
||||
-- =============================================================================
|
||||
|
||||
-- 1.1 学员表 train_student 增加 头像 与 岗位级别
|
||||
ALTER TABLE public.train_student ADD COLUMN IF NOT EXISTS avatar VARCHAR(255);
|
||||
ALTER TABLE public.train_student ADD COLUMN IF NOT EXISTS duty_level VARCHAR(64);
|
||||
COMMENT ON COLUMN public.train_student.avatar IS '学员头像图片相对路径';
|
||||
COMMENT ON COLUMN public.train_student.duty_level IS '学员岗位级别';
|
||||
|
||||
-- 1.2 教师表 train_teacher 增加 头像、所属专业、主讲课程、从教时间
|
||||
ALTER TABLE public.train_teacher ADD COLUMN IF NOT EXISTS avatar VARCHAR(255);
|
||||
ALTER TABLE public.train_teacher ADD COLUMN IF NOT EXISTS major VARCHAR(100);
|
||||
ALTER TABLE public.train_teacher ADD COLUMN IF NOT EXISTS courses VARCHAR(255);
|
||||
ALTER TABLE public.train_teacher ADD COLUMN IF NOT EXISTS start_teaching DATE;
|
||||
COMMENT ON COLUMN public.train_teacher.avatar IS '教师头像图片相对路径';
|
||||
COMMENT ON COLUMN public.train_teacher.major IS '所属专业/研究方向';
|
||||
COMMENT ON COLUMN public.train_teacher.courses IS '主讲课程描述';
|
||||
COMMENT ON COLUMN public.train_teacher.start_teaching IS '从教时间/起教日期';
|
||||
|
||||
-- 1.3 教室表 train_classroom_info 增加 多媒体、投影、工位/座位布局
|
||||
ALTER TABLE public.train_classroom_info ADD COLUMN IF NOT EXISTS multimedia SMALLINT DEFAULT 0;
|
||||
ALTER TABLE public.train_classroom_info ADD COLUMN IF NOT EXISTS projector SMALLINT DEFAULT 0;
|
||||
ALTER TABLE public.train_classroom_info ADD COLUMN IF NOT EXISTS seat_arrange VARCHAR(100);
|
||||
COMMENT ON COLUMN public.train_classroom_info.multimedia IS '是否具备多媒体设备 (0:无, 1:有)';
|
||||
COMMENT ON COLUMN public.train_classroom_info.projector IS '是否具备投影仪 (0:无, 1:有)';
|
||||
COMMENT ON COLUMN public.train_classroom_info.seat_arrange IS '座位布局形式';
|
||||
|
||||
-- 1.4 实训场地表 train_training_site 增加 适用专业 与 工位布局
|
||||
ALTER TABLE public.train_training_site ADD COLUMN IF NOT EXISTS major VARCHAR(100);
|
||||
ALTER TABLE public.train_training_site ADD COLUMN IF NOT EXISTS seat_arrange VARCHAR(100);
|
||||
COMMENT ON COLUMN public.train_training_site.major IS '适用专业/实训工种';
|
||||
COMMENT ON COLUMN public.train_training_site.seat_arrange IS '工位布局形式';
|
||||
|
||||
-- 1.5 课程表 train_course 增加 资源ID关联串 (逗号分隔资源ID)
|
||||
ALTER TABLE public.train_course ADD COLUMN IF NOT EXISTS resource_id VARCHAR(500);
|
||||
COMMENT ON COLUMN public.train_course.resource_id IS '关联教学资源ID集合 (逗号分隔)';
|
||||
|
||||
-- =============================================================================
|
||||
-- 步骤 2: 创建统一教学资源表 (train_resource)
|
||||
-- =============================================================================
|
||||
|
||||
CREATE TABLE IF NOT EXISTS public.train_resource (
|
||||
resource_id VARCHAR(32) NOT NULL,
|
||||
resource_name VARCHAR(150) NOT NULL,
|
||||
resource_type SMALLINT NOT NULL,
|
||||
resource_url TEXT NOT NULL,
|
||||
description TEXT,
|
||||
status SMALLINT NOT NULL DEFAULT 1,
|
||||
create_by VARCHAR(64),
|
||||
create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
update_by VARCHAR(64),
|
||||
update_time TIMESTAMP,
|
||||
remark VARCHAR(500),
|
||||
del_flag CHAR(1) NOT NULL DEFAULT '0',
|
||||
CONSTRAINT pk_train_resource PRIMARY KEY (resource_id)
|
||||
);
|
||||
|
||||
COMMENT ON TABLE public.train_resource IS '统一教学资源表 (文档、视频、3D模型、VR资源、外部教学链接、其他)';
|
||||
COMMENT ON COLUMN public.train_resource.resource_id IS '资源唯一ID (32位UUID)';
|
||||
COMMENT ON COLUMN public.train_resource.resource_name IS '资源名称';
|
||||
COMMENT ON COLUMN public.train_resource.resource_type IS '资源类型 (1:文档, 2:视频, 3:3D模型, 4:VR资源, 5:外部教学链接, 6:其他)';
|
||||
COMMENT ON COLUMN public.train_resource.resource_url IS '资源存储地址/在线链接';
|
||||
COMMENT ON COLUMN public.train_resource.description IS '资源描述/使用说明';
|
||||
COMMENT ON COLUMN public.train_resource.status IS '状态 (1:正常, 0:停用)';
|
||||
COMMENT ON COLUMN public.train_resource.del_flag IS '删除标志 (0:存在, 2:删除)';
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_train_resource_type ON public.train_resource (resource_type);
|
||||
CREATE INDEX IF NOT EXISTS idx_train_resource_status ON public.train_resource (status);
|
||||
|
||||
-- =============================================================================
|
||||
-- 步骤 3: 补齐教学资源类型字典 (train_resource_type)
|
||||
-- =============================================================================
|
||||
|
||||
INSERT INTO public.sys_dict_type (dict_id, dict_name, dict_type, status, create_by, create_time, remark)
|
||||
SELECT 105, '教学资源类型', 'train_resource_type', '0', 'admin', CURRENT_TIMESTAMP, '资源载体分类 (1:文档, 2:视频, 3:3D模型, 4:VR资源, 5:外部教学链接, 6:其他)'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM public.sys_dict_type WHERE dict_type = 'train_resource_type');
|
||||
|
||||
INSERT INTO public.sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
|
||||
SELECT 310, 1, '文档', '1', 'train_resource_type', '', 'primary', 'Y', '0', 'admin', CURRENT_TIMESTAMP, 'PDF/Word/PPT等电子课件'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM public.sys_dict_data WHERE dict_type = 'train_resource_type' AND dict_value = '1');
|
||||
|
||||
INSERT INTO public.sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
|
||||
SELECT 311, 2, '视频', '2', 'train_resource_type', '', 'info', 'N', '0', 'admin', CURRENT_TIMESTAMP, 'MP4录播视频'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM public.sys_dict_data WHERE dict_type = 'train_resource_type' AND dict_value = '2');
|
||||
|
||||
INSERT INTO public.sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
|
||||
SELECT 312, 3, '3D模型', '3', 'train_resource_type', '', 'warning', 'N', '0', 'admin', CURRENT_TIMESTAMP, '3D数字化实物机车/工务模型'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM public.sys_dict_data WHERE dict_type = 'train_resource_type' AND dict_value = '3');
|
||||
|
||||
INSERT INTO public.sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
|
||||
SELECT 313, 4, 'VR资源', '4', 'train_resource_type', '', 'success', 'N', '0', 'admin', CURRENT_TIMESTAMP, '虚拟仿真头盔或交互式实训课件'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM public.sys_dict_data WHERE dict_type = 'train_resource_type' AND dict_value = '4');
|
||||
|
||||
INSERT INTO public.sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
|
||||
SELECT 314, 5, '外部教学链接', '5', 'train_resource_type', '', 'danger', 'N', '0', 'admin', CURRENT_TIMESTAMP, '第三方外部实训/考试网址URL'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM public.sys_dict_data WHERE dict_type = 'train_resource_type' AND dict_value = '5');
|
||||
|
||||
INSERT INTO public.sys_dict_data (dict_code, dict_sort, dict_label, dict_value, dict_type, css_class, list_class, is_default, status, create_by, create_time, remark)
|
||||
SELECT 315, 6, '其他', '6', 'train_resource_type', '', 'default', 'N', '0', 'admin', CURRENT_TIMESTAMP, '其他类型教学资料'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM public.sys_dict_data WHERE dict_type = 'train_resource_type' AND dict_value = '6');
|
||||
|
||||
-- =============================================================================
|
||||
-- 步骤 4: 补齐教学资源管理菜单与按钮权限 (挂载在课程管理 parent_id = 2162 下)
|
||||
-- =============================================================================
|
||||
|
||||
-- 4.1 教学资源菜单 (menu_id = 2165)
|
||||
INSERT INTO public.sys_menu
|
||||
(menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
|
||||
SELECT 2165, '教学资源', 2162, 3, 'resource', 'train/resource/index', '', '1', '0', 'C', '0', '0', 'train:resource:list', 'documentation', 'admin', CURRENT_TIMESTAMP, '教学资源管理菜单'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM public.sys_menu WHERE menu_id = 2165 OR path = 'resource');
|
||||
|
||||
-- 4.2 教学资源查询按钮权限 (menu_id = 2271)
|
||||
INSERT INTO public.sys_menu
|
||||
(menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
|
||||
SELECT 2271, '教学资源查询', 2165, 1, '#', '', '', 1, 0, 'F', '0', '0', 'train:resource:list', '#', 'admin', CURRENT_TIMESTAMP, '教学资源查询'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM public.sys_menu WHERE menu_id = 2271 OR perms = 'train:resource:list');
|
||||
|
||||
-- 4.3 教学资源编辑按钮权限 (menu_id = 2272)
|
||||
INSERT INTO public.sys_menu
|
||||
(menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark)
|
||||
SELECT 2272, '教学资源编辑', 2165, 2, '#', '', '', 1, 0, 'F', '0', '0', 'train:resource:edit', '#', 'admin', CURRENT_TIMESTAMP, '教学资源新增/修改/删除'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM public.sys_menu WHERE menu_id = 2272 OR perms = 'train:resource:edit');
|
||||
|
||||
-- =============================================================================
|
||||
-- 步骤 5: 角色授权 (培训管理员 role_id = 3 与 超级管理员 role_id = 1)
|
||||
-- =============================================================================
|
||||
|
||||
-- 培训管理员授权教学资源菜单与按钮
|
||||
INSERT INTO public.sys_role_menu (role_id, menu_id)
|
||||
SELECT 3, 2165
|
||||
WHERE NOT EXISTS (SELECT 1 FROM public.sys_role_menu WHERE role_id = 3 AND menu_id = 2165);
|
||||
|
||||
INSERT INTO public.sys_role_menu (role_id, menu_id)
|
||||
SELECT 3, 2271
|
||||
WHERE NOT EXISTS (SELECT 1 FROM public.sys_role_menu WHERE role_id = 3 AND menu_id = 2271);
|
||||
|
||||
INSERT INTO public.sys_role_menu (role_id, menu_id)
|
||||
SELECT 3, 2272
|
||||
WHERE NOT EXISTS (SELECT 1 FROM public.sys_role_menu WHERE role_id = 3 AND menu_id = 2272);
|
||||
|
||||
-- 超级管理员授权
|
||||
INSERT INTO public.sys_role_menu (role_id, menu_id)
|
||||
SELECT 1, 2165
|
||||
WHERE NOT EXISTS (SELECT 1 FROM public.sys_role_menu WHERE role_id = 1 AND menu_id = 2165);
|
||||
|
||||
INSERT INTO public.sys_role_menu (role_id, menu_id)
|
||||
SELECT 1, 2271
|
||||
WHERE NOT EXISTS (SELECT 1 FROM public.sys_role_menu WHERE role_id = 1 AND menu_id = 2271);
|
||||
|
||||
INSERT INTO public.sys_role_menu (role_id, menu_id)
|
||||
SELECT 1, 2272
|
||||
WHERE NOT EXISTS (SELECT 1 FROM public.sys_role_menu WHERE role_id = 1 AND menu_id = 2272);
|
||||
|
||||
COMMIT;
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
-- ==============================================================================
|
||||
-- RailwaySystem 数据库 V2 回滚脚本: 011_pilot_20261010_master_data_and_resource_rollback.sql
|
||||
-- 适用数据库: KingbaseES V009R003C018 (schema: public)
|
||||
-- 执行目标: 回滚 011_pilot_20261010_master_data_and_resource.sql 的变更
|
||||
-- ==============================================================================
|
||||
|
||||
BEGIN;
|
||||
|
||||
-- 1. 回滚角色菜单权限
|
||||
DELETE FROM public.sys_role_menu WHERE menu_id IN (2165, 2271, 2272);
|
||||
DELETE FROM public.sys_menu WHERE menu_id IN (2165, 2271, 2272);
|
||||
|
||||
-- 2. 回滚字典
|
||||
DELETE FROM public.sys_dict_data WHERE dict_type = 'train_resource_type';
|
||||
DELETE FROM public.sys_dict_type WHERE dict_type = 'train_resource_type';
|
||||
|
||||
-- 3. 删除教学资源表及索引
|
||||
DROP TABLE IF EXISTS public.train_resource CASCADE;
|
||||
|
||||
-- 4. 删除主数据扩展列
|
||||
ALTER TABLE public.train_student DROP COLUMN IF EXISTS avatar;
|
||||
ALTER TABLE public.train_student DROP COLUMN IF EXISTS duty_level;
|
||||
|
||||
ALTER TABLE public.train_teacher DROP COLUMN IF EXISTS avatar;
|
||||
ALTER TABLE public.train_teacher DROP COLUMN IF EXISTS major;
|
||||
ALTER TABLE public.train_teacher DROP COLUMN IF EXISTS courses;
|
||||
ALTER TABLE public.train_teacher DROP COLUMN IF EXISTS start_teaching;
|
||||
|
||||
ALTER TABLE public.train_classroom_info DROP COLUMN IF EXISTS multimedia;
|
||||
ALTER TABLE public.train_classroom_info DROP COLUMN IF EXISTS projector;
|
||||
ALTER TABLE public.train_classroom_info DROP COLUMN IF EXISTS seat_arrange;
|
||||
|
||||
ALTER TABLE public.train_training_site DROP COLUMN IF EXISTS major;
|
||||
ALTER TABLE public.train_training_site DROP COLUMN IF EXISTS seat_arrange;
|
||||
|
||||
ALTER TABLE public.train_course DROP COLUMN IF EXISTS resource_id;
|
||||
|
||||
COMMIT;
|
||||
Reference in new issue
Block a user