-- 禁用外键检查 SET FOREIGN_KEY_CHECKS = 0; -- 如果数据库存在,删除它 DROP DATABASE IF EXISTS glucowisebase; -- 创建数据库 CREATE DATABASE glucowisebase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 使用数据库 USE glucowisebase; -- ==================== 创建表(按依赖顺序) ==================== -- 1. 首先创建没有外键依赖的表 CREATE TABLE `users` ( `id` bigint NOT NULL, `username` varchar(50) DEFAULT NULL, `wx_id` varchar(20) DEFAULT NULL, `avatar_url` varchar(255) DEFAULT NULL, `gender` enum('male','female') DEFAULT NULL, `birthday` date DEFAULT NULL, `status` enum('active','inactive','banned') DEFAULT NULL, `created_at` timestamp NULL DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, `banned_until` timestamp NULL DEFAULT NULL, `background_url` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE `roles` ( `id` bigint NOT NULL, `role_name` varchar(50) DEFAULT NULL, `description` text, `permissions` json DEFAULT NULL, `created_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE `knowledge_base` ( `id` bigint NOT NULL AUTO_INCREMENT, `name` varchar(200) DEFAULT NULL, `url` varchar(255) DEFAULT NULL, `updated_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -- 2. 创建依赖 users 和 roles 的表 CREATE TABLE `admins` ( `id` bigint NOT NULL, `password` varchar(255) DEFAULT NULL, `real_name` varchar(255) DEFAULT NULL, `phone` varchar(20) DEFAULT NULL, `last_login` timestamp NULL DEFAULT NULL, `created_at` timestamp NULL DEFAULT NULL, `role_id` bigint DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_admin_role` (`role_id`), CONSTRAINT `FK_admin_role` FOREIGN KEY (`role_id`) REFERENCES `roles` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -- 3. 创建依赖 users 的表 CREATE TABLE `ai_conversations` ( `id` bigint NOT NULL, `question` text, `answer` text, `created_at` timestamp NULL DEFAULT NULL, `user_id` bigint DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_ai_user` (`user_id`), CONSTRAINT `FK_ai_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE `devices` ( `id` bigint NOT NULL AUTO_INCREMENT, `device_name` varchar(100) DEFAULT NULL, `device_type` varchar(50) DEFAULT NULL, `device_model` varchar(100) DEFAULT NULL, `mac_address` varchar(20) DEFAULT NULL, `connection_type` enum('bluetooth','wifi') DEFAULT NULL, `status` enum('active','inactive','error') DEFAULT NULL, `last_sync_time` timestamp NULL DEFAULT NULL, `bought_date` date DEFAULT NULL, `user_id` bigint DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_device_user` (`user_id`), CONSTRAINT `FK_device_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE `families` ( `id` bigint NOT NULL AUTO_INCREMENT, `family_name` varchar(100) DEFAULT NULL, `description` text, `creator_user_id` bigint DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_family_creator` (`creator_user_id`), CONSTRAINT `FK_family_creator` FOREIGN KEY (`creator_user_id`) REFERENCES `users` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE `follows` ( `follower_id` bigint NOT NULL, `followed_id` bigint NOT NULL, PRIMARY KEY (`follower_id`,`followed_id`), KEY `FK_follow_followed` (`followed_id`), CONSTRAINT `FK_follow_followed` FOREIGN KEY (`followed_id`) REFERENCES `users` (`id`), CONSTRAINT `FK_follow_follower` FOREIGN KEY (`follower_id`) REFERENCES `users` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE `messages` ( `message_type` enum('system','reminder','alert') DEFAULT NULL, `content` text, `user_id` bigint NOT NULL, `created_at` timestamp NOT NULL, PRIMARY KEY (`user_id`,`created_at`), CONSTRAINT `FK_message_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE `monitoring_plans` ( `id` bigint NOT NULL AUTO_INCREMENT, `frequency` json DEFAULT NULL, `reminder_settings` json DEFAULT NULL, `user_id` bigint DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_plan_user` (`user_id`), CONSTRAINT `FK_plan_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE `posts` ( `id` bigint NOT NULL, `content` text, `images` json DEFAULT NULL, `visibility` enum('PUBLIC','PRIVATE') DEFAULT NULL, `status` enum('pending','approved','rejected') DEFAULT NULL, `author_id` bigint DEFAULT NULL, `created_at` timestamp NULL DEFAULT NULL, `approved_at` timestamp NULL DEFAULT NULL, `reviewed_by` bigint DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_post_author` (`author_id`), KEY `FK_post_reviewer` (`reviewed_by`), CONSTRAINT `FK_post_author` FOREIGN KEY (`author_id`) REFERENCES `users` (`id`), CONSTRAINT `FK_post_reviewer` FOREIGN KEY (`reviewed_by`) REFERENCES `admins` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE `private_messages` ( `url` varchar(255) DEFAULT NULL, `content` text, `message_type` enum('text','image','audio') DEFAULT NULL, `sender_id` bigint NOT NULL, `receiver_id` bigint NOT NULL, `created_at` timestamp NOT NULL, PRIMARY KEY (`sender_id`,`receiver_id`,`created_at`), KEY `FK_private_message_receiver` (`receiver_id`), CONSTRAINT `FK_private_message_receiver` FOREIGN KEY (`receiver_id`) REFERENCES `users` (`id`), CONSTRAINT `FK_private_message_sender` FOREIGN KEY (`sender_id`) REFERENCES `users` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE `reports_users` ( `reporter_id` bigint NOT NULL, `reported_user_id` bigint NOT NULL, `report_type` varchar(50) DEFAULT NULL, `description` text, `status` enum('pending','approved','rejected') DEFAULT NULL, `images_url` json DEFAULT NULL, `reviewed_by` bigint DEFAULT NULL, `processed_at` timestamp NULL DEFAULT NULL, `result` text, `created_at` timestamp NOT NULL, PRIMARY KEY (`reporter_id`,`reported_user_id`,`created_at`), KEY `FK_report_user_reported` (`reported_user_id`), KEY `FK_report_user_admin` (`reviewed_by`), CONSTRAINT `FK_report_user_admin` FOREIGN KEY (`reviewed_by`) REFERENCES `admins` (`id`), CONSTRAINT `FK_report_user_reported` FOREIGN KEY (`reported_user_id`) REFERENCES `users` (`id`), CONSTRAINT `FK_report_user_reporter` FOREIGN KEY (`reporter_id`) REFERENCES `users` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -- 4. 创建依赖其他表的表 CREATE TABLE `family_members` ( `family_id` bigint NOT NULL, `user_id` bigint NOT NULL, PRIMARY KEY (`family_id`,`user_id`), KEY `FK_family_member_user` (`user_id`), CONSTRAINT `FK_family_member_family` FOREIGN KEY (`family_id`) REFERENCES `families` (`id`), CONSTRAINT `FK_family_member_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE `health_data` ( `id` bigint NOT NULL AUTO_INCREMENT, `data_type` enum('glucose','heart_rate','oxygen_saturation') DEFAULT NULL, `value` decimal(8,2) DEFAULT NULL, `unit` varchar(20) DEFAULT NULL, `measurement_time` timestamp NULL DEFAULT NULL, `data_source` enum('manual','auto') DEFAULT NULL, `user_id` bigint DEFAULT NULL, `device_id` bigint DEFAULT NULL, `created_at` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_health_user` (`user_id`), KEY `FK_health_device` (`device_id`), CONSTRAINT `FK_health_device` FOREIGN KEY (`device_id`) REFERENCES `devices` (`id`), CONSTRAINT `FK_health_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE `home_banners` ( `id` int NOT NULL AUTO_INCREMENT, `image_url` varchar(255) DEFAULT NULL, `link_url` varchar(255) DEFAULT NULL, `interval_time` int DEFAULT NULL, `created_by` bigint DEFAULT NULL, PRIMARY KEY (`id`), KEY `FK_banner_admin` (`created_by`), CONSTRAINT `FK_banner_admin` FOREIGN KEY (`created_by`) REFERENCES `admins` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE `interactions` ( `content` text, `commenter_id` bigint NOT NULL, `target_user_id` bigint DEFAULT NULL, `post_id` bigint NOT NULL, `created_at` timestamp NOT NULL, PRIMARY KEY (`commenter_id`,`post_id`,`created_at`), KEY `FK_interaction_target_user` (`target_user_id`), KEY `FK_interaction_post` (`post_id`), CONSTRAINT `FK_interaction_commenter` FOREIGN KEY (`commenter_id`) REFERENCES `users` (`id`), CONSTRAINT `FK_interaction_post` FOREIGN KEY (`post_id`) REFERENCES `posts` (`id`), CONSTRAINT `FK_interaction_target_user` FOREIGN KEY (`target_user_id`) REFERENCES `users` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE `likes` ( `user_id` bigint NOT NULL, `target_id` bigint NOT NULL, PRIMARY KEY (`user_id`,`target_id`), KEY `FK_like_post` (`target_id`), CONSTRAINT `FK_like_post` FOREIGN KEY (`target_id`) REFERENCES `posts` (`id`), CONSTRAINT `FK_like_user` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE `reports_posts` ( `reporter_id` bigint NOT NULL, `post_id` bigint NOT NULL, `report_type` varchar(50) DEFAULT NULL, `description` text, `status` enum('pending','reviewed','dismissed') DEFAULT NULL, `reviewed_by` bigint DEFAULT NULL, `processed_at` timestamp NULL DEFAULT NULL, `created_at` timestamp NOT NULL, `result` text, PRIMARY KEY (`reporter_id`,`post_id`,`created_at`), KEY `FK_report_post_post` (`post_id`), KEY `FK_report_post_admin` (`reviewed_by`), CONSTRAINT `FK_report_post_admin` FOREIGN KEY (`reviewed_by`) REFERENCES `admins` (`id`), CONSTRAINT `FK_report_post_post` FOREIGN KEY (`post_id`) REFERENCES `posts` (`id`), CONSTRAINT `FK_report_post_reporter` FOREIGN KEY (`reporter_id`) REFERENCES `users` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; CREATE TABLE `tweets` ( `id` bigint NOT NULL AUTO_INCREMENT, `title` varchar(200) DEFAULT NULL, `url` varchar(500) NOT NULL, `content` text, `tags` json DEFAULT NULL, `view_count` int DEFAULT NULL, `create_at` timestamp NULL DEFAULT NULL, `base_id` bigint DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_tweets_base_id` (`base_id`), KEY `idx_tweets_create_at` (`create_at`), CONSTRAINT `FK_tweet_knowledge_base` FOREIGN KEY (`base_id`) REFERENCES `knowledge_base` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; -- ==================== 插入数据(按依赖顺序) ==================== -- 1. 先插入 roles INSERT INTO `roles` VALUES (1,'超级管理员','系统最高权限管理员','[\"user:manage\", \"content:manage\", \"system:config\"]','2024-01-01 08:00:00'), (2,'内容管理员','负责内容审核和管理','[\"content:review\", \"content:publish\"]','2024-01-01 08:00:00'), (3,'客服管理员','处理用户反馈和举报','[\"report:handle\", \"user:support\"]','2024-01-01 08:00:00'); -- 2. 插入 users INSERT INTO `users` VALUES (1,'张三','wx_zhangsan','https://example.com/avatar1.jpg','male','1985-03-15','active','2024-01-15 18:00:00','2024-01-15 18:00:00',NULL,NULL), (2,'李四','wx_lisi','https://example.com/avatar2.jpg','female','1990-07-22','active','2024-01-16 19:30:00','2024-01-16 19:30:00',NULL,NULL), (3,'张三','wx_wangwu','/images/avatar1.png','female','1988-12-07','active','2024-01-17 17:15:00','2025-12-09 07:19:23',NULL,'/images/covers/profile-cover.jpg'), (4,'赵六','wx_zhaoliu','https://example.com/avatar4.jpg','female','1992-05-30','inactive','2024-01-18 22:20:00','2024-01-18 22:20:00',NULL,NULL), (5,'孙七','wx_sunqi','https://example.com/avatar5.jpg','male','1987-09-12','active','2024-01-20 00:45:00','2024-01-20 00:45:00',NULL,NULL), (176,'美滋滋','demo_user_1','/images/avatar1.png','male',NULL,'active','2025-12-09 05:20:11','2025-12-09 05:20:11',NULL,NULL); -- 3. 插入 admins INSERT INTO `admins` VALUES (1,'11111','黄思慧','15382829127','2025-12-09 07:07:43','2024-01-01 16:00:00',1), (2,'hashed_password_2','李审核员','13800138002','2024-11-05 18:30:00','2024-01-01 16:00:00',2), (3,'hashed_password_3','王客服','13800138003','2024-11-05 19:15:00','2024-01-01 16:00:00',3); -- 4. 插入其他表的数据(按照你的原始数据) -- 这里按照你的原始INSERT语句顺序,但我会调整以确保外键依赖 -- 插入 knowledge_base INSERT INTO `knowledge_base` VALUES (4,'新华网健康','http://www.xinhuanet.com/health/','2025-12-09 07:11:07'), (5,'人民健康频道','http://health.people.com.cn/','2025-12-09 05:18:04'); -- 插入 ai_conversations INSERT INTO `ai_conversations` VALUES (1,'血糖正常范围是多少?','正常空腹血糖范围为3.9-6.1mmol/L,餐后2小时血糖应小于7.8mmol/L。','2024-11-05 17:00:00',1), (2,'如何控制餐后血糖?','建议控制碳水摄入、适量运动、按时用药,并定期监测血糖。','2024-11-05 18:00:00',2), (3,'糖尿病可以吃什么水果?','建议选择低GI水果如苹果、梨、草莓等,注意控制分量。','2024-11-05 19:00:00',3); -- 插入 devices INSERT INTO `devices` VALUES (1,'血糖仪001','血糖仪','GT-100','00:1B:44:11:3A:B7','bluetooth','active','2024-11-05 16:30:00','2024-01-10',1), (2,'智能手环','手环','Band-Pro','00:1B:44:11:3A:B8','bluetooth','active','2024-11-05 17:15:00','2024-02-15',2), (3,'血氧仪','血氧监测','OX-200','00:1B:44:11:3A:B9','bluetooth','inactive','2024-10-20 21:00:00','2024-03-20',3); -- 插入 families INSERT INTO `families` VALUES (1,'张家','张三的家庭组',1), (2,'李家','李四的家庭组',2); -- 插入 family_members INSERT INTO `family_members` VALUES (1,1),(2,2),(1,3),(2,4); -- 插入 follows INSERT INTO `follows` VALUES (2,1),(3,1),(1,2),(3,2),(1,3); -- 插入 health_data INSERT INTO `health_data` VALUES (1,'glucose',5.60,'mmol/L','2024-11-05 16:00:00','auto',1,1,'2024-11-05 16:00:00'), (2,'glucose',6.20,'mmol/L','2024-11-05 20:30:00','manual',1,NULL,'2024-11-05 20:30:00'), (3,'heart_rate',72.00,'bpm','2024-11-05 17:00:00','auto',2,2,'2024-11-05 17:00:00'), (4,'oxygen_saturation',98.00,'%','2024-11-05 18:00:00','auto',3,3,'2024-11-05 18:00:00'), (5,'glucose',5.80,'mmol/L','2024-11-05 22:00:00','manual',2,NULL,'2024-11-05 22:00:00'); -- 插入 home_banners INSERT INTO `home_banners` VALUES (7,'http://localhost:8080/uploads/banner-images/f4513832-8f7d-47d7-89ff-8c53b0a27cf1.jpg','24',5000,1), (8,'http://localhost:8080/uploads/banner-images/0cce189f-537d-4f17-9570-664d2586cc34.jpg','6',5000,1), (9,'http://localhost:8080/uploads/banner-images/f8dc20f0-c746-4951-b147-da1e8ed2762b.jpg','8',5000,1), (10,'http://localhost:8080/uploads/banner-images/0a15e587-da0c-49be-8d3e-f13fccabbcc7.jpg','22',5000,1); -- 插入 interactions INSERT INTO `interactions` VALUES ('@李四 你的运动计划是怎样的?',1,2,2,'2024-11-05 19:30:00'), ('很好的分享,学到了!',2,NULL,1,'2024-11-05 18:45:00'), ('@张三 我主要是晨跑和力量训练',2,1,2,'2024-11-05 19:35:00'), ('谢谢你的经验分享!',3,NULL,1,'2024-11-05 19:00:00'); -- 插入 likes INSERT INTO `likes` VALUES (1,1),(2,1),(3,1),(1,2),(2,3); -- 插入 messages INSERT INTO `messages` VALUES ('system','系统维护通知:本周六凌晨2-4点进行系统升级',1,'2024-11-05 16:00:00'), ('reminder','提醒:您今天还有1次血糖未测量',1,'2024-11-06 02:00:00'), ('alert','警告:您的血糖值异常,请及时处理',2,'2024-11-05 20:30:00'); -- 插入 monitoring_plans INSERT INTO `monitoring_plans` (`id`, `frequency`, `reminder_settings`, `user_id`) VALUES (4, '[ { "time": "空腹", "displayTime": "07:00", "alarm": true, "alarmTime": "07:00", "days": [ {"day": "一", "status": "checked", "text": "✓", "completed": true}, {"day": "二", "status": "checked", "text": "✓", "completed": true}, {"day": "三", "status": "empty", "text": "", "completed": false}, {"day": "四", "status": "empty", "text": "", "completed": false}, {"day": "五", "status": "empty", "text": "", "completed": false}, {"day": "六", "status": "empty", "text": "", "completed": false}, {"day": "日", "status": "empty", "text": "", "completed": false} ] }, { "time": "早餐后", "displayTime": "09:00", "alarm": true, "alarmTime": "09:00", "days": [ {"day": "一", "status": "checked", "text": "✓", "completed": true}, {"day": "二", "status": "empty", "text": "", "completed": false}, {"day": "三", "status": "empty", "text": "", "completed": false}, {"day": "四", "status": "empty", "text": "", "completed": false}, {"day": "五", "status": "empty", "text": "", "completed": false}, {"day": "六", "status": "empty", "text": "", "completed": false}, {"day": "日", "status": "empty", "text": "", "completed": false} ] }, { "time": "午餐前", "displayTime": "11:30", "alarm": false, "alarmTime": "", "days": [ {"day": "一", "status": "disabled", "text": "", "completed": false}, {"day": "二", "status": "disabled", "text": "", "completed": false}, {"day": "三", "status": "disabled", "text": "", "completed": false}, {"day": "四", "status": "disabled", "text": "", "completed": false}, {"day": "五", "status": "disabled", "text": "", "completed": false}, {"day": "六", "status": "empty", "text": "", "completed": false}, {"day": "日", "status": "empty", "text": "", "completed": false} ] } ]', '[ { "id": 1, "time": "07:00", "label": "空腹测量", "repeat": "daily", "enabled": true, "days": [true, true, true, true, true, true, true] }, { "id": 2, "time": "09:00", "label": "早餐后测量", "repeat": "weekdays", "enabled": true, "days": [true, true, true, true, true, false, false] }, { "id": 3, "time": "17:30", "label": "晚餐前", "repeat": "daily", "enabled": true, "days": [true, true, true, true, true, true, true] } ]', 1); -- 插入 posts INSERT INTO `posts` VALUES (1,'今天血糖控制得很好,分享一下我的饮食经验!','[\"img1.jpg\", \"img2.jpg\"]','PUBLIC','approved',1,'2024-11-05 18:00:00','2024-11-05 18:30:00',2), (2,'运动对血糖控制真的很重要,大家要坚持锻炼!','[\"exercise.jpg\"]','PUBLIC','approved',2,'2024-11-05 19:00:00','2024-11-05 19:15:00',2), (3,'求助:最近血糖波动比较大,有什么建议吗?',NULL,'PUBLIC','pending',3,'2024-11-05 20:00:00',NULL,NULL), (4,'私人记录:今天的用药情况',NULL,'PRIVATE','approved',1,'2024-11-05 21:00:00','2024-11-05 21:05:00',2); -- 插入 private_messages INSERT INTO `private_messages` VALUES (NULL,'你好,想请教一下血糖监测的问题','text',2,1,'2024-11-05 22:00:00'), (NULL,'当然可以,有什么具体问题?','text',1,2,'2024-11-05 22:05:00'), ('audio_message.mp3',NULL,'audio',3,2,'2024-11-05 23:00:00'); -- 插入 reports_posts INSERT INTO `reports_posts` VALUES (2,3,'违规内容','帖子包含不当内容','reviewed',3,'2024-11-06 01:00:00','2024-11-06 00:30:00','内容已审核,无违规'), (3,1,'广告嫌疑','疑似推广产品','pending',NULL,NULL,'2024-11-06 02:00:00',NULL); -- 插入 reports_users INSERT INTO `reports_users` VALUES (2,3,'虚假信息','发布不实医疗信息','pending',NULL,NULL,NULL,NULL,'2024-11-06 00:00:00'); -- 插入 tweets(这里只插入前几条作为示例) INSERT INTO `tweets` VALUES (7,'权威发布','http://www.xinhuanet.com/health/spq/index.html','减重不再难...','[\"健康控糖\", \"健康运动\"]',0,'2025-12-09 05:15:34',4), (8,'权威发布','http://www.xinhuanet.com/health/qwfb/index.html','国家卫生健康委发布新版三级医院评审标准...','[\"健康饮食\"]',8,'2025-12-09 05:15:35',4); -- 重新启用外键检查 SET FOREIGN_KEY_CHECKS = 1; -- 显示成功消息 SELECT '数据库 glucowisebase 创建并初始化成功!' AS Message; -- 用户活动记录表 CREATE TABLE IF NOT EXISTS user_activity ( id BIGINT AUTO_INCREMENT PRIMARY KEY, user_id BIGINT NOT NULL COMMENT '用户ID', activity_date DATE NOT NULL COMMENT '活动日期', login_count INT DEFAULT 1 COMMENT '当日登录次数', first_login_time DATETIME COMMENT '首次登录时间', last_login_time DATETIME COMMENT '最后登录时间', is_active BOOLEAN DEFAULT TRUE COMMENT '是否活跃', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 索引 UNIQUE KEY uk_user_date (user_id, activity_date), INDEX idx_activity_date (activity_date), INDEX idx_user_id (user_id), INDEX idx_is_active (is_active), -- 外键约束 FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户活动记录表'; -- 每日活跃用户统计表(预聚合数据,提高查询性能) CREATE TABLE IF NOT EXISTS daily_active_stats ( id BIGINT AUTO_INCREMENT PRIMARY KEY, stat_date DATE NOT NULL COMMENT '统计日期', active_user_count INT DEFAULT 0 COMMENT '活跃用户数', new_user_count INT DEFAULT 0 COMMENT '新用户数', total_login_count INT DEFAULT 0 COMMENT '总登录次数', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 索引 UNIQUE KEY uk_stat_date (stat_date), INDEX idx_stat_date (stat_date) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='每日活跃用户统计表'; -- 插入一些示例数据(最近30天) INSERT INTO daily_active_stats (stat_date, active_user_count, new_user_count, total_login_count) VALUES ('2024-11-12', 120, 5, 180), ('2024-11-13', 135, 8, 210), ('2024-11-14', 128, 3, 195), ('2024-11-15', 142, 12, 225), ('2024-11-16', 156, 6, 240), ('2024-11-17', 148, 4, 220), ('2024-11-18', 132, 7, 200), ('2024-11-19', 145, 9, 215), ('2024-11-20', 158, 11, 245), ('2024-11-21', 162, 5, 250), ('2024-11-22', 155, 8, 235), ('2024-11-23', 149, 6, 225), ('2024-11-24', 138, 4, 205), ('2024-11-25', 125, 3, 185), ('2024-11-26', 140, 7, 210), ('2024-11-27', 152, 10, 230), ('2024-11-28', 168, 12, 260), ('2024-11-29', 175, 8, 270), ('2024-11-30', 182, 15, 285), ('2024-12-01', 178, 6, 275), ('2024-12-02', 165, 9, 255), ('2024-12-03', 172, 11, 265), ('2024-12-04', 185, 13, 290), ('2024-12-05', 192, 7, 300), ('2024-12-06', 188, 10, 295), ('2024-12-07', 195, 14, 310), ('2024-12-08', 201, 8, 320), ('2024-12-09', 198, 12, 315), ('2024-12-10', 205, 9, 325), ('2024-12-11', 210, 11, 335); -- 禁用外键检查(如果有外键依赖) SET FOREIGN_KEY_CHECKS = 0; -- 1. 备份当前自增值 SELECT MAX(id) INTO @max_id FROM users; -- 2. 删除主键并修改为自增 ALTER TABLE users DROP PRIMARY KEY, MODIFY COLUMN id BIGINT NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (id); -- 3. 设置自增起始值为当前最大值+1 SET @new_start = IFNULL(@max_id, 0) + 1; SET @sql = CONCAT('ALTER TABLE users AUTO_INCREMENT = ', @new_start); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- 4. 添加其他索引(可选) ALTER TABLE users ADD UNIQUE INDEX idx_wx_id (wx_id), ADD INDEX idx_status (status), ADD INDEX idx_created_at (created_at); -- 重新启用外键检查 SET FOREIGN_KEY_CHECKS = 1;