67 lines
3.6 KiB
SQL
67 lines
3.6 KiB
SQL
-- 用户主表 (移除外键约束)
|
||
CREATE TABLE `user` (
|
||
`user_id` BIGINT UNSIGNED NOT NULL PRIMARY KEY COMMENT '用户ID(雪花ID)',
|
||
`status` TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '状态:0=正常 1=禁用',
|
||
`user_type` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '用户类型:0=一般用户 1=root',
|
||
`user_role` INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '用户角色:0默认角色',
|
||
`username` VARCHAR(50) NOT NULL COMMENT '唯一用户名',
|
||
`email` VARCHAR(320) NOT NULL COMMENT '邮箱',
|
||
`nickname` VARCHAR(50) NOT NULL DEFAULT '' COMMENT '昵称',
|
||
`gender` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '性别:0=未知 1=男 2=女',
|
||
`birthdate` DATE NULL DEFAULT NULL COMMENT '出生年月',
|
||
`address` VARCHAR(255) NULL DEFAULT '' COMMENT '地址',
|
||
`avatar` VARCHAR(255) NULL DEFAULT '' COMMENT '头像URL',
|
||
`background_image` VARCHAR(255) NULL DEFAULT '' COMMENT '背景图URL',
|
||
`created_by` ENUM('SELF','ADMIN') NOT NULL COMMENT '创建方式:SELF=自注册 ADMIN=管理员添加',
|
||
`created_at` DATETIME(3) NOT NULL DEFAULT (CURRENT_TIMESTAMP) COMMENT '创建时间(毫秒精度)',
|
||
`updated_at` DATETIME(3) NOT NULL DEFAULT (CURRENT_TIMESTAMP) COMMENT '最后更新时间',
|
||
`username_updated_at` DATETIME(3) NULL DEFAULT NULL COMMENT '用户名修改时间',
|
||
`is_deleted` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '软删除标记:0=正常 1=已删除',
|
||
`deleted_at` DATETIME(3) NULL DEFAULT NULL COMMENT '删除时间',
|
||
|
||
-- 唯一索引确保数据完整性
|
||
UNIQUE INDEX `idx_unique_username` (`username`),
|
||
-- 复合唯一索引实现删除后邮箱可重用
|
||
UNIQUE INDEX `idx_unique_active_email` (`email`, `is_deleted`),
|
||
-- 时间索引优化查询
|
||
INDEX `idx_created_at` (`created_at`),
|
||
INDEX `idx_email` (`email`),
|
||
INDEX `idx_status` (`status`),
|
||
INDEX `idx_user_type` (`user_type`),
|
||
INDEX `idx_username_updated` (`username_updated_at`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户主表';
|
||
|
||
-- 个人简介表 (移除外键)
|
||
CREATE TABLE `user_profile` (
|
||
`user_id` BIGINT UNSIGNED NOT NULL PRIMARY KEY COMMENT '用户ID',
|
||
`profile` MEDIUMTEXT NOT NULL COMMENT '简介内容',
|
||
`created_at` DATETIME(3) NOT NULL DEFAULT (CURRENT_TIMESTAMP) COMMENT '创建时间',
|
||
`updated_at` DATETIME(3) NOT NULL DEFAULT (CURRENT_TIMESTAMP) COMMENT '最后更新时间',
|
||
|
||
-- 添加索引优化关联查询
|
||
INDEX `idx_user_id` (`user_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户简介表';
|
||
|
||
-- 密码表 (移除外键)
|
||
CREATE TABLE `user_password` (
|
||
`user_id` BIGINT UNSIGNED NOT NULL PRIMARY KEY COMMENT '用户ID',
|
||
`password_hash` VARCHAR(128) NOT NULL COMMENT '加密密码(argon2格式)',
|
||
`previous_password_hash` VARCHAR(128) NULL DEFAULT NULL COMMENT '前次密码',
|
||
`last_updated_at` DATETIME(3) NOT NULL DEFAULT (CURRENT_TIMESTAMP) COMMENT '最后修改时间',
|
||
|
||
-- 添加索引
|
||
INDEX `idx_user_id` (`user_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户密码表';
|
||
|
||
-- 个性签名历史表 (移除外键)
|
||
CREATE TABLE `user_signature_history` (
|
||
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '记录ID',
|
||
`user_id` BIGINT UNSIGNED NOT NULL COMMENT '用户ID',
|
||
`signature` VARCHAR(100) NOT NULL COMMENT '签名内容',
|
||
`signature_tag` VARCHAR(100) NOT NULL COMMENT '签名标签',
|
||
`created_at` DATETIME(3) NOT NULL DEFAULT (CURRENT_TIMESTAMP) COMMENT '创建时间',
|
||
|
||
-- 优化用户签名查询
|
||
INDEX `idx_user_created` (`user_id`, `created_at` DESC),
|
||
INDEX `idx_user_id` (`user_id`)
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='签名历史表'; |