2025-09-30 02:48:36
•
63
用户关注和互关mysql数据库设计
用户关注和互关mysql数据库设计
3. 插入数据
4. 关键查询语句
表关联与条件(FROM / JOIN / WHERE 部分)
1. 创建users表
CREATE TABLE `users` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用户唯一ID', `username` VARCHAR(50) NOT NULL COMMENT '用户名', `email` VARCHAR(100) NOT NULL COMMENT '用户邮箱', `password_hash` VARCHAR(255) NOT NULL COMMENT '密码哈希值', `avatar` VARCHAR(255) DEFAULT NULL COMMENT '用户头像URL', `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间', `updated_at` TIMESTAMP DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '信息更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_username` (`username`), -- 用户名唯一索引 UNIQUE KEY `uk_email` (`email`) -- 邮箱唯一索引 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
2. 创建follows表
CREATE TABLE `follows` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '关注记录ID', `follower_id` INT UNSIGNED NOT NULL COMMENT '关注者ID(关联users.id)', `followed_id` INT UNSIGNED NOT NULL COMMENT '被关注者ID(关联users.id)', `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '关注时间', PRIMARY KEY (`id`), -- 联合唯一索引:防止重复关注 UNIQUE KEY `uk_follow_relation` (`follower_id`, `followed_id`), -- 外键约束:确保关联的用户存在 CONSTRAINT `fk_follower` FOREIGN KEY (`follower_id`) REFERENCES `users` (`id`) ON DELETE CASCADE, CONSTRAINT `fk_followed` FOREIGN KEY (`followed_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='关注关系表';