Files
rxthinkcmf-wiki/RXThinkCMF_ThinkPhp6_EleVue/zh/architecture/database-design.md
T
2026-09-29 09:49:04 +08:00

23 KiB
Raw Blame History

4.9 数据库设计

:::tip 概述 项目支持 MySQL、PostgreSQL、SQL Server、Oracle、SQLite 五种数据库,通过 .env 的 DATABASE.TYPE 一键切换。所有数据库共用同一套代码,无需修改业务逻辑。本章涵盖命名规范、表结构设计、字段说明、索引策略和多数据库适配。 :::

命名规范

对象 规范 示例
表名 think_ 前缀 + 小写下划线 think_user、think_article
字段名 小写下划线 create_time、user_name
主键 统一 id,INT 自增 id INT PRIMARY KEY
外键 表名_id user_id、role_id
索引 idx_字段名 idx_status、idx_tenant_id
唯一索引 uk_字段名 uk_username

公共字段

所有业务表必须包含以下公共字段,由 BaseModel 自动维护:

-- MySQL 格式
id              INT PRIMARY KEY AUTO_INCREMENT  COMMENT '主键',
is_delete       TINYINT(1) DEFAULT 0            COMMENT '软删除 0=正常 1=已删除',
create_user     VARCHAR(50) DEFAULT ''           COMMENT '创建人',
create_time     DATETIME                         COMMENT '创建时间',
update_user     VARCHAR(50) DEFAULT ''           COMMENT '更新人',
update_time     DATETIME                         COMMENT '更新时间'
字段 自动维护方 说明
is_delete BaseModel 软删除机制 softDelete() 设置为 1,全局查询范围自动过滤
create_user BaseModel onBeforeInsert 取当前登录用户名,无用户时留空
create_time BaseModel onBeforeInsert 取当前时间,已传入则不覆盖
update_user BaseModel onBeforeUpdate 取当前登录用户名
update_time BaseModel onBeforeUpdate 始终覆盖为当前时间

核心表清单

用户与权限(6 张表)

表名 说明 Logic 基类
think_user 用户表 BaseTenantLogic
think_user_role 用户角色关联表(N:N 中间表) —
think_role 角色表 BaseLogic
think_role_menu 角色菜单关联表(N:N 中间表) —
think_menu 菜单/权限表 BaseLogic
think_dept 部门表(树形) BaseTenantLogic

关联关系:

think_user ──┐
             │ N:N (think_user_role)
think_role ──┤
             │ N:N (think_role_menu)
think_menu ──┘

think_dept ←── think_user.dept_id
think_tenant ←── think_user.tenant_id

组织架构(3 张表)

表名 说明 Logic 基类
think_dept 部门表(树形,parent_id) BaseTenantLogic
think_position 岗位表 BaseTenantLogic
think_level 职级表 BaseTenantLogic

租户(1 张表)

表名 说明 Logic 基类
think_tenant 租户表 BaseLogic

系统配置(5 张表)

表名 说明 Logic 基类
think_dict 字典表 BaseLogic
think_dict_item 字典项表 BaseLogic
think_config 配置组表 BaseLogic
think_config_item 配置项表 BaseLogic
think_param 系统参数表 BaseLogic

关联关系:

think_dict ←── think_dict_item.dict_id
think_config ←── think_config_item.config_id

内容管理(4 张表)

表名 说明 Logic 基类
think_article 文章表 BaseTenantLogic
think_category 文章分类表(树形) BaseTenantLogic
think_link 友情链接表 BaseTenantLogic
think_notice 通知公告表 BaseTenantLogic

日志审计(2 张表)

表名 说明 Logic 基类
think_login_log 登录日志表 BaseLogic
think_operation_log 操作日志表 BaseLogic

定时任务(2 张表)

表名 说明 Logic 基类
think_job 定时任务表 BaseLogic
think_job_log 定时任务执行日志表 BaseLogic

关联关系:

think_job ←── think_job_log.job_id

基础数据(2 张表)

表名 说明 Logic 基类
think_city 城市行政区划表(树形,pid) BaseLogic
think_file_template 文件模板表 BaseLogic

共计 25 张业务表(不含中间表)。

关键表字段说明

think_user(用户表)

