前言
衔接上篇文章,这篇是相关的表结构sql语句记录
EchoMeet 会议系统数据库表结构设计
📋 设计概述
本文档定义了EchoMeet音视频会议系统的完整数据库表结构,采用微服务架构设计,支持高并发、可扩展的会议场景。
🎯 设计原则
- 高并发支持:优化索引设计,支持大量并发用户
- 数据一致性:合理的外键关系和约束设计
- 扩展性:预留扩展字段,便于后期功能迭代
- 性能优化:合理的分表策略和缓存设计
- 数据安全:敏感数据加密,软删除机制
- 职责分离:用户基础信息与会议配置分离,便于维护
📊 核心业务表设计
1. 用户表 (users)
用户基础信息表,只存储用户的核心身份信息。
CREATE TABLE `users` (`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',`name` varchar(255) NOT NULL COMMENT '真实姓名',`nick_name` varchar(255) NOT NULL COMMENT '昵称',`gender` varchar(255) DEFAULT 'unknown' COMMENT '性别:male=男,female=女,unknown=未知',`avatar` varchar(255) DEFAULT NULL COMMENT '头像URL',`email` varchar(255) NOT NULL COMMENT '邮箱地址',`phone` varchar(20) NOT NULL COMMENT '手机号码',`password` varchar(255) NOT NULL COMMENT '密码(加密存储)',`status` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '状态:0=禁用,1=启用,2=已删除',`online_status` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '在线状态:0=离线,1=在线,2=忙碌,3=离开',`last_login_at` datetime DEFAULT NULL COMMENT '最后登录时间',`last_ip` varchar(255) DEFAULT NULL COMMENT '最后登录IP地址',`device` varchar(255) DEFAULT NULL COMMENT '登录设备信息',`platform` varchar(255) DEFAULT NULL COMMENT '登录平台:web=网页,android=安卓,ios=苹果,desktop=桌面',`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',`deleted_at` datetime DEFAULT NULL COMMENT '删除时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_email` (`email`),UNIQUE KEY `uk_phone` (`phone`),UNIQUE KEY `uk_nick_name` (`nick_name`),KEY `idx_status` (`status`),KEY `idx_online_status` (`online_status`),KEY `idx_created_at` (`created_at`),KEY `idx_deleted_at` (`deleted_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户基础信息表';
2. 用户会议配置表 (user_meeting_configs)
用户会议相关的配置和统计信息,与用户表分离,便于扩展和维护。
CREATE TABLE `user_meeting_configs` (`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',`user_id` bigint unsigned NOT NULL COMMENT '用户ID',`meeting_nickname` varchar(100) DEFAULT NULL COMMENT '会议中显示的昵称',`default_audio_enabled` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '默认音频开启:0=关闭,1=开启',`default_video_enabled` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '默认视频开启:0=关闭,1=开启',`meeting_permissions` json DEFAULT NULL COMMENT '会议权限设置(JSON格式)',`total_meeting_time` bigint unsigned NOT NULL DEFAULT '0' COMMENT '累计会议时长(秒)',`total_meetings_hosted` int unsigned NOT NULL DEFAULT '0' COMMENT '主持会议总数',`total_meetings_joined` int unsigned NOT NULL DEFAULT '0' COMMENT '参与会议总数',`preferred_camera` varchar(255) DEFAULT NULL COMMENT '首选摄像头设备ID',`preferred_microphone` varchar(255) DEFAULT NULL COMMENT '首选麦克风设备ID',`preferred_speaker` varchar(255) DEFAULT NULL COMMENT '首选扬声器设备ID',`video_quality` tinyint unsigned NOT NULL DEFAULT '2' COMMENT '视频质量:1=低,2=中,3=高',`auto_join_audio` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '自动加入音频:0=否,1=是',`auto_join_video` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '自动加入视频:0=否,1=是',`enable_noise_suppression` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '启用噪音抑制:0=否,1=是',`enable_echo_cancellation` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '启用回声消除:0=否,1=是',`last_meeting_at` datetime DEFAULT NULL COMMENT '最后参与会议时间',`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_user_id` (`user_id`),KEY `idx_meeting_stats` (`total_meetings_hosted`, `total_meetings_joined`),KEY `idx_last_meeting_at` (`last_meeting_at`),CONSTRAINT `fk_user_meeting_configs_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户会议配置表';
3. 会议室表 (meeting_rooms)
会议室是会议的载体,支持固定会议室和临时会议室。
CREATE TABLE `meeting_rooms` (`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',`room_number` varchar(32) NOT NULL COMMENT '会议室号码(唯一标识)',`room_name` varchar(255) NOT NULL COMMENT '会议室名称',`room_type` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '会议室类型:1=临时房间,2=固定房间,3=个人房间',`owner_id` bigint unsigned NOT NULL COMMENT '房主用户ID',`owner_type` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '房主类型:1=普通用户,2=管理员',`max_participants` int unsigned NOT NULL DEFAULT '50' COMMENT '最大参与人数',`password` varchar(255) DEFAULT NULL COMMENT '会议室密码(加密存储)',`is_public` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '是否公开:0=私有,1=公开',`description` text COMMENT '会议室描述',`settings` json COMMENT '会议室设置(JSON格式)',`status` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '状态:0=禁用,1=启用,2=维护中',`expires_at` datetime DEFAULT NULL COMMENT '过期时间(临时房间)',`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',`deleted_at` datetime DEFAULT NULL COMMENT '删除时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_room_number` (`room_number`),KEY `idx_owner` (`owner_id`, `owner_type`),KEY `idx_status_type` (`status`, `room_type`),KEY `idx_created_at` (`created_at`),KEY `idx_deleted_at` (`deleted_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会议室表';
4. 会议表 (meetings)
记录具体的会议会话信息,一个会议室可以有多次会议。
CREATE TABLE `meetings` (`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '会议ID',`meeting_id` varchar(64) NOT NULL COMMENT '会议唯一标识符',`room_id` bigint unsigned NOT NULL COMMENT '会议室ID',`title` varchar(255) NOT NULL COMMENT '会议标题',`description` text COMMENT '会议描述',`host_id` bigint unsigned NOT NULL COMMENT '主持人用户ID',`host_type` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '主持人类型:1=普通用户,2=管理员',`scheduled_start_time` datetime DEFAULT NULL COMMENT '预定开始时间',`scheduled_end_time` datetime DEFAULT NULL COMMENT '预定结束时间',`actual_start_time` datetime DEFAULT NULL COMMENT '实际开始时间',`actual_end_time` datetime DEFAULT NULL COMMENT '实际结束时间',`meeting_type` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '会议类型:1=即时会议,2=预约会议,3=周期会议',`status` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '会议状态:0=未开始,1=进行中,2=已结束,3=已取消',`max_participants` int unsigned NOT NULL DEFAULT '50' COMMENT '最大参与人数',`current_participants` int unsigned NOT NULL DEFAULT '0' COMMENT '当前参与人数',`password` varchar(255) DEFAULT NULL COMMENT '会议密码(加密存储)',`settings` json COMMENT '会议设置(录制、共享等)',`metadata` json COMMENT '会议元数据(WebRTC相关配置)',`recording_enabled` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '是否启用录制:0=否,1=是',`recording_path` varchar(500) DEFAULT NULL COMMENT '录制文件路径',`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',`deleted_at` datetime DEFAULT NULL COMMENT '删除时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_meeting_id` (`meeting_id`),KEY `idx_room_id` (`room_id`),KEY `idx_host` (`host_id`, `host_type`),KEY `idx_status_type` (`status`, `meeting_type`),KEY `idx_scheduled_time` (`scheduled_start_time`, `scheduled_end_time`),KEY `idx_created_at` (`created_at`),KEY `idx_deleted_at` (`deleted_at`),CONSTRAINT `fk_meetings_room` FOREIGN KEY (`room_id`) REFERENCES `meeting_rooms` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会议表';
5. 会议参与者表 (meeting_participants)
记录会议的参与者信息和状态。
CREATE TABLE `meeting_participants` (`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '参与记录ID',`meeting_id` bigint unsigned NOT NULL COMMENT '会议ID',`user_id` bigint unsigned NOT NULL COMMENT '用户ID',`user_type` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '用户类型:1=普通用户,2=管理员',`role` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '会议角色:1=参与者,2=主持人,3=协作主持人',`join_time` datetime DEFAULT NULL COMMENT '加入时间',`leave_time` datetime DEFAULT NULL COMMENT '离开时间',`duration` int unsigned DEFAULT '0' COMMENT '参与时长(秒)',`status` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '参与状态:0=邀请中,1=已加入,2=已离开,3=被踢出',`connection_status` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '连接状态:0=离线,1=在线,2=连接中,3=重连中',`audio_enabled` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '音频状态:0=关闭,1=开启',`video_enabled` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '视频状态:0=关闭,1=开启',`screen_sharing` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '屏幕共享:0=关闭,1=开启',`client_info` json COMMENT '客户端信息(设备、浏览器等)',`network_stats` json COMMENT '网络统计信息',`permissions` json COMMENT '权限设置(发言、共享等)',`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_meeting_user` (`meeting_id`, `user_id`, `user_type`),KEY `idx_meeting_id` (`meeting_id`),KEY `idx_user` (`user_id`, `user_type`),KEY `idx_status` (`status`, `connection_status`),KEY `idx_join_time` (`join_time`),CONSTRAINT `fk_participants_meeting` FOREIGN KEY (`meeting_id`) REFERENCES `meetings` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会议参与者表';
6. 会议邀请表 (meeting_invitations)
管理会议邀请信息。
CREATE TABLE `meeting_invitations` (`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '邀请ID',`meeting_id` bigint unsigned NOT NULL COMMENT '会议ID',`inviter_id` bigint unsigned NOT NULL COMMENT '邀请人ID',`inviter_type` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '邀请人类型:1=普通用户,2=管理员',`invitee_id` bigint unsigned DEFAULT NULL COMMENT '被邀请人ID(注册用户)',`invitee_email` varchar(255) DEFAULT NULL COMMENT '被邀请人邮箱(未注册用户)',`invitee_phone` varchar(20) DEFAULT NULL COMMENT '被邀请人手机号',`invitation_code` varchar(64) NOT NULL COMMENT '邀请码',`message` text COMMENT '邀请消息',`status` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '邀请状态:0=待回复,1=已接受,2=已拒绝,3=已过期',`response_time` datetime DEFAULT NULL COMMENT '回复时间',`expires_at` datetime NOT NULL COMMENT '过期时间',`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_invitation_code` (`invitation_code`),KEY `idx_meeting_id` (`meeting_id`),KEY `idx_inviter` (`inviter_id`, `inviter_type`),KEY `idx_invitee` (`invitee_id`),KEY `idx_email` (`invitee_email`),KEY `idx_status` (`status`),KEY `idx_expires_at` (`expires_at`),CONSTRAINT `fk_invitations_meeting` FOREIGN KEY (`meeting_id`) REFERENCES `meetings` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会议邀请表';
7. 会议消息表 (meeting_messages)
存储会议期间的聊天消息。
CREATE TABLE `meeting_messages` (`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '消息ID',`meeting_id` bigint unsigned NOT NULL COMMENT '会议ID',`sender_id` bigint unsigned NOT NULL COMMENT '发送者ID',`sender_type` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '发送者类型:1=普通用户,2=管理员,3=系统',`message_type` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '消息类型:1=文本,2=图片,3=文件,4=系统通知',`content` text NOT NULL COMMENT '消息内容',`file_url` varchar(500) DEFAULT NULL COMMENT '文件URL(文件消息)',`file_size` bigint unsigned DEFAULT NULL COMMENT '文件大小(字节)',`file_type` varchar(50) DEFAULT NULL COMMENT '文件类型',`reply_to_id` bigint unsigned DEFAULT NULL COMMENT '回复的消息ID',`is_private` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '是否私聊:0=公开,1=私聊',`recipient_id` bigint unsigned DEFAULT NULL COMMENT '私聊接收者ID',`status` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '消息状态:0=已删除,1=正常,2=已撤回',`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',PRIMARY KEY (`id`),KEY `idx_meeting_id` (`meeting_id`),KEY `idx_sender` (`sender_id`, `sender_type`),KEY `idx_message_type` (`message_type`),KEY `idx_created_at` (`created_at`),KEY `idx_reply_to` (`reply_to_id`),CONSTRAINT `fk_messages_meeting` FOREIGN KEY (`meeting_id`) REFERENCES `meetings` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会议消息表';
8. 会议录制表 (meeting_recordings)
管理会议录制文件信息。
CREATE TABLE `meeting_recordings` (`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '录制ID',`meeting_id` bigint unsigned NOT NULL COMMENT '会议ID',`recording_id` varchar(64) NOT NULL COMMENT '录制唯一标识',`title` varchar(255) NOT NULL COMMENT '录制标题',`file_path` varchar(500) NOT NULL COMMENT '录制文件路径',`file_size` bigint unsigned NOT NULL DEFAULT '0' COMMENT '文件大小(字节)',`duration` int unsigned NOT NULL DEFAULT '0' COMMENT '录制时长(秒)',`format` varchar(20) NOT NULL DEFAULT 'mp4' COMMENT '文件格式',`resolution` varchar(20) DEFAULT NULL COMMENT '视频分辨率',`start_time` datetime NOT NULL COMMENT '录制开始时间',`end_time` datetime DEFAULT NULL COMMENT '录制结束时间',`status` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '录制状态:0=录制中,1=已完成,2=处理中,3=失败',`download_count` int unsigned NOT NULL DEFAULT '0' COMMENT '下载次数',`is_public` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '是否公开:0=私有,1=公开',`password` varchar(255) DEFAULT NULL COMMENT '访问密码(加密存储)',`expires_at` datetime DEFAULT NULL COMMENT '过期时间',`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',`deleted_at` datetime DEFAULT NULL COMMENT '删除时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_recording_id` (`recording_id`),KEY `idx_meeting_id` (`meeting_id`),KEY `idx_status` (`status`),KEY `idx_created_at` (`created_at`),KEY `idx_deleted_at` (`deleted_at`),CONSTRAINT `fk_recordings_meeting` FOREIGN KEY (`meeting_id`) REFERENCES `meetings` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会议录制表';
🔧 扩展功能表设计
9. 会议模板表 (meeting_templates)
预设的会议模板,方便快速创建会议。
CREATE TABLE `meeting_templates` (`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '模板ID',`template_name` varchar(255) NOT NULL COMMENT '模板名称',`creator_id` bigint unsigned NOT NULL COMMENT '创建者ID',`creator_type` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '创建者类型:1=普通用户,2=管理员',`is_public` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '是否公开:0=私有,1=公开',`template_config` json NOT NULL COMMENT '模板配置(会议设置、权限等)',`usage_count` int unsigned NOT NULL DEFAULT '0' COMMENT '使用次数',`status` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '状态:0=禁用,1=启用',`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',`deleted_at` datetime DEFAULT NULL COMMENT '删除时间',PRIMARY KEY (`id`),KEY `idx_creator` (`creator_id`, `creator_type`),KEY `idx_public_status` (`is_public`, `status`),KEY `idx_created_at` (`created_at`),KEY `idx_deleted_at` (`deleted_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会议模板表';
10. 会议统计表 (meeting_statistics)
会议相关统计数据,用于分析和报表。
CREATE TABLE `meeting_statistics` (`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '统计ID',`meeting_id` bigint unsigned NOT NULL COMMENT '会议ID',`date` date NOT NULL COMMENT '统计日期',`total_participants` int unsigned NOT NULL DEFAULT '0' COMMENT '总参与人数',`max_concurrent_participants` int unsigned NOT NULL DEFAULT '0' COMMENT '最大并发人数',`total_duration` int unsigned NOT NULL DEFAULT '0' COMMENT '会议总时长(秒)',`average_duration_per_user` int unsigned NOT NULL DEFAULT '0' COMMENT '用户平均参与时长(秒)',`audio_quality_score` decimal(3,2) DEFAULT NULL COMMENT '音频质量评分',`video_quality_score` decimal(3,2) DEFAULT NULL COMMENT '视频质量评分',`network_quality_score` decimal(3,2) DEFAULT NULL COMMENT '网络质量评分',`total_messages` int unsigned NOT NULL DEFAULT '0' COMMENT '消息总数',`screen_sharing_duration` int unsigned NOT NULL DEFAULT '0' COMMENT '屏幕共享总时长(秒)',`recording_duration` int unsigned NOT NULL DEFAULT '0' COMMENT '录制时长(秒)',`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_meeting_date` (`meeting_id`, `date`),KEY `idx_date` (`date`),KEY `idx_created_at` (`created_at`),CONSTRAINT `fk_statistics_meeting` FOREIGN KEY (`meeting_id`) REFERENCES `meetings` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='会议统计表';
📈 性能优化建议
1. 分表策略
- 会议消息表:按月分表,提高查询性能
- 会议统计表:按年分表,便于历史数据管理
2. 索引优化
- 复合索引覆盖常用查询场景
- 定期分析慢查询,优化索引策略
3. 缓存策略
- Redis缓存:
- 活跃会议信息(30分钟过期)
- 用户会议权限(10分钟过期)
- 会议室状态(实时更新)
4. 数据清理
- 定期清理过期的临时会议室
- 归档历史会议数据
- 清理无效的邀请记录
🔒 安全考虑
1. 数据加密
- 会议密码使用bcrypt加密
- 敏感配置信息加密存储
2. 权限控制
- 基于角色的访问控制(RBAC)
- 会议级别的权限管理
3. 数据备份
- 定期数据库备份
- 重要会议录制文件备份
📝 总结
本数据库设计涵盖了EchoMeet会议系统的核心功能需求:
- ✅ 会议室管理(临时/固定/个人房间)
- ✅ 会议生命周期管理
- ✅ 参与者状态跟踪
- ✅ 邀请机制
- ✅ 实时消息
- ✅ 录制功能
- ✅ 统计分析
- ✅ 模板系统
设计充分考虑了高并发、可扩展性和数据安全性,为后续的mediasoup集成提供了坚实的数据基础。