smile-picture-backend/sql/create_table.sql

117 lines
6.5 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 创建库
create database if not exists `smile-picture`;
-- 使用库
use `smile-picture`;
-- 用户表
create table if not exists user
(
id bigint auto_increment comment 'id' primary key,
user_account varchar(256) not null comment '账号',
user_password varchar(512) not null comment '密码',
user_name varchar(256) null comment '用户昵称',
user_avatar varchar(1024) null comment '用户头像',
user_profile varchar(512) null comment '用户简介',
user_role varchar(256) default 'user' not null comment '用户角色user/admin',
edit_time datetime default CURRENT_TIMESTAMP not null comment '编辑时间',
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
update_time datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
is_delete tinyint default 0 not null comment '是否删除',
UNIQUE KEY uk_userAccount (user_account),
INDEX idx_userName (user_name)
) comment '用户' collate = utf8mb4_unicode_ci;
-- 图片表
create table if not exists picture
(
id bigint auto_increment comment 'id' primary key,
url varchar(512) not null comment '图片 url',
name varchar(128) not null comment '图片名称',
introduction varchar(512) null comment '简介',
category varchar(64) null comment '分类',
tags varchar(512) null comment '标签JSON 数组)',
pic_size bigint null comment '图片体积',
pic_width int null comment '图片宽度',
pic_height int null comment '图片高度',
pic_scale double null comment '图片宽高比例',
pic_format varchar(32) null comment '图片格式',
user_id bigint not null comment '创建用户 id',
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
edit_time datetime default CURRENT_TIMESTAMP not null comment '编辑时间',
update_time datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
is_delete tinyint default 0 not null comment '是否删除',
INDEX idx_name (name), -- 提升基于图片名称的查询性能
INDEX idx_introduction (introduction), -- 用于模糊搜索图片简介
INDEX idx_category (category), -- 提升基于分类的查询性能
INDEX idx_tags (tags), -- 提升基于标签的查询性能
INDEX idx_userId (user_id) -- 提升基于用户 ID 的查询性能
) comment '图片' collate = utf8mb4_unicode_ci;
ALTER TABLE picture
-- 添加新列
ADD COLUMN review_status INT DEFAULT 0 NOT NULL COMMENT '审核状态0-待审核; 1-通过; 2-拒绝',
ADD COLUMN review_message VARCHAR(512) NULL COMMENT '审核信息',
ADD COLUMN reviewer_id BIGINT NULL COMMENT '审核人 ID',
ADD COLUMN review_time DATETIME NULL COMMENT '审核时间';
-- 创建基于 reviewStatus 列的索引
CREATE INDEX idx_reviewStatus ON picture (review_status);
ALTER TABLE picture
-- 添加新列
ADD COLUMN original_url varchar(512) NULL COMMENT '原图 url',
ADD COLUMN thumbnail_url varchar(512) NULL COMMENT '缩略图 url';
-- 空间表
create table if not exists space
(
id bigint auto_increment comment 'id' primary key,
space_name varchar(128) null comment '空间名称',
space_level int default 0 null comment '空间级别0-普通版 1-专业版 2-旗舰版',
max_size bigint default 0 null comment '空间图片的最大总大小',
max_count bigint default 0 null comment '空间图片的最大数量',
total_size bigint default 0 null comment '当前空间下图片的总大小',
total_count bigint default 0 null comment '当前空间下的图片数量',
user_id bigint not null comment '创建用户 id',
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
edit_time datetime default CURRENT_TIMESTAMP not null comment '编辑时间',
update_time datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
is_delete tinyint default 0 not null comment '是否删除',
-- 索引设计
index idx_userId (user_id), -- 提升基于用户的查询效率
index idx_spaceName (space_name), -- 提升基于空间名称的查询效率
index idx_spaceLevel (space_level) -- 提升按空间级别查询的效率
) comment '空间' collate = utf8mb4_unicode_ci;
-- 添加新列
ALTER TABLE picture
ADD COLUMN space_id bigint null comment '空间 id为空表示公共空间';
-- 创建索引
CREATE INDEX idx_spaceId ON picture (space_id);
-- 添加新列
ALTER TABLE picture
ADD COLUMN pic_color varchar(16) null comment '图片主色调';
-- 支持空间类型,添加新列
ALTER TABLE space
ADD COLUMN space_type int default 0 not null comment '空间类型0-私有 1-团队';
CREATE INDEX idx_spaceType ON space (space_type);
-- 空间成员表
create table if not exists space_user
(
id bigint auto_increment comment 'id' primary key,
space_id bigint not null comment '空间 id',
user_id bigint not null comment '用户 id',
space_role varchar(128) default 'viewer' null comment '空间角色viewer/editor/admin',
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',
update_time datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间',
-- 索引设计
UNIQUE KEY uk_spaceId_userId (space_id, user_id), -- 唯一索引,用户在一个空间中只能有一个角色
INDEX idx_spaceId (space_id), -- 提升按空间查询的性能
INDEX idx_userId (user_id) -- 提升按用户查询的性能
) comment '空间用户关联' collate = utf8mb4_unicode_ci;