字段 类型 说明
id INT 主键
username VARCHAR(50) 用户名(登录账号)
password VARCHAR(255) 密码(bcrypt 加密)
salt VARCHAR(50) 密码盐值
realname VARCHAR(50) 姓名
gender TINYINT 性别(字典 gender)
mobile VARCHAR(20) 手机号
email VARCHAR(100) 邮箱
avatar VARCHAR(500) 头像路径
status TINYINT 状态(字典 user_status)
dept_id INT 部门 ID
level_id INT 职级 ID
position_id INT 岗位 ID
tenant_id INT 租户 ID
province_code VARCHAR(20) 省编码
city_code VARCHAR(20) 市编码
district_code VARCHAR(20) 区编码
street_code VARCHAR(20) 街道编码
city_info VARCHAR(200) 城市名称拼接
is_delete TINYINT(1) 软删除
create_user VARCHAR(50) 创建人
create_time DATETIME 创建时间
update_user VARCHAR(50) 更新人
update_time DATETIME 更新时间

think_role(角色表)

字段 类型 说明
id INT 主键
name VARCHAR(50) 角色名称
code VARCHAR(50) 角色编码
data_scope TINYINT 数据权限范围:1=全部 2=本部门 3=仅本人
status TINYINT 状态
remark VARCHAR(500) 备注
sort INT 排序
... 公共字段

think_menu(菜单/权限表)

字段 类型 说明
id INT 主键
parent_id INT 父级 ID(0=顶级)
name VARCHAR(50) 菜单名称
permission VARCHAR(100) 权限标识(如 sys:user:add)
type TINYINT 类型:0=目录 1=菜单 2=按钮
path VARCHAR(200) 路由路径
icon VARCHAR(100) 图标
sort INT 排序
status TINYINT 状态
remark VARCHAR(500) 备注
... 公共字段

think_tenant(租户表)

字段 类型 说明
id INT 主键
name VARCHAR(100) 租户名称
code VARCHAR(50) 租户编码(系统自动生成:T+4位ID)
status TINYINT 状态(字典 tenant_status):0=禁用 1=启用
expire_time DATETIME 过期时间
max_user_num INT 最大用户数限制
contact_name VARCHAR(50) 联系人
contact_phone VARCHAR(20) 联系电话
remark VARCHAR(500) 备注
... 公共字段

think_article(文章表)

字段 类型 说明
id INT 主键
title VARCHAR(200) 标题
category_id INT 分类 ID
cover VARCHAR(500) 封面图路径
content TEXT 内容(富文本,含 [IMG_URL] 占位符)
author VARCHAR(50) 作者
status TINYINT 状态(字典 article_status):0=正常 1=下架
sort INT 排序
tenant_id INT 租户 ID
... 公共字段

索引策略

推荐索引

-- 用户表:高频查询字段
ALTER TABLE think_user ADD INDEX idx_username (username);
ALTER TABLE think_user ADD INDEX idx_tenant_id (tenant_id);
ALTER TABLE think_user ADD INDEX idx_dept_id (dept_id);
ALTER TABLE think_user ADD INDEX idx_status (status);

-- 角色关联表:外键索引
ALTER TABLE think_user_role ADD INDEX idx_user_id (user_id);
ALTER TABLE think_user_role ADD INDEX idx_role_id (role_id);
ALTER TABLE think_role_menu ADD INDEX idx_role_id (role_id);
ALTER TABLE think_role_menu ADD INDEX idx_menu_id (menu_id);

-- 文章表:常用过滤字段
ALTER TABLE think_article ADD INDEX idx_category_id (category_id);
ALTER TABLE think_article ADD INDEX idx_status (status);
ALTER TABLE think_article ADD INDEX idx_tenant_id (tenant_id);

-- 日志表:按时间查询
ALTER TABLE think_login_log ADD INDEX idx_create_time (create_time);
ALTER TABLE think_operation_log ADD INDEX idx_create_time (create_time);
ALTER TABLE think_job_log ADD INDEX idx_job_id (job_id);

-- 菜单表:树形查询
ALTER TABLE think_menu ADD INDEX idx_parent_id (parent_id);

