Files
hzdyjs/docs/设计文档/database/学工管理-宿舍管理/宿舍管理数据库建表脚本.sql
T
2025-08-12 22:16:59 +08:00

274 lines
15 KiB
SQL

-- 宿舍管理数据库建表脚本
-- 来源:docs/业务模块/学工管理-宿舍管理/数据库设计/宿舍管理数据库设计.md
-- 用途:统一存储宿舍管理模块所有相关表的建表SQL,便于维护和执行
-- 维护人:数据库设计团队
-- 日期:2025-01-14
-- 1. 校区信息表
drop table if exists `xg_dorm_campus`;
create table `xg_dorm_campus` (
`id` bigint(20) not null comment '主键ID',
`campus_code` varchar(50) not null comment '校区编码',
`campus_name` varchar(100) not null comment '校区名称',
`campus_description` varchar(500) default null comment '校区描述',
`sort_order` int(11) default '0' comment '排序号',
`deleted` char(1) default '0' comment '删除标志(0代表存在 1代表删除)',
`tenant_id` bigint(20) default '0' comment '租户编号',
`create_by` bigint(20) default null comment '创建者',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_time` datetime default null comment '创建时间',
`update_by` bigint(20) default null comment '更新者',
`update_time` datetime default null comment '更新时间',
`remark` varchar(500) default null comment '备注',
primary key (`id`),
unique key `uk_campus_code` (`campus_code`)
) engine=innodb default charset=utf8mb4 comment='校区信息表';
-- 2. 宿舍区信息表
drop table if exists `xg_dorm_area`;
create table `xg_dorm_area` (
`id` bigint(20) not null comment '主键ID',
`area_code` varchar(50) not null comment '宿舍区编码',
`area_name` varchar(100) not null comment '宿舍区名称',
`campus_id` bigint(20) not null comment '所属校区ID',
`area_description` varchar(500) default null comment '宿舍区描述',
`sort_order` int(11) default '0' comment '排序号',
`deleted` char(1) default '0' comment '删除标志(0代表存在 1代表删除)',
`tenant_id` bigint(20) default '0' comment '租户编号',
`create_by` bigint(20) default null comment '创建者',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_time` datetime default null comment '创建时间',
`update_by` bigint(20) default null comment '更新者',
`update_time` datetime default null comment '更新时间',
`remark` varchar(500) default null comment '备注',
primary key (`id`),
unique key `uk_area_code` (`area_code`),
key `idx_campus_id` (`campus_id`)
) engine=innodb default charset=utf8mb4 comment='宿舍区信息表';
-- 3. 宿舍楼信息表
drop table if exists `xg_dorm_building`;
create table `xg_dorm_building` (
`id` bigint(20) not null comment '主键ID',
`building_code` varchar(50) not null comment '宿舍楼编码',
`building_name` varchar(100) not null comment '宿舍楼名称',
`area_id` bigint(20) not null comment '所属宿舍区ID',
`campus_id` bigint(20) not null comment '所属校区ID',
`floors` int(11) not null default '6' comment '总楼层数',
`building_type` char(1) default '1' comment '宿舍楼类型(1男生楼 2女生楼 3混合楼)',
`building_description` varchar(500) default null comment '宿舍楼描述',
`sort_order` int(11) default '0' comment '排序号',
`deleted` char(1) default '0' comment '删除标志(0代表存在 1代表删除)',
`tenant_id` bigint(20) default '0' comment '租户编号',
`create_by` bigint(20) default null comment '创建者',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_time` datetime default null comment '创建时间',
`update_by` bigint(20) default null comment '更新者',
`update_time` datetime default null comment '更新时间',
`remark` varchar(500) default null comment '备注',
primary key (`id`),
unique key `uk_building_code` (`building_code`),
key `idx_area_id` (`area_id`),
key `idx_campus_id` (`campus_id`)
) engine=innodb default charset=utf8mb4 comment='宿舍楼信息表';
-- 4. 宿舍房间信息表
drop table if exists `xg_dorm_room`;
create table `xg_dorm_room` (
`id` bigint(20) not null comment '主键ID',
`room_code` varchar(50) not null comment '房间编号',
`room_name` varchar(100) not null comment '房间名称',
`building_id` bigint(20) not null comment '所属宿舍楼ID',
`floor_num` int(11) not null comment '楼层',
`room_type` char(1) default '1' comment '房间类型(1标准间 2 单人间 3 套间)',
`actual_beds` int(11) default 4 comment '实际床位数',
`room_area` decimal(10,2) default null comment '房间面积(平方米)',
`room_status` char(1) default '0' comment '房间状态(0可用 1维修中 2停用)',
`deleted` char(1) default '0' comment '删除标志(0代表存在 1代表删除)',
`tenant_id` bigint(20) default '0' comment '租户编号',
`create_by` bigint(20) default null comment '创建者',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_time` datetime default null comment '创建时间',
`update_by` bigint(20) default null comment '更新者',
`update_time` datetime default null comment '更新时间',
`remark` varchar(500) default null comment '备注',
primary key (`id`),
unique key `uk_room_code` (`room_code`),
key `idx_building_id` (`building_id`),
key `idx_floor_num` (`floor_num`)
) engine=innodb default charset=utf8mb4 comment='宿舍房间信息表';
-- 5. 宿舍床位信息表
drop table if exists `xg_dorm_bed`;
create table `xg_dorm_bed` (
`id` bigint(20) not null comment '主键ID',
`bed_code` varchar(50) not null comment '床位编号',
`bed_name` varchar(100) not null comment '床位名称',
`room_id` bigint(20) not null comment '所属房间ID',
`bed_type` char(1) default '1' comment '床位类型(1下铺 2上铺 3中铺 4独立床)',
`bed_status` char(1) default '0' comment '床位状态(0空闲 1已分配 2维修中)',
`deleted` char(1) default '0' comment '删除标志(0代表存在 1代表删除)',
`tenant_id` bigint(20) default '0' 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 '更新时间',
`remark` varchar(500) default null comment '备注',
primary key (`id`),
unique key `uk_bed_code` (`bed_code`),
key `idx_room_id` (`room_id`)
) engine=innodb default charset=utf8mb4 comment='宿舍床位信息表';
-- 6. 床位学生分配关系表
drop table if exists `xg_dorm_bed_student`;
create table `xg_dorm_bed_student` (
`id` bigint(20) not null comment '主键ID',
`college_id` bigint(20) not null comment '分配学院ID',
`major_id` bigint(20) not null comment '分配专业ID',
`class_id` bigint(20) not null comment '分配班级ID',
`student_id` bigint(20) not null comment '分配学生ID',
`bed_id` bigint(20) not null comment '床位ID',
`room_id` bigint(20) not null comment '房间ID',
`building_id` bigint(20) not null comment '宿舍楼ID',
`area_id` bigint(20) not null comment '宿舍区ID',
`campus_id` bigint(20) not null comment '校区ID',
`status` char(1) default '0' comment '状态(0正常 1已退宿)',
`assign_time` datetime not null comment '分配时间',
`checkout_time` datetime default null comment '退宿时间',
`deleted` char(1) default '0' comment '删除标志(0代表存在 1代表删除)',
`tenant_id` bigint(20) default '0' comment '租户编号',
`create_by` bigint(20) default null comment '创建者',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_time` datetime default null comment '创建时间',
`update_by` bigint(20) default null comment '更新者',
`update_time` datetime default null comment '更新时间',
`remark` varchar(500) default null comment '备注',
primary key (`id`),
unique key `uk_student_bed` (`student_id`, `bed_id`),
key `idx_college_id` (`college_id`),
key `idx_student_id` (`student_id`),
key `idx_bed_id` (`bed_id`),
key `idx_room_id` (`room_id`),
key `idx_building_id` (`building_id`),
key `idx_area_id` (`area_id`),
key `idx_campus_id` (`campus_id`),
key `idx_assign_time` (`assign_time`)
) engine=innodb default charset=utf8mb4 comment='床位学生分配关系表';
-- 7. 宿舍管理员信息表
drop table if exists `xg_dorm_manager`;
create table `xg_dorm_manager` (
`id` bigint(20) not null comment '主键ID',
`manager_name` varchar(100) not null comment '管理员姓名',
`manager_type` char(1) not null comment '管理员类型(1全校管理员 2校区管理员 3宿舍区管理员 4宿舍楼管理员)',
`manager_level` int(11) default 1 comment '管理级别(1-5,1为最高)',
`user_id` bigint(20) default null comment '关联用户ID',
`phone` varchar(20) default null comment '联系电话',
`gender` char(1) default '0' comment '性别(0男 1女 2未知)',
`status` char(1) default '0' comment '状态(0正常 1停用)',
`deleted` char(1) default '0' comment '删除标志(0代表存在 1代表删除)',
`tenant_id` bigint(20) default '0' comment '租户编号',
`create_by` bigint(20) default null comment '创建者',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_time` datetime default null comment '创建时间',
`update_by` bigint(20) default null comment '更新者',
`update_time` datetime default null comment '更新时间',
`remark` varchar(500) default null comment '备注',
primary key (`id`),
key `idx_user_id` (`user_id`),
key `idx_manager_type` (`manager_type`)
) engine=innodb default charset=utf8mb4 comment='宿舍管理员信息表';
-- 8. 管理员授权关系表
drop table if exists `xg_dorm_manager_source`;
create table `xg_dorm_manager_source` (
`id` bigint(20) not null comment '主键ID',
`manager_id` bigint(20) not null comment '管理员ID',
`permission_type` char(1) default '1' comment '权限类型(1查看 2编辑 3完全管理)',
`auth_type` char(1) not null comment '授权类型(1全校级 2校区级 3宿舍区级 4楼栋级)',
`auth_source` bigint(20) default null comment '授权来源ID(对应校区ID或宿舍区ID或楼栋ID)',
`status` char(1) default '0' comment '状态(0有效 1已撤销)',
`deleted` char(1) default '0' comment '删除标志(0代表存在 1代表删除)',
`tenant_id` bigint(20) default '0' comment '租户编号',
`create_by` bigint(20) default null comment '创建者',
`create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
`create_time` datetime default null comment '创建时间',
`update_by` bigint(20) default null comment '更新者',
`update_time` datetime default null comment '更新时间',
`remark` varchar(500) default null comment '备注',
primary key (`id`),
key `idx_manager_id` (`manager_id`),
key `idx_auth_source` (`auth_source`)
) engine=innodb default charset=utf8mb4 comment='管理员授权关系表';
-- 9. 管理员宿舍楼权限关系表 -- 废弃,使用管理员授权关系表来代替
-- drop table if exists `xg_dorm_manager_building`;
-- create table `xg_dorm_manager_building` (
-- `id` bigint(20) not null comment '主键ID',
-- `manager_id` bigint(20) not null comment '管理员ID',
-- `building_id` bigint(20) not null comment '宿舍楼ID',
-- `status` char(1) default '0' comment '状态(0有效 1已撤销)',
-- `deleted` char(1) default '0' comment '删除标志(0代表存在 1代表删除)',
-- `tenant_id` bigint(20) default '0' comment '租户编号',
-- `create_by` bigint(20) default null comment '创建者',
-- `create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
-- `create_time` datetime default null comment '创建时间',
-- `update_by` bigint(20) default null comment '更新者',
-- `update_time` datetime default null comment '更新时间',
-- `remark` varchar(500) default null comment '备注',
-- primary key (`id`),
-- unique key `uk_manager_building` (`manager_id`, `building_id`),
-- key `idx_manager_id` (`manager_id`),
-- key `idx_building_id` (`building_id`)
-- ) engine=innodb default charset=utf8mb4 comment='管理员宿舍楼权限关系表';
-- 10. 二级学院宿舍管理员信息表 -- 废弃,使用角色来作为二级学院管理员
-- drop table if exists `xg_dorm_college_manager`;
-- create table `xg_dorm_college_manager` (
-- `id` bigint(20) not null comment '主键ID',
-- `manager_name` varchar(100) not null comment '管理员姓名',
-- `college_id` bigint(20) not null comment '所属学院ID',
-- `user_id` bigint(20) default null comment '关联用户ID',
-- `phone` varchar(20) default null comment '联系电话',
-- `gender` char(1) default '0' comment '性别(0男 1女 2未知)',
-- `status` char(1) default '0' comment '状态(0正常 1停用)',
-- `deleted` char(1) default '0' comment '删除标志(0代表存在 1代表删除)',
-- `tenant_id` bigint(20) default '0' comment '租户编号',
-- `create_by` bigint(20) default null comment '创建者',
-- `create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
-- `create_time` datetime default null comment '创建时间',
-- `update_by` bigint(20) default null comment '更新者',
-- `update_time` datetime default null comment '更新时间',
-- `remark` varchar(500) default null comment '备注',
-- primary key (`id`),
-- key `idx_college_id` (`college_id`),
-- key `idx_user_id` (`user_id`)
-- ) engine=innodb default charset=utf8mb4 comment='二级学院宿舍管理员信息表';
-- 11. 二级学院床位绑定关系表 --废弃
-- drop table if exists `xg_dorm_college_bed`;
-- create table `xg_dorm_college_bed` (
-- `id` bigint(20) not null comment '主键ID',
-- `college_id` bigint(20) not null comment '学院ID',
-- `bed_id` bigint(20) not null comment '床位ID',
-- `building_id` bigint(20) not null comment '宿舍楼ID',
-- `room_id` bigint(20) not null comment '房间ID',
-- `status` char(1) default '0' comment '状态(0正常 1已解除)',
-- `assign_time` datetime default null comment '分配时间',
-- `release_time` datetime default null comment '到期解除时间',
-- `deleted` char(1) default '0' comment '删除标志(0代表存在 1代表删除)',
-- `tenant_id` bigint(20) default '0' comment '租户编号',
-- `create_by` bigint(20) default null comment '创建者',
-- `create_dept` bigint(20) DEFAULT NULL COMMENT '创建部门',
-- `create_time` datetime default null comment '创建时间',
-- `update_by` bigint(20) default null comment '更新者',
-- `update_time` datetime default null comment '更新时间',
-- `remark` varchar(500) default null comment '备注',
-- primary key (`id`),
-- unique key `uk_college_bed` (`college_id`, `bed_id`),
-- key `idx_college_id` (`college_id`),
-- key `idx_bed_id` (`bed_id`),
-- key `idx_building_id` (`building_id`),
-- key `idx_room_id` (`room_id`)
-- ) engine=innodb default charset=utf8mb4 comment='二级学院床位绑定关系表';