2025-06-20 17:13:18 +08:00

109 lines
5.1 KiB
Plaintext
Raw Permalink 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 kbase DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE kbase;
-- 1. 用户基础表
CREATE TABLE IF NOT EXISTS user (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '用户ID主键',
username VARCHAR(64) NOT NULL UNIQUE COMMENT '登录用户名,唯一',
password VARCHAR(128) NOT NULL COMMENT '用户密码(建议加密存储)',
add_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) COMMENT='用户基础表';
-- 2. 角色表
CREATE TABLE IF NOT EXISTS role (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '角色ID',
role_code VARCHAR(64) NOT NULL UNIQUE COMMENT '角色编码(如 admin/user/guest',
role_name VARCHAR(64) NOT NULL COMMENT '角色名称',
add_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) COMMENT='系统角色表';
-- 3. 用户-角色关联表
CREATE TABLE IF NOT EXISTS user_role (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键',
user_id BIGINT NOT NULL COMMENT '用户ID',
role_id BIGINT NOT NULL COMMENT '角色ID',
add_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
INDEX idx_user_id(user_id),
INDEX idx_role_id(role_id),
UNIQUE KEY uk_user_role (user_id, role_id)
) COMMENT='用户与角色关联表';
-- 4. 文件表
CREATE TABLE IF NOT EXISTS file (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '文件ID',
file_name VARCHAR(255) NOT NULL COMMENT '文件名或路径',
file_path VARCHAR(512) NOT NULL COMMENT '存储路径',
add_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'
) COMMENT='知识库文件表';
-- 5. 角色-文件可见规则表(适合批量规则分配权限)
CREATE TABLE IF NOT EXISTS role_file_rule (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键',
role_id BIGINT NOT NULL COMMENT '角色ID',
file_pattern VARCHAR(255) NOT NULL COMMENT '可访问文件名/路径模式(如前缀、正则)',
remark VARCHAR(255) COMMENT '规则说明',
add_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
INDEX idx_role_id(role_id),
UNIQUE KEY uk_role_pattern (role_id, file_pattern)
) COMMENT='角色-文件可访问规则表';
-- 6. 用户token表
CREATE TABLE IF NOT EXISTS user_token (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键,自增',
user_id BIGINT NOT NULL COMMENT '用户ID业务逻辑关联user表',
token VARCHAR(128) NOT NULL UNIQUE COMMENT '用户登录token',
login_at DATETIME NOT NULL COMMENT '登录时间',
expired_at DATETIME NOT NULL COMMENT '过期时间',
add_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
INDEX idx_user_id(user_id),
INDEX idx_token(token)
) COMMENT='用户登录Token表';
-- 7. 用户-文件直接授权关联表
CREATE TABLE IF NOT EXISTS user_file (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键',
user_id BIGINT NOT NULL COMMENT '用户ID',
file_id BIGINT NOT NULL COMMENT '文件ID',
add_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
INDEX idx_user_id(user_id),
INDEX idx_file_id(file_id),
UNIQUE INDEX uniq_user_file(user_id, file_id)
) COMMENT='用户-文件直接授权关联表(用于特殊文件个别授权)';
-- 8. 对象存储上传记录表
CREATE TABLE IF NOT EXISTS oss_upload_record (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键',
file_name VARCHAR(255) NOT NULL COMMENT '文件名',
local_rela_file_path VARCHAR(512) NOT NULL DEFAULT 'UNKNOWN' COMMENT '本地文件相对路径',
searchable_status INT NOT NULL DEFAULT 0 COMMENT '可搜索状态0-初始状态1-可搜索, 2-导入失败, 99-禁止搜索'
bucket_name VARCHAR(128) NOT NULL COMMENT '目标 bucket 名',
uploader VARCHAR(128) NOT NULL COMMENT '上传人用户名',
upload_time DATETIME NOT NULL COMMENT '上传时间',
object_path VARCHAR(512) NOT NULL COMMENT 'MinIO 存储路径',
url VARCHAR(1024) COMMENT '访问链接如CDN代理后的地址',
expire_time DATETIME NOT NULL DEFAULT '9999-12-31 23:59:59' COMMENT '链接过期时间(默认永久)',
add_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
INDEX idx_uploader(uploader),
INDEX idx_file_name(file_name),
INDEX idx_bucket(bucket_name),
INDEX idx_local_rela_file_path(local_rela_file_path(100))
) COMMENT='对象存储上传记录表';