-- 字典项表:按字典 ID 查询
ALTER TABLE think_dict_item ADD INDEX idx_dict_id (dict_id);
ALTER TABLE think_config_item ADD INDEX idx_config_id (config_id);

-- 城市表:按编码查询
ALTER TABLE think_city ADD INDEX idx_area_code (area_code);
ALTER TABLE think_city ADD INDEX idx_parent_code (parent_code);
ALTER TABLE think_city ADD INDEX idx_pid (pid);

索引设计原则

原则 说明
外键必加 所有 _id 外键字段都应加索引
过滤字段 pageEqFields 中配置的精确匹配字段应加索引
模糊搜索 pageLikeFields 中的字段可考虑全文索引,但 LIKE '%xx%' 无法用普通索引
排序字段 pageOrderBy 中的默认排序字段可加索引
时间字段 日志表的 create_time 必加索引(按时间范围查询)

多数据库支持

支持的数据库

数据库 type 值 默认端口 默认用户 PHP 扩展
MySQL mysql 3306 root pdo_mysql
PostgreSQL pgsql 5432 postgres pdo_pgsql
SQL Server sqlsrv 1433 sa pdo_sqlsrv
Oracle oracle 1521 - pdo_oci
SQLite sqlite - - pdo_sqlite

切换数据库

只需修改 .env 文件,无需改动任何代码:

::: code-group

