Appearance
实体关系设计
**本文引用的文件** - [决策变更清单.md](file://决策变更清单.md) - [待确认决策清单.md](file://待确认决策清单.md) - [承兑平台产品方案文档.md](file://承兑平台产品方案文档.md) - [综合审查报告.md](file://综合审查报告.md) - [任务和测试过程\Readme.md](file://任务和测试过程/Readme.md) - [AI沟通记录\2026-06-04-Chat.md](file://AI沟通记录/2026-06-04-Chat.md) - [提示词.txt](file://提示词.txt)目录
简介
本文件面向“承兑平台”的实体关系设计,目标是基于决策变更清单中的关系定义,系统化阐述核心实体之间的一对一、一对多、多对多关系,明确引用完整性约束、级联操作规则、外键设计原则,并给出关系表与连接表的结构建议、业务含义、查询优化与索引策略、维护规则与一致性保障、异常处理机制。文档同时提供ER图、关系图与数据流图,帮助技术与非技术读者理解平台的数据模型与运行机制。
项目结构
项目以文档为中心,围绕产品方案、决策清单、原型与沟通记录组织内容。实体关系设计的依据主要来自:
- 产品方案文档:定义角色、流程、约束与关键配置项
- 决策变更清单:记录已确认的关系与约束变更
- 待确认决策清单:列出仍需明确的关系与约束
- 综合审查报告:补充风险与约束视角
- 原型与沟通记录:辅助理解业务场景与交互
mermaid
graph TB
A["产品方案文档<br/>定义角色/流程/约束"] --> C["决策变更清单<br/>确认关系与约束"]
B["待确认决策清单<br/>待明确的关系与约束"] --> C
C --> D["实体关系设计<br/>ER/关系/数据流图"]
E["综合审查报告<br/>风险与约束视角"] --> D
F["Axure原型/沟通记录<br/>业务场景与交互"] --> D章节来源
- [任务和测试过程/Readme.md:1-3](file://任务和测试过程/Readme.md#L1-L3)
- [AI沟通记录/2026-06-04-Chat.md:8-12](file://AI沟通记录/2026-06-04-Chat.md#L8-L12)
核心组件
围绕承兑平台的关键角色与业务对象,可抽象出如下核心实体及其职责:
- 用户(终端用户)
- 交易员
- 商户
- 商户介绍人
- 订单
- 银行卡
- 资金流水
- 配置项(汇率、手续费、点差、限额等)
这些实体在产品方案中被反复提及,彼此通过订单、支付、分成、约束等关系产生联系。例如:
- 交易员与商户存在“接单/分成/结算”关系
- 用户与订单存在“下单/支付/回执”关系
- 银行卡与资金流水存在“出入金”关系
- 配置项驱动交易员与商户的定价与费用策略
章节来源
- [提示词.txt:21-67](file://提示词.txt#L21-L67)
- [承兑平台产品方案文档.md:825,1007,1014,1130,1318,1432,1605,1785,2039,2189,2422,2585,2882,3168,3673,4210,4232,4257](file://承兑平台产品方案文档.md#L825,L1007,L1014,L1130,L1318,L1432,L1605,L1785,L2039,L2189,L2422,L2585,L2882,L3168,L3673,L4210,L4232,L4257)
架构总览
下图展示核心实体之间的高层关系与数据流向。该图为概念性视图,用于帮助理解整体数据模型与交互边界。
mermaid
graph TB
subgraph "角色层"
U["用户"]
TR["交易员"]
M["商户"]
MR["商户介绍人"]
end
subgraph "业务对象层"
O["订单"]
B["银行卡"]
FS["资金流水"]
CFG["配置项"]
end
U --> O
TR --> O
M --> O
MR --> M
O --> FS
O --> B
CFG --> TR
CFG --> M详细组件分析
实体关系与约束定义
基于决策变更清单与产品方案文档,可归纳以下实体关系与约束要点:
一对一关系
- 订单与资金流水:每笔订单对应一条或多条资金流水记录(入金/出金/手续费等)
- 订单与银行卡:每笔订单绑定一张收款/付款银行卡(用于出金/入金)
- 交易员与保证金锁定:单卡并发约束下,交易员在某时刻仅能处理一张卡的单笔业务
- 商户介绍人与商户:介绍人与商户之间存在绑定关系,用于分成计算
一对多关系
- 商户与订单:一个商户可生成多个订单
- 交易员与订单:一个交易员可接多个订单
- 用户与订单:一个用户可发起多个订单
- 银行卡与资金流水:一张卡可产生多笔流水
- 配置项与交易员/商户:配置项影响交易员与商户的定价与费用策略
多对多关系
- 交易员与商户介绍人:介绍人可推荐多个商户,商户也可由多个介绍人推荐
- 订单与手续费/点差:订单的手续费与点差可受多个配置项影响(如时段、品牌、等级)
章节来源
- [决策变更清单.md:182](file://决策变更清单.md#L182)
- [承兑平台产品方案文档.md:1007,1014,1130,1318,1432,1605,1785,2039,2189,2422,2585,2882,3168,3673,4210,4232,4257](file://承兑平台产品方案文档.md#L1007,L1014,L1130,L1318,L1432,L1605,L1785,L2039,L2189,L2422,L2585,L2882,L3168,L3673,L4210,L4232,L4257)
引用完整性约束与级联规则
外键设计原则
- 主键统一采用全局唯一标识(UUID/雪花ID),避免自增主键带来的跨库/跨服务一致性问题
- 外键命名规范:实体缩写_字段名,如 order_id、merchant_id、trade_user_id
- 关系表外键必须同时包含父表主键与子表主键,确保双向引用完整
引用完整性
- 订单必须关联有效的用户、交易员、商户与银行卡
- 资金流水必须关联有效的订单与银行卡
- 配置项变更需遵循“订单级隔离”,新订单生效,历史订单保持原规则
级联操作规则
- 删除用户:禁止删除,改为逻辑注销;订单保留并标记来源用户无效
- 删除交易员:禁止删除,改为暂停接单;未完结订单继续按原规则处理
- 删除商户:禁止删除,改为暂停服务;未完结订单继续按原规则处理
- 删除银行卡:禁止删除,改为失效;与该卡相关的订单/流水需迁移或冻结
章节来源
- [决策变更清单.md:182](file://决策变更清单.md#L182)
- [承兑平台产品方案文档.md:1007,1014,1130,1318,1432,1605,1785,2039,2189,2422,2585,2882,3168,3673,4210,4232,4257](file://承兑平台产品方案文档.md#L1007,L1014,L1130,L1318,L1432,L1605,L1785,L2039,L2189,L2422,L2585,L2882,L3168,L3673,L4210,L4232,L4257)
关系表与连接表设计
订单-手续费/点差映射(多对多)
- 表名:order_config_mapping
- 字段:id、order_id、config_type(枚举:手续费/点差)、config_id、value、effective_at
- 索引:order_id、config_type、effective_at
- 业务含义:记录订单在创建时生效的配置快照,支持“订单级隔离”
交易员-商户介绍人(多对多)
- 表名:merchant_referrer_mapping
- 字段:id、trade_user_id、merchant_id、referrer_id、status(启用/禁用)、assigned_at
- 索引:trade_user_id、merchant_id、referrer_id
- 业务含义:追踪介绍关系与生效时间,便于分成结算与审计
订单-银行卡(一对一/多对一)
- 表名:order_bank_card
- 字段:id、order_id、bank_card_id、direction(入金/出金)、status
- 索引:order_id、bank_card_id
- 业务含义:记录订单使用的银行卡与方向,支撑单卡并发与T+1出金
章节来源
- [决策变更清单.md:182](file://决策变更清单.md#L182)
- [承兑平台产品方案文档.md:1007,1014,1130,1318,1432,1605,1785,2039,2189,2422,2585,2882,3168,3673,4210,4232,4257](file://承兑平台产品方案文档.md#L1007,L1014,L1130,L1318,L1432,L1605,L1785,L2039,L2189,L2422,L2585,L2882,L3168,L3673,L4210,L4232,L4257)
数据流图
mermaid
flowchart TD
Start(["开始"]) --> CreateUser["创建用户"]
CreateUser --> CreateMerchant["创建商户"]
CreateMerchant --> CreateTradeUser["创建交易员"]
CreateTradeUser --> CreateOrder["创建订单"]
CreateOrder --> BindBankCard["绑定银行卡"]
BindBankCard --> PayIn["入金"]
PayIn --> MatchTrade["匹配交易员"]
MatchTrade --> ConfirmOrder["订单确认"]
ConfirmOrder --> PayOut["出金"]
PayOut --> RecordFlow["记录资金流水"]
RecordFlow --> End(["结束"])图表来源
- [提示词.txt:21-67](file://提示词.txt#L21-L67)
- [承兑平台产品方案文档.md:825,1007,1014,1130,1318,1432,1605,1785,2039,2189,2422,2585,2882,3168,3673,4210,4232,4257](file://承兑平台产品方案文档.md#L825,L1007,L1014,L1130,L1318,L1432,L1605,L1785,L2039,L2189,L2422,L2585,L2882,L3168,L3673,L4210,L4232,L4257)
查询优化与索引策略
常用查询路径
- 订单查询:按用户/交易员/商户/状态/时间范围过滤
- 资金流水查询:按订单/银行卡/时间范围/流水类型过滤
- 银行卡并发查询:按卡号/状态/时间窗口过滤
- 配置项生效查询:按配置类型/生效时间/商户/交易员过滤
索引策略
- 订单:idx_user_created_at、idx_merchant_status、idx_trade_user_status
- 资金流水:idx_order_created_at、idx_bank_card_created_at、idx_flow_type
- 银行卡:idx_card_no_status、idx_card_user_id
- 关系表:复合索引覆盖常用过滤条件(如 order_id+config_type、trade_user_id+merchant_id)
性能考虑
- 使用订单级配置快照(order_config_mapping)避免运行时复杂关联
- 对高频过滤字段建立合适索引,避免全表扫描
- 对大表采用分区(按时间)与归档策略
章节来源
- [决策变更清单.md:182](file://决策变更清单.md#L182)
- [承兑平台产品方案文档.md:1007,1014,1130,1318,1432,1605,1785,2039,2189,2422,2585,2882,3168,3673,4210,4232,4257](file://承兑平台产品方案文档.md#L1007,L1014,L1130,L1318,L1432,L1605,L1785,L2039,L2189,L2422,L2585,L2882,L3168,L3673,L4210,L4232,L4257)
维护规则与一致性保障
维护规则
- 新增/修改配置项需走审批流程,变更生效时间与范围需明确
- 银行卡状态变更需同步校验并发与冻结状态
- 订单状态变更需触发资金流水与分成计算
一致性保障
- 使用事务保证订单-流水-卡状态的原子性
- 使用幂等接口与去重键避免重复入金/出金
- 使用事件驱动与补偿机制处理失败重试
异常处理
- 超时/风控拦截:订单超时自动关闭,资金退回
- 银行卡异常:冻结卡片并通知用户与交易员
- 配置冲突:按“订单级隔离”与“最新优先”策略处理
章节来源
- [决策变更清单.md:182](file://决策变更清单.md#L182)
- [承兑平台产品方案文档.md:1007,1014,1130,1318,1432,1605,1785,2039,2189,2422,2585,2882,3168,3673,4210,4232,4257](file://承兑平台产品方案文档.md#L1007,L1014,L1130,L1318,L1432,L1605,L1785,L2039,L2189,L2422,L2585,L2882,L3168,L3673,L4210,L4232,L4257)
依赖分析
- 决策清单依赖产品方案文档中的角色与流程定义
- 待确认清单推动对关系与约束的进一步细化
- 综合审查报告提供风险与约束视角,指导实体关系设计的稳健性
mermaid
graph LR
PS["产品方案文档"] --> DC["决策变更清单"]
PS --> WC["待确认决策清单"]
WC --> DC
CR["综合审查报告"] --> DC图表来源
- [决策变更清单.md:10,182](file://决策变更清单.md#L10,L182)
- [待确认决策清单.md:338,343](file://待确认决策清单.md#L338,L343)
- [综合审查报告.md:459](file://综合审查报告.md#L459)
章节来源
- [决策变更清单.md:10,182](file://决策变更清单.md#L10,L182)
- [待确认决策清单.md:338,343](file://待确认决策清单.md#L338,L343)
- [综合审查报告.md:459](file://综合审查报告.md#L459)
性能考虑
查询热点
- 订单与资金流水的高频读取,需建立合适的索引与缓存
- 银行卡并发控制与T+1出金的批处理优化
存储与归档
- 历史数据分区与冷热分离,降低热表扫描压力
- 关系表与配置快照表定期清理过期数据
并发与一致性
- 使用分布式锁与队列解耦高并发场景
- 通过事件溯源与补偿机制提升最终一致性
故障排除指南
常见问题
- 订单无法出金:检查银行卡状态与单卡并发限制
- 资金流水缺失:核对订单状态与流水类型
- 配置未生效:确认“订单级隔离”与生效时间
排查步骤
- 核对订单-流水-卡三者状态一致性
- 检查关系表与配置快照是否正确
- 审计日志定位异常发生时间点
章节来源
- [决策变更清单.md:182](file://决策变更清单.md#L182)
- [承兑平台产品方案文档.md:1007,1014,1130,1318,1432,1605,1785,2039,2189,2422,2585,2882,3168,3673,4210,4232,4257](file://承兑平台产品方案文档.md#L1007,L1014,L1130,L1318,L1432,L1605,L1785,L2039,L2189,L2422,L2585,L2882,L3168,L3673,L4210,L4232,L4257)
结论
本设计以“订单级隔离”“单卡并发约束”“T+1出金”为核心约束,结合“配置快照”“关系表”“连接表”实现灵活且可追溯的实体关系模型。通过严格的外键与级联规则、完善的索引与查询优化、以及一致性的维护与异常处理机制,平台可在高并发与复杂业务场景下保持数据一致性与可运维性。
附录
术语
- 订单级隔离:新配置仅对新订单生效,历史订单沿用旧规则
- 单卡并发约束:同一银行卡在同一时刻仅允许处理一笔业务
- T+1出金:出金申请在下一自然日结算
参考
- 产品方案文档与综合审查报告中的约束与流程定义
- 决策变更清单与待确认决策清单中的关系与配置项