数据库设计文档
| 版本号 | 修改 | 修改时间 | 备注 |
|---|---|---|---|
| v1.0.0 | 王小琱 | 2024.12.20 | 初次修订 |
1. 简介
本文档描述了 exchange-ip-location-backend 项目中数据库的结构设计,包括核心表的定义、字段说明及表关系,旨在为开发、测试和运维人员提供参考。
2. 数据库概览
- 数据库名称:
exchange_ip_location - 数据库类型:MySQL
- 编码格式:utf8mb4
- 存储引擎:InnoDB
- 排序集:utf8mb4_0900_ai_ci
3. 命名规范
- 表名使用小写字母+下划线风格,例如:
user_profile - 字段名使用小写字母+下划线风格,例如:
created_at - 主键统一使用
id - 外键统一用
xxx_id格式 - 时间字段统一使用:
created_at、updated_at - 逻辑删除字段:
deleted_at(如使用软删)
4. 表结构设计
4.1 表:ip_limit(IP限制表)
| 字段名 | 类型 | 长度 | 是否为NULL | 是否自增 | 是否主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|
| id | BIGINT | - | 否 | 是 | 是 | - | 主键 |
| ip_address | VARCHAR | 255 | 否 | 否 | 否 | - | IP地址 |
| reason | TEXT | - | 是 | 否 | 否 | - | 限制原因 |
| added_by | VARCHAR | 255 | 是 | 否 | 否 | - | 添加人 |
| is_active | VARCHAR | 16 | 否 | 否 | 否 | ENABLE | 是否激活:ENABLE/DISABLE |
| created_at | DATETIME | - | 否 | 否 | 否 | - | 创建时间 |
| updated_at | DATETIME | - | 否 | 否 | 否 | - | 更新时间 |
ip_limit表用于记录被限制访问的 IP 地址及原因,可支持单个 IP 或 CIDR 段。
4.2 表:country_blacklist(国家黑名单表)
| 字段名 | 类型 | 长度 | 是否为NULL | 是否自增 | 是否主键 | 默认值 | 说明 |
|---|---|---|---|---|---|---|---|
| id | BIGINT | - | 否 | 是 | 是 | - | 主键 |
| iso_code | VARCHAR | 16 | 否 | 否 | 否 | - | 国家ISO码 |
| reason | TEXT | - | 是 | 否 | 否 | - | 限制原因 |
| created_at | DATETIME | - | 否 | 否 | 否 | - | 创建时间 |
| updated_at | DATETIME | - | 否 | 否 | 否 | - | 更新时间 |
country_blacklist表用于记录被限制访问的国家(通过 ISO 码),用于合规风控
5. 表关系设计(ER 图)
6. 安全与审计字段
建议每张表都增加以下字段(如适用):
created_at、updated_at:记录操作时间deleted_at:逻辑删除字段