[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = rxthinkcmf.thinkphp6.elevue
USERNAME = root
PASSWORD = root
HOSTPORT = 3306
[DATABASE]
TYPE = pgsql
HOSTNAME = 127.0.0.1
DATABASE = rxthinkcmf.thinkphp6.elevue
USERNAME = postgres
PASSWORD = root
HOSTPORT = 5432
[DATABASE]
TYPE = sqlsrv
HOSTNAME = 127.0.0.1
DATABASE = rxthinkcmf.thinkphp6.elevue
USERNAME = sa
PASSWORD = root
HOSTPORT = 1433
[DATABASE]
TYPE = oracle
HOSTNAME = 127.0.0.1
DATABASE = rxthinkcmf.thinkphp6.elevue
USERNAME = root
PASSWORD = root
HOSTPORT = 1521
[DATABASE]
TYPE = sqlite
DATABASE = /www/api/runtime/database.sqlite

:::

配置文件结构

// config/database.php
return [
    'default' => env('database.type', 'mysql'),
    'connections' => [
        'mysql'  => [...],
        'pgsql'  => [...],
        'sqlsrv' => [...],
        'oracle' => [...],
        'sqlite' => [...],
    ],
];

字段类型映射

通用类型 MySQL PostgreSQL SQL Server Oracle SQLite
自增主键 INT AUTO_INCREMENT SERIAL INT IDENTITY NUMBER + 序列 INTEGER PRIMARY KEY
字符串 VARCHAR(n) VARCHAR(n) NVARCHAR(n) VARCHAR2(n) TEXT
文本 TEXT TEXT NVARCHAR(MAX) CLOB TEXT
布尔 TINYINT(1) BOOLEAN BIT NUMBER(1) INTEGER
日期时间 DATETIME TIMESTAMP DATETIME2 TIMESTAMP TEXT
小数 DECIMAL(m,n) NUMERIC(m,n) DECIMAL(m,n) NUMBER(m,n) REAL

:::tip 业务代码零修改 ThinkPHP 的 ORM 层会自动处理大部分 SQL 差异,切换数据库只需修改 .env 中的 DATABASE.TYPE,业务代码无需任何修改。 :::

各数据库安装与配置

项目支持五种数据库,按需选择一种即可。

数据库 推荐场景 难度 XAMPP 自带 说明
MySQL 日常开发、中小项目 ⭐ 低 ✅ 是 默认推荐,开箱即用
PostgreSQL 需要 JSONB、全文检索 ⭐⭐ 中 ❌ 否 功能丰富,需单独安装
SQLite 快速演示、单元测试 ⭐ 低 ✅ 是 无需数据库服务,零配置
SQL Server 企业 Windows 环境 ⭐⭐ 中 驱动自带 需单独安装数据库服务
Oracle 大型企业项目 ⭐⭐⭐ 高 驱动自带 需安装 Instant Client

::: tip 新手推荐 XAMPP 已集成 MySQL 数据库服务,安装 XAMPP 后无需再单独安装数据库。 :::

MySQL 数据库

MySQL 是项目默认推荐的关系型数据库,XAMPP 已自带,开箱即用。

::: code-group

# XAMPP 已自带 MySQL,无需额外安装
# 在 XAMPP 控制面板启动 MySQL 即可

# 确认扩展已启用(编辑 D:\xampp8.2\php\php.ini):
#   extension=pdo_mysql
# 若前面有分号则去掉,保存后重启 XAMPP

# 创建数据库
D:\xampp8.2\mysql\bin\mysql.exe -u root -proot -e "CREATE DATABASE `rxthinkcmf.thinkphp6.elevue` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
brew install mysql
brew services start mysql
sudo mysql_secure_installation

# 创建数据库
mysql -u root -proot -e "CREATE DATABASE `rxthinkcmf.thinkphp6.elevue` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
sudo apt install mysql-server
sudo systemctl start mysql
sudo systemctl enable mysql
sudo mysql_secure_installation

# 创建数据库
mysql -u root -proot -e "CREATE DATABASE `rxthinkcmf.thinkphp6.elevue` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
sudo dnf install mysql-server
sudo systemctl start mysqld
sudo systemctl enable mysqld
sudo mysql_secure_installation

# 创建数据库
mysql -u root -proot -e "CREATE DATABASE `rxthinkcmf.thinkphp6.elevue` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"

:::

PostgreSQL 数据库

PostgreSQL 功能强大,支持 JSONB、全文检索等高级特性,需单独安装。

::: code-group

# 安装 PostgreSQL
# 访问 https://www.postgresql.org/download/windows/ 下载安装包
# 安装过程中记住设置的密码

# 确认扩展已启用(编辑 D:\xampp8.2\php\php.ini):
#   extension=pdo_pgsql
#   extension=pgsql
# 若前面有分号则去掉,保存后重启 XAMPP

# 设置 postgres 密码(首次)
psql -U postgres -c "ALTER USER postgres WITH PASSWORD 'root';"

# 创建数据库
psql -U postgres -c "CREATE DATABASE \"rxthinkcmf.thinkphp6.elevue\" OWNER postgres ENCODING 'UTF8';"
brew install postgresql
brew services start postgresql

# 设置 postgres 密码
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'root';"

# 创建数据库
sudo -u postgres psql -c "CREATE DATABASE \"rxthinkcmf.thinkphp6.elevue\" OWNER postgres ENCODING 'UTF8';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE \"rxthinkcmf.thinkphp6.elevue\" TO postgres;"
sudo apt install postgresql postgresql-contrib
sudo systemctl start postgresql

# 设置 postgres 密码
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'root';"

# 创建数据库
sudo -u postgres psql -c "CREATE DATABASE \"rxthinkcmf.thinkphp6.elevue\" OWNER postgres ENCODING 'UTF8';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE \"rxthinkcmf.thinkphp6.elevue\" TO postgres;"
sudo dnf install postgresql-server
sudo postgresql-setup --initdb
sudo systemctl start postgresql

# 设置 postgres 密码
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'root';"

# 创建数据库
sudo -u postgres psql -c "CREATE DATABASE \"rxthinkcmf.thinkphp6.elevue\" OWNER postgres ENCODING 'UTF8';"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE \"rxthinkcmf.thinkphp6.elevue\" TO postgres;"

:::

SQLite 数据库

SQLite 无需安装数据库服务器,数据存储在单个文件中,适合开发环境和小型项目。

::: code-group

# XAMPP 已自带 SQLite 扩展,无需额外安装
# 只需创建数据库文件
mkdir D:\xampp\htdocs\runtime
echo. > D:\xampp\htdocs\runtime\database.sqlite

# 确认扩展已启用(编辑 D:\xampp8.2\php\php.ini):
#   extension=pdo_sqlite
#   extension=sqlite3
# 若前面有分号则去掉,保存后重启 XAMPP

# .env 配置
# DATABASE.TYPE = sqlite
# DATABASE.DATABASE = D:/xampp8.2/htdocs/runtime/database.sqlite
brew install php sqlite

# 创建数据库文件
mkdir -p /www/api/runtime
touch /www/api/runtime/database.sqlite
sudo apt install php8.2-sqlite3

# 创建数据库文件
mkdir -p /www/api/runtime
touch /www/api/runtime/database.sqlite
sudo dnf install php-sqlite3

# 创建数据库文件
mkdir -p /www/api/runtime
touch /www/api/runtime/database.sqlite

:::

SQL Server 数据库

SQL Server 是微软商业数据库,XAMPP 已自带 pdo_sqlsrv 驱动,Windows 下开箱即用。

::: code-group

# SQL Server 需单独安装(XAMPP 不自带数据库服务,但自带 PHP 驱动)
# 1. 下载安装 SQL Server Express:https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads
# 2. XAMPP 已自带 pdo_sqlsrv 扩展,在 php.ini 中启用:
#    extension=php_sqlsrv_82_ts_x64.dll
#    extension=php_pdo_sqlsrv_82_ts_x64.dll

# 创建数据库
sqlcmd -S localhost -U sa -P root -Q "CREATE DATABASE [rxthinkcmf.thinkphp6.elevue] COLLATE Chinese_PRC_CI_AS"
# macOS 不原生支持 SQL Server,建议使用 Docker
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=root" \
  -p 1433:1433 --name sqlserver \
  -d mcr.microsoft.com/mssql/server:2022-latest

# 安装 PHP 扩展
pecl install pdo_sqlsrv

# 创建数据库
sqlcmd -S localhost -U sa -P root -Q "CREATE DATABASE [rxthinkcmf.thinkphp6.elevue] COLLATE Chinese_PRC_CI_AS"
# 1. 安装 SQL Server
curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list)"
sudo apt update
sudo apt install -y mssql-server
sudo /opt/mssql/bin/mssql-conf setup

