104 lines
4.7 KiB
Plaintext
104 lines
4.7 KiB
Plaintext
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 '文件名',
|
||
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代理后的地址)',
|
||
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)
|
||
) COMMENT='对象存储上传记录表';
|
||
|
||
|
||
|