数据库设计文档
| 版本号 | 修改 | 修改时间 | 备注 |
|---|---|---|---|
| v1.0.0 | 王小琱 | 2024.12.20 | 初次修订 |
1. 简介
本文档描述了 exchange-bank-bridge-backend 项目中数据库的结构设计,包括核心表的定义、字段说明及表关系,旨在为开发、测试和运维人员提供参考。
2. 数据库概览
- 数据库名称:
exchange_bank_bridge - 数据库类型:MySQL
- 编码格式:utf8mb4
- 存储引擎:InnoDB
- 排序集:utf8mb4_0900_ai_ci
3. 命名规范
- 表名使用小写字母+下划线风格,例如:
bank_wallet - 字段名使用小写字母+下划线风格,例如:
created_at - 主键统一使用
id - 外键统一用
xxx_id格式 - 时间字段统一使用:
created_at、updated_at - 逻辑删除字段:
deleted_at(如使用软删)
4. 表结构设计
4.1 表:bank_wallet(用户虚拟收款账号表)
| 字段名 | 类型 | 长度 | 是否为NULL | 是否自增 | 是否主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|
| id | BIGINT | - | 否 | 是 | 是 | - | 主键 |
| user_id | VARCHAR | 64 | 否 | 否 | 否 | - | 用户ID |
| id_real_name | VARCHAR | 64 | 否 | 否 | 否 | - | 真实姓名 |
| id_card_no | VARCHAR | 64 | 否 | 否 | 否 | - | 证件号码 |
| bank_card_id | BIGINT | - | 是 | 否 | 否 | - | 关联银行卡ID |
| wallet_type | VARCHAR | 32 | 是 | 否 | 否 | - | 钱包类型 |
| remark | VARCHAR | 255 | 是 | 否 | 否 | - | 附言 |
| created_at | DATETIME | - | 否 | 否 | 否 | - | 创建时间 |
| updated_at | DATETIME | - | 否 | 否 | 否 | - | 更新时间 |
| deleted_at | DATETIME | - | 是 | 否 | 否 | - | 逻辑删除 |
bank_wallet表用于记录用户的虚拟收款账号信息。
4.2 表:bank_card_info(银行卡信息表)
| 字段名 | 类型 | 长度 | 是否为NULL | 是否自增 | 是否主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|
| id | BIGINT | - | 否 | 是 | 是 | - | 主键 |
| bank_card_no | VARCHAR | 64 | 否 | 否 | 否 | - | 银行卡号 |
| card_type | VARCHAR | 32 | 是 | 否 | 否 | - | 卡类型 |
| id_real_name | VARCHAR | 64 | 否 | 否 | 否 | - | 真实姓名 |
| id_card_no | VARCHAR | 64 | 否 | 否 | 否 | - | 证件号码 |
| bank_card_name | VARCHAR | 64 | 是 | 否 | 否 | - | 卡名 |
| bank_id | BIGINT | - | 否 | 否 | 否 | - | 关联银行ID |
| created_at | DATETIME | - | 否 | 否 | 否 | - | 创建时间 |
| updated_at | DATETIME | - | 否 | 否 | 否 | - | 更新时间 |
| deleted_at | DATETIME | - | 是 | 否 | 否 | - | 逻辑删除 |
bank_card_info表用于记录用户银行卡的详细信息。
4.3 表:bank_info(银行信息表)
| 字段名 | 类型 | 长度 | 是否为NULL | 是否自增 | 是否主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|
| id | BIGINT | - | 否 | 是 | 是 | - | 主键 |
| bank_name | VARCHAR | 128 | 否 | 否 | 否 | - | 银行名称 |
| bank_country | VARCHAR | 64 | 是 | 否 | 否 | - | 银行国家 |
| bank_address | VARCHAR | 255 | 是 | 否 | 否 | - | 银行地址 |
| bank_no | VARCHAR | 64 | 是 | 否 | 否 | - | 银行账号 |
| bank_swift | VARCHAR | 64 | 是 | 否 | 否 | - | 银行SWIFT码 |
| created_at | DATETIME | - | 否 | 否 | 否 | - | 创建时间 |
| updated_at | DATETIME | - | 否 | 否 | 否 | - | 更新时间 |
| deleted_at | DATETIME | - | 是 | 否 | 否 | - | 逻辑删除 |
bank_info表用于记录银行的基础信息。
4.4 表:bank_agent_info(中转银行信息表)
| 字段名 | 类型 | 长度 | 是否为NULL | 是否自增 | 是否主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|
| id | BIGINT | - | 否 | 是 | 是 | - | 主键 |
| bank_id | BIGINT | - | 否 | 否 | 否 | - | 关联银行ID |
| bank_name | VARCHAR | 128 | 否 | 否 | 否 | - | 银行名称 |
| bank_country | VARCHAR | 64 | 是 | 否 | 否 | - | 银行国家 |
| bank_address | VARCHAR | 255 | 是 | 否 | 否 | - | 银行地址 |
| bank_no | VARCHAR | 64 | 是 | 否 | 否 | - | 银行账号 |
| bank_swift | VARCHAR | 64 | 是 | 否 | 否 | - | 银行SWIFT码 |
| created_at | DATETIME | - | 否 | 否 | 否 | - | 创建时间 |
| updated_at | DATETIME | - | 否 | 否 | 否 | - | 更新时间 |
| deleted_at | DATETIME | - | 是 | 否 | 否 | - | 逻辑删除 |
bank_agent_info表用于记录银行的中转银行信息。
4.5 表:bank_merchants(商户信息表)
| 字段名 | 类型 | 长度 | 是否为NULL | 是否自增 | 是否主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|
| id | BIGINT | - | 否 | 是 | 是 | - | 主键 |
| client_id | VARCHAR | 64 | 否 | 否 | 否 | - | 商户ClientID |
| client_secret | VARCHAR | 128 | 否 | 否 | 否 | - | 商户密钥 |
| public_key | TEXT | - | 否 | 否 | 否 | - | 公钥 |
| account_no | VARCHAR | 64 | 否 | 否 | 否 | - | 商户账号 |
| created_at | DATETIME | - | 否 | 否 | 否 | - | 创建时间 |
| updated_at | DATETIME | - | 否 | 否 | 否 | - | 更新时间 |
| deleted_at | DATETIME | - | 是 | 否 | 否 | - | 逻辑删除 |
bank_merchants表用于记录银行商户的认证及关键信息。
4.6 表:bank_zaintl_record(银行众安流水表)
| 字段名 | 类型 | 长度 | 是否为NULL | 是否自增 | 是否主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|
| id | BIGINT | - | 否 | 是 | 是 | - | 主键 |
| merchant_sequence_no | VARCHAR | 64 | 否 | 否 | 否 | - | 商户端流水号 |
| trade_date | VARCHAR | 16 | 否 | 否 | 否 | - | 交易日期 |
| journal_no | VARCHAR | 64 | 否 | 否 | 否 | - | 银行流水号 |
| fee | VARCHAR | 32 | 是 | 否 | 否 | - | 服务费用 |
| transfer_status | VARCHAR | 16 | 否 | 否 | 否 | - | 处理结果 |
| created_at | DATETIME | - | 否 | 否 | 否 | - | 创建时间 |
| updated_at | DATETIME | - | 否 | 否 | 否 | - | 更新时间 |
| deleted_at | DATETIME | - | 是 | 否 | 否 | - | 逻辑删除 |
bank_zaintl_record表用于记录与众安银行相关的交易流水。
5. 表关系设计(ER 图)
6. 安全与审计字段
建议每张表都增加以下字段(如适用):
created_at、updated_at:记录操作时间deleted_at:逻辑删除字段