# 2. 安装命令行工具
sudo apt install -y mssql-tools18
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc

# 3. 安装 PHP 扩展
sudo pecl install pdo_sqlsrv
echo "extension=pdo_sqlsrv.so" | sudo tee /etc/php/8.2/mods-available/pdo_sqlsrv.ini
sudo phpenmod pdo_sqlsrv

# 创建数据库
sqlcmd -S localhost -U sa -P root -Q "CREATE DATABASE [rxthinkcmf.thinkphp6.elevue] COLLATE Chinese_PRC_CI_AS"
# 1. 安装 SQL Server
sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2022.repo
sudo dnf install -y mssql-server
sudo /opt/mssql/bin/mssql-conf setup

# 2. 安装命令行工具
sudo curl -o /etc/yum.repos.d/msprod.repo https://packages.microsoft.com/config/rhel/8/prod.repo
sudo dnf install -y mssql-tools18
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc

# 3. 安装 PHP 扩展
sudo pecl install pdo_sqlsrv
echo "extension=pdo_sqlsrv.so" | sudo tee /etc/php.d/pdo_sqlsrv.ini

# 创建数据库
sqlcmd -S localhost -U sa -P root -Q "CREATE DATABASE [rxthinkcmf.thinkphp6.elevue] COLLATE Chinese_PRC_CI_AS"

:::

Oracle 数据库

Oracle 是企业级商业数据库,需手动安装 Instant Client 和 pdo_oci 扩展。

::: code-group

# XAMPP 已自带 php_pdo_oci.dll,只需安装 Oracle Instant Client 并在 php.ini 中启用

# 1. 安装 Oracle Instant Client
#    下载地址:https://www.oracle.com/database/technologies/instant-client/downloads.html
#    选择 Basic Package,x64,推荐 19c
#    解压到 C:\oracle\instantclient_19_20(⚠️ 避免空格与中文)

# 2. 配置系统环境变量
#    将 C:\oracle\instantclient_19_20 添加到系统 PATH

# 3. 安装 VC++ 运行库(必装)
#    下载:https://aka.ms/vc14/vc_redist.x64.exe

# 4. 启用扩展
#    编辑 D:\xampp8.2\php\php.ini,去掉分号:
#    extension=pdo_oci

# 5. 重启 XAMPP(完全关闭再启动)

