002 SaaS点餐系统多租户数据隔离方案
2025/12/19大约 2 分钟
002 SaaS点餐系统多租户数据隔离方案
前言
上一篇文章中,介绍了咱们的SaaS点餐系统的整体功能和相关的规划。
SaaS系统中有一个难点就是数据隔离方案。
今天这篇文章就跟大家一起聊聊咱们的SaaS点餐系统的多租户数据隔离方案。
1. 业务模型分析
1.1 租户类型定义

目前咱们SaaS点餐系统包含了两种商家:
- 小商户
- 连锁店
小商户只有一个门店。
连锁店包含多个门店,比如:肯德基。
1.2 租户层级关系
| 层级 | 小商户模式 | 连锁店模式 |
|---|---|---|
| 平台层 | SaaS平台 | SaaS平台 |
| 租户层 | 小商户租户 | 连锁店租户(品牌) |
| 门店层 | 单一门店 | 多个门店 |
| 用户层 | 管理员+店员 | 总部管理员+门店管理员+店员 |
2. 数据隔离策略设计
2.1 整体架构图

2.2 数据隔离策略对比
| 隔离方案 | 小商户适用性 | 连锁店适用性 | 成本 | 性能 | 安全性 | 扩展性 |
|---|---|---|---|---|---|---|
| Schema隔离 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | 低 | 中 | 中 | 高 |
| Database隔离 | ⭐⭐ | ⭐⭐⭐⭐⭐ | 高 | 高 | 高 | 中 |
| Table隔离 | ⭐⭐⭐ | ⭐⭐ | 中 | 低 | 低 | 低 |
| Row隔离 | ⭐⭐ | ⭐ | 低 | 低 | 低 | 低 |
2.3 隔离策略

小商户采用Schema隔离方案。
连锁店采用数据库隔离方案。
3. 连锁店门店与商户关系设计
3.1 连锁店数据模型

一个租户拥有一个或多个品牌。
一个品牌包含了一个或多个门店。
每个门店都包含了用户、菜单、订单等信息。
3.2 小商户与连锁店对比
| 维度 | 小商户 | 连锁店 |
|---|---|---|
| 组织结构 | 租户 = 门店 | 租户 = 品牌 > 门店 |
| 管理层级 | 单层管理 | 多层管理(总部+门店) |
| 数据范围 | 单店数据 | 全品牌数据 |
| 权限控制 | 店内权限 | 跨店权限+店内权限 |
| 配置管理 | 门店级配置 | 品牌级+门店级配置 |
| 报表统计 | 单店报表 | 品牌汇总+门店明细 |
4. 权限控制设计
4.1 权限层级图

4.2 权限矩阵
| 功能模块 | 小商户管理员 | 连锁店超管 | 品牌管理员 | 门店管理员 | 收银员 |
|---|---|---|---|---|---|
| 租户配置 | ✅ | ✅ | ❌ | ❌ | ❌ |
| 品牌管理 | N/A | ✅ | ✅ | ❌ | ❌ |
| 门店管理 | ✅ | ✅ | ✅ | ✅ | ❌ |
| 菜品管理 | ✅ | ✅ | ✅ | ✅ | ❌ |
| 订单管理 | ✅ | ✅ | ✅ | ✅ | ✅ |
| 财务报表 | ✅ | ✅ | ✅ | ✅ | ❌ |
| 跨店报表 | N/A | ✅ | ✅ | ❌ | ❌ |