Skip to content

实体关系设计

**本文引用的文件** - [决策变更清单.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)

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖分析
  7. 性能考虑
  8. 故障排除指南
  9. 结论
  10. 附录

简介

本文件面向“承兑平台”的实体关系设计,目标是基于决策变更清单中的关系定义,系统化阐述核心实体之间的一对一、一对多、多对多关系,明确引用完整性约束、级联操作规则、外键设计原则,并给出关系表与连接表的结构建议、业务含义、查询优化与索引策略、维护规则与一致性保障、异常处理机制。文档同时提供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出金:出金申请在下一自然日结算
  • 参考

    • 产品方案文档与综合审查报告中的约束与流程定义
    • 决策变更清单与待确认决策清单中的关系与配置项