# .env 配置
# DATABASE.TYPE = oracle
# DATABASE.HOSTNAME = 127.0.0.1
# DATABASE.DATABASE = rxthinkcmf.thinkphp6.elevue
# DATABASE.USERNAME = root
# DATABASE.PASSWORD = root
# DATABASE.HOSTPORT = 1521
# Oracle 不原生支持 macOS,建议使用 Docker
docker run -d --name oracle-xe -p 1521:1521 \
  -e ORACLE_PWD=root \
  gvenzl/oracle-xe:21-slim

# 安装 PHP 扩展
pecl install pdo_oci
# 1. 安装 Oracle Database
sudo dpkg -i oracle-database-xe-21c-1.0-1.x86_64.deb
sudo /etc/init.d/oracle-xe-21c configure

# 2. 安装 Oracle Instant Client
sudo dpkg -i oracle-instantclient-basic-*.deb
sudo dpkg -i oracle-instantclient-devel-*.deb

# 3. 安装 PHP 扩展
sudo pecl install pdo_oci
echo "extension=pdo_oci.so" | sudo tee /etc/php/8.2/mods-available/pdo_oci.ini
sudo phpenmod pdo_oci

# 4. 创建表空间和用户
sqlplus system/root@localhost:1521/XE <<EOF
CREATE TABLESPACE "rxthinkcmf_thinkphp6_elevue" DATAFILE '/opt/oracle/oradata/XE/rxthinkcmf_thinkphp6_elevue.dbf' SIZE 100M AUTOEXTEND ON NEXT 100M;
CREATE USER "root" IDENTIFIED BY "root" DEFAULT TABLESPACE "rxthinkcmf_thinkphp6_elevue";
GRANT CONNECT, RESOURCE, CREATE VIEW TO "root";
GRANT UNLIMITED TABLESPACE TO "root";
EXIT;
EOF
# 1. 安装 Oracle Database
sudo rpm -ivh oracle-database-xe-21c-1.0-1.x86_64.rpm
sudo /etc/init.d/oracle-xe-21c configure

# 2. 安装 Oracle Instant Client
sudo rpm -ivh oracle-instantclient-basic-*.rpm
sudo rpm -ivh oracle-instantclient-devel-*.rpm

# 3. 安装 PHP 扩展
sudo pecl install pdo_oci
echo "extension=pdo_oci.so" | sudo tee /etc/php/8.2/mods-available/pdo_oci.ini
sudo phpenmod pdo_oci

# 4. 创建表空间和用户
sqlplus system/root@localhost:1521/XE <<EOF
CREATE TABLESPACE "rxthinkcmf_thinkphp6_elevue" DATAFILE '/opt/oracle/oradata/XE/rxthinkcmf_thinkphp6_elevue.dbf' SIZE 100M AUTOEXTEND ON NEXT 100M;
CREATE USER "root" IDENTIFIED BY "root" DEFAULT TABLESPACE "rxthinkcmf_thinkphp6_elevue";
GRANT CONNECT, RESOURCE, CREATE VIEW TO "root";
GRANT UNLIMITED TABLESPACE TO "root";
EXIT;
EOF

:::

SQL 脚本

项目为每种数据库提供了独立的 SQL 脚本,存放在 document/ 目录下按数据库类型分组:

document/
├── mysql/
│   └── rxthinkcmf.thinkphp6.elevue.sql      # MySQL 版本
├── postgresql/
│   └── rxthinkcmf.thinkphp6.elevue.sql      # PostgreSQL 版本
├── sqlserver/
│   └── rxthinkcmf.thinkphp6.elevue.sql      # SQL Server 版本
├── oracle/
│   └── rxthinkcmf.thinkphp6.elevue.sql      # Oracle 版本
└── sqlite/
    └── rxthinkcmf.thinkphp6.elevue.sql      # SQLite 版本

各数据库脚本包含完整的表结构定义和初始数据(用户、角色、菜单、字典、城市行政区划等),已针对各数据库的 SQL 语法做了适配,可直接导入使用。

导入方法详见 2.4 数据库初始化。

慢查询排查

# MySQL my.cnf
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2

:::warning 注意 项目所有查询都通过 ThinkPHP ORM 构建,不会出现原生 SQL 注入。如需排查慢查询,建议开启数据库慢查询日志,而非在代码层面埋点。 :::