lawless/docs/技术文档/TDD-04-数据库表结构设计.md

61 KiB

TDD-04 数据库表结构设计

文档类型技术设计文档Technical Design Document 版本1.2 日期2026-07-02 关联文档TDD-00 技术栈与架构、GDD-00~GDD-21 相关系统设计


1. 文档信息

项目 说明
目标 为挂机手游《洪荒大陆》服务端定义 PostgreSQL 16 数据库表结构,覆盖角色、种族、境界、功法技能、物品经济、市场拍卖、组织、弟子、悬赏、地图副本、战斗、渡劫、社交、配置与审计等模块。
读者 服务端开发、数值策划、运维、测试
数据库 PostgreSQL 16主库,pg_partman 分区扩展
缓存/外部 Valkey玩家在线热数据、Nakama账户/社交/匹配、Nacos动态配置
命名约定 小写下划线;表名复数;主键 uuid;字段用 small_snake_case;布尔用 is_/has_ 前缀;金额用 numeric(20,4);JSONB 用于随机/引擎生成/战报/动态配置数据。

2. 数据库选型

  • PostgreSQL 16:支持 jsonbrangepartitionBRINGIN 索引,满足功法/技能/战报等半结构化数据存储。
  • pg_partman:用于 battle_logsmarket_orderseconomy_audit_logs 等按时间分区的大表。
  • Valkey承载在线角色快照、排行榜、会话;DB 作为持久化事实源。
  • Nacos存储热更数值参数,服务端通过配置中心读取,DB 仅保留历史快照与灰度记录。

3. 设计原则与约定

原则 说明
事实源单一 角色、经济、组织、关系等以 PostgreSQL 为唯一事实源;Valkey/Nakama 为缓存/投影。
境界/世界层级隔离 排行榜、市场、PVP 匹配统一按 realm_tier + minor_realm(或 world_tier)隔离。
JSONB 用于随机/引擎数据 功法实例、技能实例、装备随机词条、建筑等级、战报、地图组件配置等用 JSONB,避免表爆炸。
经济审计 所有货币产出/消耗写入 economy_audit_logs,按 faucet/sink 分类,支持实时通胀监控。
软删除/状态机 角色、组织、市场订单、悬赏等用 status 字段驱动生命周期,避免物理删除。
时间统一 数据库使用 timestamptz 存现实时间;游戏内时间 = 现实时间 × 3,由应用层计算。每日重置锚点 08:00现实时间

4. ER 概览

players ──1:N── characters ──1:1── character_race_states
                     │
                     ├── N:M ── currency_balances
                     ├── N:M ── inventories / equipments
                     ├── N:M ── character_manuals / character_skills
                     ├── 1:N ── battles / battle_logs / tribulation_records / economy_audit_logs
                     ├── 1:N ── market_orders / auctions / intelligence_orders
                     ├── 1:N ── social_relations / lovers / sworn_brothers
                     ├── N:M ── guild_members (guilds)
                     │
guilds ──1:N── guild_territories / guild_diplomacy / guild_warehouses / disciples

world_layers ──1:N── maps ──1:N── regions ──1:N── zones ──1:N── zone_explorations / instances
instances ──1:N── instance_runs ──1:N── instance_loot

contracts ──1:1── bounties (when contract_type='bounty')
contracts ──1:N── contract_participants
bounties ──1:0..1── manhunt_records

5. 核心数据表设计

5.0 表名速查(按需求清单)

需求表名 本文表名 说明
players / characters players / characters 玩家账号与角色
character_race_states character_race_states 角色种族状态
realms / character_realms realms / character_realms 境界静态配置与角色境界进度
manuals / character_manuals manuals / character_manuals 功法模板与角色功法实例
skills / character_skills skills / character_skills 技能模板与角色技能实例
items / inventories / equipments items / inventories / equipments 物品模板、背包、装备槽
currencies / currency_balances currencies / currency_balances 货币定义与角色钱包
market_orders / auctions / auction_bids market_orders / auctions / auction_bids 交易行与拍卖
guilds / guild_members / guild_territories guilds / guild_members / guild_territories 四组织(门派/帮派/家族/玩家宗门)统一表
disciples / disciple_missions disciples / disciple_missions NPC 弟子与代派委托
bounties / contracts bounties / contracts 悬赏追杀与佣兵委托
maps / zones / instances maps / zones / instances 世界地图、区域、副本入口
battles / battle_logs battles / battle_logs 战斗头与战报日志
tribulation_records tribulation_records 渡劫记录
social_relations / lovers / sworn_brothers social_relations / lovers / sworn_brothers 社交关系链
intelligence_orders intelligence_orders 天机阁情报订单

5.1 账号与角色

players

字段 类型 约束 说明
id uuid PK 玩家账户唯一 ID
nakama_user_id uuid UQ Nakama 账户映射
platform varchar(32) ios / android / pc / guest
device_id_hash varchar(128) UQ, nullable 设备指纹哈希
status varchar(16) active / banned / deleted
created_at timestamptz 创建时间
updated_at timestamptz 更新时间

characters

字段 类型 约束 说明
id uuid PK 角色唯一 ID
player_id uuid FK → players.id, IX 所属玩家
name varchar(64) UQ 角色名
race_id varchar(32) IX 当前种族(见 GDD-01
birth_race_id varchar(32) 创建时种族
birth_world_tier smallint 出生地世界层级1~6
world_tier smallint IX 当前世界层级1~6,对应 GDD-18 六级世界)
realm_tier smallint IX 当前大境界1~6,炼气~合体)
minor_realm smallint IX 小境界1~3初期/中期/圆满)
realm_status varchar(16) normal / tribulation_pending / breakthrough_ready
level int 细分等级/经验槽,用于境界内成长
exp bigint 当前经验/修为
status varchar(16) IX active / dead / sealed / deleted
base_stats jsonb {力,体,悟,速,灵,命,血} 基础值
battle_stats jsonb 战斗属性快照ATB 用)
san_current smallint 当前 SAN0~100
san_max smallint SAN 上限
crime_score int IX 罪孽值
heavenly_value int 天道值
karma_value int 业力/戾气值(追杀令来源)
reputation_score int 声望口碑GDD-16
mercenary_score int 佣兵信用分GDD-13
hunter_prestige int 猎人威望GDD-14
last_online_at timestamptz IX 最后在线时间
daily_reset_at timestamptz 个人每日 08:00 重置标记
created_at timestamptz 创建时间
updated_at timestamptz 更新时间

注意world_tierrealm_tier 在常规流程下对齐1=炼气/出生地,2=筑基/洪荒主陆…6=合体/混沌之渊深层),但存在“跨界降临”“遗迹投影”等临时状态,两者必须独立存储。


5.2 种族与境界状态

character_race_states

字段 类型 约束 说明
character_id uuid PK, FK → characters.id
main_race_id varchar(32) 当前主种族
sub_branch_id varchar(32) 分支/进化支(如深潜裔分支、妖族血脉分支)
bloodline_data jsonb {血脉浓度,觉醒度,残响技能,祖地归属,进化路径}
is_rare_race boolean 是否稀有种族(龙族/混沌裔/巨人族/堕天使裔)
rebirth_count smallint 转生次数
conversion_cooldown_until timestamptz 下次可转化/转生时间
race_talents jsonb 已激活种族天赋实例
hidden_talents jsonb 隐藏天赋GDD-10
updated_at timestamptz

race_currency_wallets

稀有种族/特殊资源专用钱包GDD-01 种族专属货币)。

字段 类型 约束 说明
character_id uuid PK, FK
race_currency_code varchar(32) PK dragon_blood_tokenchaos_essence
amount numeric(20,4) 余额
total_earned numeric(20,4) 累计获取(防通胀监控)
updated_at timestamptz

realms

境界静态配置表。

字段 类型 约束 说明
tier smallint PK 大境界 1~6
minor_realm_max smallint 小境界数量3
name varchar(64) 炼气/筑基/金丹/元婴/化神/合体
world_tier smallint 对应世界层级
main_currency_code varchar(32) 该境界主货币
is_tribulation_required boolean 是否需要渡劫突破
base_success_rate numeric(5,4) 渡劫基础成功率
attr_growth_template jsonb 每小境界属性成长模板

character_realms

角色每个大境界的进度与属性快照。

字段 类型 约束 说明
id uuid PK
character_id uuid FK, IX
realm_tier smallint 大境界
max_minor_reached smallint 达到的最高小境界
exp_in_tier bigint 当前境界累积修为
stats_snapshot jsonb 突破该境界时的属性快照
is_current boolean IX 是否为当前境界
updated_at timestamptz

realm_breakthrough_records

字段 类型 约束 说明
id uuid PK
character_id uuid FK, IX
from_realm_tier smallint
to_realm_tier smallint
from_minor_realm smallint
to_minor_realm smallint
is_success boolean 是否突破成功
is_break_world_barrier boolean 是否破界(晋级新世界)
source_world_tier smallint
target_world_tier smallint
created_at timestamptz IX

5.3 功法、心法与技能实例

manuals

功法/心法模板(静态配置,由策划/Nacos 维护)。

字段 类型 约束 说明
id varchar(64) PK 功法模板 ID
name varchar(128) 功法名
category varchar(32) universal / profession / racial / unique
domain varchar(32) 剑/体/法/丹/器/阵/神识/血/时/儒/释/道/种族
element varchar(16) 火/水/雷/土/木/阴/阳/混沌/none
alignment varchar(16) light / dark / neutral
max_layers smallint 最大层数
required_race varchar(32)[] 可学习种族白名单
required_profession varchar(32)[] 职业要求
base_attr jsonb 每级属性成长模板
skill_unlock_layers jsonb [{layer, skill_template_id, probability}]
version int 配置版本

character_manuals

字段 类型 约束 说明
id uuid PK 实例 ID
character_id uuid FK, IX
manual_id varchar(64) FK → manuals.id
instance_data jsonb {当前层数,熟练度,突破记录,随机属性,隐患状态}
is_buffing boolean IX 是否设为加持功法
buff_data jsonb 加持熟练度/顿悟状态/位阶
source_tag varchar(32) ORIGINAL / JADE_SLIP / DISCIPLE / NPC / EVENT
can_copy_to_jade_slip boolean 是否可拓印为玉简
copy_count_left smallint 剩余可拓印次数(超稀有/唯一限制)
created_at timestamptz
updated_at timestamptz

skills

技能模板/机制库GDD-17

字段 类型 约束 说明
id varchar(64) PK 技能模板/机制 ID
name varchar(128) 显示名
category varchar(32) universal / profession / racial / unique
domain varchar(32)
archetype varchar(32) 强攻/连击/蓄力/范围/控制/DOT/护盾/治疗/…
element varchar(16)
alignment varchar(16)
damage_type varchar(16) physical / magical / true
scaling_attr varchar(8) 力/体/悟/速/灵/命/血
is_eldritch boolean 是否克苏鲁/邪术
san_cost smallint
san_gate jsonb {min, max} 低 SAN 解锁
san_scaling numeric(6,4) SAN 缩放系数
requirements jsonb {境界,属性,种族,职业,SAN 区间}
continuous_cost jsonb 持续代价(掉血/掉蓝/掉 SAN/掉产出)
flow varchar(32) transcript_jade_ok / no_transcript / unique_only
base_template jsonb ATB 参数/CD/消耗/目标/特效白名单
version int

character_skills

字段 类型 约束 说明
id uuid PK 技能实例 ID
character_id uuid FK, IX
skill_id varchar(64) FK → skills.id
custom_name varchar(128) 玩家自定义名(天品+/唯一)
instance_data jsonb {base_coef, cd, cost, target, effects, enchants, rarity, record}
source_tag varchar(32) ORIGINAL / JADE_SLIP / DISCIPLE / NPC / EVENT / TEACHING
proficiency int 熟练度
is_unique boolean IX 是否全服唯一技能
unique_holder_until timestamptz 唯一技能失传判定时间
lineage jsonb 师徒/亲密关系传授谱系(防无限复制)
created_at timestamptz
updated_at timestamptz

说明instance_data 保存程序化生成结果GDD-17 附.7 Skill Schema。唯一技能全服单例通过 is_unique=true + 全局持有者校验实现。


5.4 物品、装备与经济

items

物品模板(静态配置)。

字段 类型 约束 说明
id varchar(64) PK 物品模板 ID
name varchar(128) 物品名
category varchar(32) 材料/丹药/符箓/装备/玉简/消耗品/任务道具/稀有宝物
sub_category varchar(32) 血脉碎片 / 传承功法 / 法宝 / 本命法器 / armor / weapon
stackable boolean 是否可堆叠
max_stack int 最大堆叠数
bind_type varchar(16) none / on_pickup / on_equip / account
world_tier smallint 适用世界层级
base_attr_template jsonb 基础属性模板
random_affix_pool jsonb 随机词条池
script_id varchar(64) 使用脚本/效果 ID
version int

inventories

字段 类型 约束 说明
id uuid PK
character_id uuid FK, IX
item_id varchar(64) FK → items.id
slot_type varchar(16) bag / warehouse / mail / auction_escrow
quantity int 数量(堆叠物)
instance_data jsonb 随机词条、强化等级、绑定状态、耐久、赃物/血债印标记
is_stolen boolean 赃物标记GDD-14
blood_debt_mark boolean 血债印标记
can_trade boolean 是否可交易
acquired_at timestamptz 获得时间
created_at timestamptz

equipments

字段 类型 约束 说明
character_id uuid PK, FK
slot_name varchar(32) PK weapon / head / body / hand / foot / accessory1 / accessory2 / life_item
inventory_id uuid FK → inventories.id, nullable 当前装备
updated_at timestamptz

currencies

货币定义(静态)。

字段 类型 约束 说明
code varchar(32) PK 货币代码
name varchar(64) 货币名
world_tier smallint 适用世界层级
is_premium boolean 是否充值货币(如鸿蒙紫气)
exchange_rules jsonb 兑换/税率规则

currency_balances

角色钱包。

字段 类型 约束 说明
character_id uuid PK, FK
currency_code varchar(32) PK, FK → currencies.code 铜钱/银两/下品灵石/中品灵石/魂晶/魔晶/仙晶/鸿蒙紫气 等
amount numeric(20,4) 余额
total_earned numeric(20,4) 累计获取
total_spent numeric(20,4) 累计消耗
updated_at timestamptz

注意:按 GDD-06,层 1~2 主货币为铜钱/银两,层 3 为灵石,层 4+ 为各阵营结晶货币。

economy_audit_logs

经济水龙头/下水道审计。

字段 类型 约束 说明
id bigint PK 自增/雪花
character_id uuid FK, IX 可为系统/组织
entity_type varchar(16) IX character / guild / system
entity_id uuid IX
currency_code varchar(32) IX
flow_type varchar(16) IX faucet / sink / transfer
reason_code varchar(64) IX 枚举combat_drop / gathering / auction_tax / market_fee / death_penalty / insurance / tribulation / disciple_mission / instance_reward / admin_compensation 等
amount numeric(20,4) 正数=产出/转入,负数=消耗/转出
balance_after numeric(20,4) 操作后余额
related_id uuid nullable 关联订单/战斗/副本 ID
world_tier smallint IX 发生层级
created_at timestamptz IX

分区:按 created_at 月分区,保留 12 个月。


5.5 市场、拍卖与天机阁情报

market_orders

交易行挂单GDD-06

字段 类型 约束 说明
id uuid PK
seller_id uuid FK → characters.id, IX
seller_guild_id uuid FK → guilds.id, nullable 势力/帮派代售
item_id varchar(64) IX
inventory_id uuid FK → inventories.id 托管物品
currency_code varchar(32) IX 结算货币
unit_price numeric(20,4) 单价
quantity int 数量
total_price numeric(20,4) 总价
tax_rate numeric(5,4) 交易税率
status varchar(16) IX active / sold / cancelled / expired
listed_at timestamptz IX
expired_at timestamptz
sold_at timestamptz
buyer_id uuid FK → characters.id, nullable

分区:按 listed_at 月分区,保留 6 个月。

auctions

拍卖GDD-14

字段 类型 约束 说明
id uuid PK
seller_id uuid FK → characters.id, IX
guild_id uuid FK → guilds.id, nullable 势力拍卖归属
auction_type varchar(16) IX official / organization
item_id varchar(64)
inventory_id uuid FK → inventories.id 托管拍品
category varchar(32) IX rare_bloodline / rare_manual / jade_slip / secret_material / artifact / material
currency_code varchar(32)
start_price numeric(20,4) 起拍价
reserve_price numeric(20,4) 底价
min_increment_rate numeric(5,4) 最小加价比例
deposit_rate numeric(5,4) 保证金比例
tax_rate numeric(5,4) 税率
status varchar(16) IX preparing / active / extended / sold / expired / robbed
started_at timestamptz IX
ended_at timestamptz
is_anonymous boolean 卖家匿名
access_type varchar(16) public / private
risk_type varchar(16) 抢劫风险类型rare_robbable / none
created_at timestamptz

auction_bids

字段 类型 约束 说明
id uuid PK
auction_id uuid FK → auctions.id, IX
bidder_id uuid FK → characters.id, IX
amount numeric(20,4) 出价
deposit_paid numeric(20,4) 已缴保证金
is_auto_bid boolean 是否自动出价
auto_max_amount numeric(20,4) 自动出价上限
bid_at timestamptz IX

分区:与 auctions 对齐,按 bid_at 月分区。

auction_blacklist_records

势力拍卖黑吃黑记录GDD-14 §10

字段 类型 约束 说明
id uuid PK
guild_id uuid FK → guilds.id, IX
auction_id uuid FK → auctions.id
is_exposed boolean 是否东窗事发
exposed_at timestamptz
exposure_type varchar(16) report / arbitration / heaven_sense
punishment_level smallint 1/2/3
reputation_delta int
created_at timestamptz

intelligence_orders

天机阁情报订单GDD-06 第十二章)。

字段 类型 约束 说明
id uuid PK
seller_id uuid FK → characters.id, IX
buyer_id uuid FK → characters.id, nullable, IX
intel_type varchar(32) IX resource / event / location / bounty_clue / instance_entry / unique_skill_clue
target_id uuid nullable 情报目标(玩家/区域/副本)
target_world_tier smallint IX
content_summary varchar(256) 摘要
detail_data jsonb 精确/模糊信息、坐标、概率
currency_code varchar(32)
price numeric(20,4)
purchase_count smallint 已被购买次数(防膨胀)
max_purchase smallint 同一份线索最多购买次数
status varchar(16) IX active / sold_out / expired
cooldown_until timestamptz 卖家冷却
created_at timestamptz IX

5.6 组织(门派/帮派/家族/玩家宗门)

guilds

四组织统一表GDD-07 / GDD-16。表名 guilds 为通用组织实体,不特指帮派。

字段 类型 约束 说明
id uuid PK
name varchar(128) UQ 势力名
org_type varchar(16) IX system_sect / player_sect / guild / family
world_tier smallint IX 所在世界层级
region_id uuid FK → regions.id, nullable 驻地所在地域
zone_id uuid FK → zones.id, nullable 驻地所在区域
leader_id uuid FK → characters.id 领主/掌门/族长
level smallint 组织等级
reputation int 势力声望/声誉
member_limit int 成员上限
tax_rate numeric(5,4) 势力拍卖/坊市税率(势力拍卖用)
diplomacy_policy jsonb 结盟/宣战/贸易协定状态
building_levels jsonb 各建筑等级与升级进度
funds jsonb 各币种组织资金
status varchar(16) IX active / dissolved / blacklisted
created_at timestamptz
dissolved_at timestamptz

guild_members

字段 类型 约束 说明
guild_id uuid PK, FK
character_id uuid PK, FK
role varchar(32) leader / vice / elder / elder_council / member / disciple_manager
joined_at timestamptz
contribution jsonb 各贡献值
daily_quota jsonb 今日代挂/委托时长配额
updated_at timestamptz

guild_territories

字段 类型 约束 说明
id uuid PK
guild_id uuid FK, IX
territory_type varchar(32) 炼丹房/炼器室/藏经阁/练功房/坊市/拍卖行/祖地祭坛/领地核心
level smallint
upgrade_progress jsonb 升级材料/进度
params jsonb 建筑产出参数
updated_at timestamptz

guild_diplomacy

字段 类型 约束 说明
id uuid PK
guild_a_id uuid FK → guilds.id, IX
guild_b_id uuid FK → guilds.id, IX
relation varchar(16) IX allied / at_war / trade / betrayed_cooldown
started_at timestamptz
ended_at timestamptz nullable

guild_warehouses

字段 类型 约束 说明
id uuid PK
guild_id uuid FK, IX
inventory_id uuid FK → inventories.id 物品实例
deposited_by uuid FK → characters.id
deposit_type varchar(16) common / tribute / black_eat
created_at timestamptz

5.7 弟子系统

disciples

NPC 弟子GDD-07,与玩家师徒关系GDD-16区分。

字段 类型 约束 说明
id uuid PK
owner_id uuid FK → characters.id, IX 所属玩家
guild_id uuid FK → guilds.id, nullable 所属门派/帮派
name varchar(64) 弟子名
race_id varchar(32) 种族
quality varchar(16) common / fine / excellent / perfect / immortal
profession varchar(32) 职业/心法道倾向
stats jsonb 基础战斗属性
skills jsonb 已学技能实例
equipment jsonb 装备快照
daily_task_quota_min int 今日剩余代挂分钟数
death_rate_modifier numeric(5,4) 死亡率修正
status varchar(16) IX active / dead / dispatched / insurance_pending
tombstone_data jsonb 死亡后墓碑信息
created_at timestamptz
died_at timestamptz

disciple_missions

弟子代派任务/委托记录。

字段 类型 约束 说明
id uuid PK
disciple_id uuid FK → disciples.id, IX
owner_id uuid FK → characters.id, IX
contract_id uuid FK → contracts.id, nullable 关联悬赏/委托
mission_type varchar(16) mercenary / gathering / sect_proxy
difficulty smallint 1~6 星
success_rate numeric(5,4) 计算后成功率
death_rate numeric(5,4) 计算后死亡率
insurance_item_id uuid FK → inventories.id, nullable 保险道具
result varchar(16) pending / success / fail / death
rewards jsonb 奖励快照
started_at timestamptz
ended_at timestamptz

5.8 悬赏、追杀令与佣兵委托

contracts

佣兵委托与悬赏的公共头表。

字段 类型 约束 说明
id uuid PK
contract_type varchar(16) IX mercenary /限时委托 / bounty
publisher_id uuid FK → characters.id, IX 发布者
publisher_guild_id uuid FK → guilds.id, nullable 帮派集体发布
difficulty smallint 1~6 星
currency_code varchar(32) 报酬货币
base_reward numeric(20,4) 基础报酬
max_participants smallint 最大接取人数
status varchar(16) IX active / accepted / completed / failed / expired / cancelled
valid_until timestamptz IX 有效期
created_at timestamptz IX
completed_at timestamptz

bounties

悬赏与追杀令扩展表(对应 GDD-02 / GDD-13 / GDD-14

字段 类型 约束 说明
contract_id uuid PK, FK → contracts.id
bounty_type varchar(16) IX official_bounty / private_bounty /追杀令
target_id uuid FK → characters.id, nullable, IX 目标玩家
target_world_tier smallint IX 目标所在层级
reward_amount numeric(20,4) 悬赏金
fee_amount numeric(20,4) 手续费/报案费
is_anonymous boolean 私人悬赏匿名
report_count_today smallint 报官今日计数
trigger_probability numeric(5,4) 报官触发概率
clues jsonb 线索数据
item_inventory_id uuid FK → inventories.id, nullable 被追杀的宝物

contract_participants

字段 类型 约束 说明
id uuid PK
contract_id uuid FK → contracts.id, IX
character_id uuid FK → characters.id, IX
participant_type varchar(16) hunter / disciple_proxy / party_member
disciple_id uuid FK → disciples.id, nullable 弟子代派
status varchar(16) IX accepted / active / completed / failed
accepted_at timestamptz
completed_at timestamptz

manhunt_records

稀有宝物追杀令专属流程GDD-14

字段 类型 约束 说明
bounty_id uuid PK, FK → bounties.contract_id
original_owner_id uuid FK → characters.id 原宝物持有者
current_holder_id uuid FK → characters.id 当前宝物持有者
window_end_at timestamptz 追杀窗口结束
outcome varchar(16) pending / returned / black_ate / failed
hunter_choice varchar(16) return / black_eat
compensation_paid numeric(20,4) 货币补偿
chase_right_until timestamptz 追主权有效期
created_at timestamptz

5.9 世界地图、区域、副本与遗迹

world_layers

字段 类型 约束 说明
tier smallint PK 1~6
name varchar(64) 种族出生地/洪荒主陆/洪荒腹地/太古秘境/混沌之渊·化神域/混沌之渊·合体域
display_layer smallint 显示用 layer0~5,与 GDD-08 对齐
realm_tier smallint 对应境界大层
is_pvp_enabled boolean 是否开放 PVP
cross_tier_rules jsonb 跨界规则、税、掉落衰减

maps

世界地图层定义(可按世界层级、活动事件划分)。

字段 类型 约束 说明
id uuid PK
world_tier smallint FK → world_layers.tier, IX
name varchar(128) 地图名
map_type varchar(16) world / event / instance / ruin
seed bigint 程序化生成种子
layout_data jsonb 地图布局元数据
is_active boolean
created_at timestamptz

regions

字段 类型 约束 说明
id uuid PK
map_id uuid FK → maps.id, IX
world_tier smallint IX
name varchar(128) 地域名
theme varchar(32) 地貌主题
is_safe_zone boolean 是否安全区
pvp_rules jsonb PVP 规则

zones

字段 类型 约束 说明
id uuid PK
region_id uuid FK → regions.id, IX
zone_type varchar(16) IX stronghold / wild / secret / dungeon / ruins
name varchar(128)
terrain varchar(32) 山谷/洞窟/密林/沼泽/废墟/雪原/火山/水域/裂隙/遗迹场
weather varchar(32) 当前天候
resource_density smallint 资源点密度
danger_level smallint 1~6
rarity varchar(16) normal / resource_rich /奇遇高发 / dangerous
seed bigint 程序化生成种子
generated_data jsonb 地形/资源/事件/敌群配置
refreshed_at timestamptz
expires_at timestamptz nullable 临时/裂隙区域过期时间

zone_explorations

字段 类型 约束 说明
id uuid PK
zone_id uuid FK → zones.id, IX
character_id uuid FK → characters.id, IX
fog_state jsonb 迷雾探索进度
exploration_count int 探索次数
last_entered_at timestamptz

instances

副本入口/定义。

字段 类型 约束 说明
id uuid PK
zone_id uuid FK → zones.id, IX
instance_type varchar(16) IX permanent / random / ruin / event
theme varchar(32) 妖兽巢/古战场/邪修密窟/秘宝库/试炼塔/迷踪林/遗迹
world_tier smallint IX
recommended_realm_tier smallint
generated_layout jsonb 房间/波次/Boss/词缀/机关
affixes jsonb 词缀列表
max_parties smallint 同时承载队伍数
expires_at timestamptz nullable
created_at timestamptz

instance_runs

字段 类型 约束 说明
id uuid PK
instance_id uuid FK → instances.id, IX
party_leader_id uuid FK → characters.id, IX
party_members uuid[] 队员 ID 列表
difficulty_coefficient numeric(6,4) 动态难度 D
status varchar(16) IX in_progress / completed / failed / abandoned
battle_id uuid FK → battles.id, nullable 结算战斗
consumed_keys smallint 消耗副本钥匙数
started_at timestamptz IX
ended_at timestamptz

instance_loot

字段 类型 约束 说明
id uuid PK
run_id uuid FK → instance_runs.id, IX
character_id uuid FK → characters.id, IX
item_id varchar(64)
inventory_id uuid FK → inventories.id, nullable 已生成物品
currency_code varchar(32) nullable
currency_amount numeric(20,4)
is_resonance_copy boolean 是否残影拓本
completeness numeric(5,4) 残响完整度10%~60%
created_at timestamptz

world_ruin_records

破界遗迹记录GDD-18 §5

字段 类型 约束 说明
id uuid PK
source_character_id uuid FK → characters.id, IX 破界者
source_world_tier smallint
region_id uuid FK → regions.id, IX
zone_id uuid FK → zones.id 遗迹入口区域
instance_id uuid FK → instances.id 关联遗迹副本
richness_score numeric(8,2) 丰厚度评分
snapshot_data jsonb 破界者技能/心法/装备/货币快照
total_extractable numeric(6,4) 可提取上限比例
extracted_ratio numeric(6,4) 已被提取比例
status varchar(16) IX active / depleted / expired
opened_at timestamptz IX
expires_at timestamptz IX

5.10 战斗与战报

battles

战斗头表(一次战斗一条记录)。

字段 类型 约束 说明
id uuid PK
battle_type varchar(16) IX expedition_pve / dungeon_pve / pvp / gvg / bounty / manhunt
world_tier smallint IX
realm_tier smallint IX
game_timestamp timestamptz 游戏内时间戳
attacker_id uuid FK → characters.id, nullable, IX
defender_id uuid FK → characters.id, nullable, IX
party_a uuid[] 攻击方队伍
party_b uuid[] 防守方队伍
status varchar(16) in_progress / completed
result_summary jsonb {winner, end_condition, final_hp}
created_at timestamptz IX

battle_logs

战报详情日志。

字段 类型 约束 说明
id uuid PK
battle_id uuid FK → battles.id, UQ, IX
report jsonb 完整文字战报GDD-03 战报 Schema
special_events jsonb 共鸣/元素反应/天罚/心魔等特殊事件
drops jsonb 掉落物快照
created_at timestamptz IX

分区:按 created_at 周分区,保留 8 周。

JSONB 索引:在 report->>'battle_id'report->>'type' 上建 GIN 索引(jsonb_path_ops)。

player_kills

字段 类型 约束 说明
id uuid PK
killer_id uuid FK → characters.id, IX
victim_id uuid FK → characters.id, IX
battle_id uuid FK → battles.id
world_tier smallint IX
is_malice boolean 是否恶意 PK
karma_delta int 戾气变化
crime_delta int 罪孽变化
loot_taken jsonb 夺取物品快照
created_at timestamptz IX

5.11 渡劫记录

tribulation_records

字段 类型 约束 说明
id uuid PK
character_id uuid FK → characters.id, IX
realm_tier smallint 渡劫目标境界
minor_realm smallint 目标小境界
tribulation_type varchar(16) normal / heart_devil / qi_deviation / chaos /合体期
base_success_rate numeric(5,4) 基础成功率
modified_success_rate numeric(5,4) 修正后成功率
helper_ids uuid[] 护法者(道侣/结义)
result varchar(16) success / fail / backlash / death
penalties jsonb 失败惩罚:境界掉落、内力冻结、装备耐久、掉落物
drops_on_success jsonb 成功掉落(天材地宝/心法感悟)
san_snapshot smallint 渡劫前 SAN
created_at timestamptz IX

5.12 社交关系

social_relations

通用关系链。

字段 类型 约束 说明
id uuid PK
character_a_id uuid FK → characters.id, IX
character_b_id uuid FK → characters.id, IX
relation_type varchar(16) IX friend / companion / master / apprentice / enemy
intimacy int 亲密度
status varchar(16) IX active / cooldown / dissolved
cooldown_until timestamptz 解除冷却
created_at timestamptz
dissolved_at timestamptz

lovers

道侣关系扩展GDD-16 §1.4)。

字段 类型 约束 说明
relation_id uuid PK, FK → social_relations.id
resonance int 共鸣度 0~10000
shared_residence_id uuid FK → guild_territories.id, nullable 共享洞府
combined_skill_id uuid FK → character_skills.id, nullable 合体技实例
vow_path varchar(16) 大道同行 / 生死与共 / 逍遥双修
teleport_cooldown_until timestamptz 传送冷却
mutual_benefits jsonb 双修/护法/传送加成配置
updated_at timestamptz

sworn_brothers

结义关系扩展GDD-16 §1.4)。

字段 类型 约束 说明
relation_id uuid PK, FK → social_relations.id
group_id uuid UQ 义团 ID2~5 人共享)
member_order smallint 长幼次序
shared_mission_slots jsonb 3 个共享委托栏位
group_buffs jsonb 队伍增益配置
flag_zone_id uuid FK → zones.id, nullable 义旗位置
updated_at timestamptz

说明:玩家与 NPC 弟子的从属关系放在 disciples.owner_id;玩家之间的师徒关系用 social_relations.relation_type = master / apprentice

reputation_records

玩家互评/声望事件流水。

字段 类型 约束 说明
id bigint PK
character_id uuid FK → characters.id, IX 被评价者
source_id uuid FK → characters.id, IX 评价者
source_type varchar(16) trade / mercenary / master / party / report
delta int 声望变化
tag varchar(32) 标签:良心商人/可靠佣兵/黑心宰客
created_at timestamptz IX

5.13 配置与审计

dynamic_configs

Nacos 配置本地快照/灰度记录,非运行时主配置源。

字段 类型 约束 说明
id uuid PK
config_key varchar(128) UQ 配置键
namespace varchar(64) economy / combat / skill_gen / map_gen / drop
value jsonb 配置值
version int 版本
is_grayscale boolean 是否灰度
grayscale_ratio numeric(5,4) 灰度比例
effective_from timestamptz 生效时间
created_at timestamptz
updated_at timestamptz

daily_reset_tracking

字段 类型 约束 说明
character_id uuid PK, FK
reset_date date 已处理日期
report_count_used smallint 报官已用次数
instance_count_used smallint 副本基础次数已用
ruin_count_used smallint 遗迹探索次数已用
double_cultivation_minutes smallint 双修有效分钟数
fishing_games smallint 休闲玩法计数
updated_at timestamptz

6. 索引与分区策略

6.1 常用查询索引

索引字段 用途
characters (world_tier, realm_tier, power DESC) 境界隔离排行榜
characters (last_online_at) 在线判定、离线悬赏过期
inventories (character_id, slot_type) 背包查询
character_skills (character_id, is_unique) 唯一技能校验
contracts (publisher_id, contract_type, status) 我的发布/接取
bounties (target_id, bounty_type, target_world_tier) 目标悬赏列表
battles (attacker_id, created_at) 个人战报
battles (defender_id, created_at) 被攻击记录
economy_audit_logs (character_id, reason_code, created_at) 经济审计
market_orders (item_id, status, world_tier) 交易行搜索
auctions (status, auction_type, ended_at) 拍卖行列表
instances (world_tier, instance_type, expires_at) 副本入口列表

6.2 分区表清单

分区键 分区粒度 保留策略
economy_audit_logs created_at 12 个月
market_orders listed_at 6 个月
auction_bids bid_at 6 个月
battle_logs created_at 8 周
reputation_records created_at 6 个月

6.3 JSONB 索引建议

  • character_manuals.instance_datacharacter_skills.instance_datainventories.instance_databattle_logs.report 使用 GIN 索引(jsonb_path_ops)。
  • 常用过滤路径(如 instance_data->>'tier')可建立函数索引。
  • 避免在频繁更新的 JSONB 字段上建过多 GIN 索引,防止写放大。

7. 数据流转与注意事项

  1. 角色创建playerscharacters + character_race_states + currency_balances(初始化钱包)+ equipments(空槽位)。
  2. 功法/技能获取:模板表提供约束与默认值;实例表记录随机 roll 结果与来源标签;玉简复制时生成新实例并继承 source_tag=JADE_SLIP
  3. 经济流转:任何货币变化必须写入 economy_audit_logs,并通过消息队列/Nakama 同步给经济监控服务。
  4. 市场交易:卖家物品从 inventories 转入托管态,market_orders 成交后更新双方 currency_balances 并写审计日志。
  5. 悬赏结算bounties 完成时,根据 battles 校验击杀,更新 currency_balances、信用分、猎人威望,并写审计日志。
  6. 副本/遗迹instances 生成后创建 instance_runs;结算时写入 battles / battle_logsinstance_loot;破界遗迹额外更新 world_ruin_records.extracted_ratio
  7. 渡劫characters.realm_status 进入 tribulation_pending;结算后更新境界并写入 tribulation_records
  8. 社交关系:关系建立/解除更新 social_relations,道侣/结义额外写入 lovers / sworn_brothers,解除时设置 cooldown_until
  9. 每日重置daily_reset_tracking 按现实 08:00 批量重置;避免在 characters 表做大量单行更新。
  10. 配置热更:优先读 Nacos;dynamic_configs 仅做审计与灰度记录,服务端不应直接依赖它做实时逻辑。

8. GDD 冲突与待对齐项

编号 冲突/歧义 涉及文档 当前处理方案 建议
C01 世界层级编号GDD-08 使用 layer 0~5出生地=0,GDD-18 使用 一级世界~六级世界1~6 GDD-08 / GDD-18 数据库主键采用 world_tier1~6,并设 display_layer0~5作为显示别名;realm_tierworld_tier 对齐。 在 GDD-00 决策总索引中明确统一术语。
C02 境界隔离 SQL 示例GDD-08 示例为 WHERE current_realm = $1 AND realm_tier = $1,语义重复/歧义。 GDD-08 数据库按 realm_tier(大境界)+ minor_realm(小境界)隔离;排行榜查询使用 (realm_tier, minor_realm, power DESC) 确认示例是否为笔误,或补充 minor_realm 维度。
C03 货币层级与境界层级对应GDD-06 说层 1~2 用铜钱/银两,层 3 用灵石,层 4+ 用结晶;若 world_tier 1=炼气、2=筑基,则炼气/筑基用铜钱/银两。 GDD-06 / GDD-18 currency_balances.currency_code 按 realm_tier 选择;交易/拍卖结算时校验货币可用性。 在 GDD-06 中统一使用 realm_tier 而非“层”描述货币。
C04 弟子 vs 师徒GDD-07 的“弟子”是 NPC,GDD-16 的“师徒”是玩家关系。 GDD-07 / GDD-16 disciples 表存 NPC 弟子;social_relations.relation_type = master/apprentice 存玩家师徒。 文档中避免混用“弟子”一词,或加注区分。
C05 悬赏 vs 追杀令GDD-02“追杀令”基于罪孽/戾气自动生成;GDD-13“悬赏”分报官/私人;GDD-14“追杀令”针对稀有宝物被抢。 GDD-02 / GDD-13 / GDD-14 contracts 表存公共头;bounties 表扩展悬赏/追杀令字段;manhunt_records 扩展宝物追杀流程。 明确三类追杀令的 UI 与规则边界。
C06 拍卖抢劫风险范围GDD-14 §4.4 与 §11.1 对“玉简/功法/法宝/材料”是否可抢劫存在差异(仅稀有宝物可抢劫)。 GDD-14 auctions.risk_type 区分 rare_robbablenone;普通物品强制 none 统一拍卖抢劫规则表述。
C07 深潜裔分支进化GDD-01 深潜裔存在多分支进化路径,但部分文档仅提 race_id。 GDD-01 character_race_states.sub_branch_id + bloodline_data.evolution_path 保存分支状态。 在种族相关文档中统一分支字段。
C08 SAN 全民化GDD-02 所有角色有 SAN;GDD-17 提到“对无 SAN 目标转恐惧替代”。 GDD-02 / GDD-17 characters 统一存储 san_current/san_max;非邪修/非深潜裔角色 SAN 惩罚较轻。 明确 SAN 机制对不同族/职业的差异化影响。

9. 新增系统表结构GDD-29~33

本节补充 GDD-29聊天与信息传递、GDD-30成就里程碑与图鉴、GDD-31洞府与个人空间、GDD-32NPC与势力关系、GDD-33世界Boss与大型PVE协作所需的数据表。命名约定、字段风格与上文保持一致。

9.1 聊天与信息传递GDD-29

chat_messages

聊天消息持久化表。区域频道消息不持久化(仅 Valkey 缓存),本表存储需审计/举报复核的频道消息。

字段 类型 约束 说明
id uuid PK 消息唯一 ID
channel_type varchar(16) IX REGION / FACTION / WORLD / GUILD / SECT / FAMILY / TEAM / WHISPER / VOICE_SCROLL
channel_id varchar(64) IX 频道标识zone_id / guild_id / target_character_id 等)
world_tier smallint IX 发送时的世界层级
sender_id uuid FK → characters.id, IX 发送者角色 ID
msg_type varchar(16) IX TEXT / EMOJI / SYSTEM / BATTLE_REPORT / ITEM_LINK / LOCATION
content text 消息文本内容
extra_data jsonb 扩展数据(物品链接属性、战报 ID、位置坐标等
is_muted boolean 是否被过滤/折叠
created_at timestamptz IX 发送时间

索引

  • (channel_type, channel_id, created_at DESC) — 频道历史查询
  • (sender_id, created_at DESC) — 玩家发言记录
  • (created_at) BRIN — 过期清理

分区:按 created_at 周分区pg_partman,保留 7 周,过期分区自动删除。

chat_report_records

聊天举报记录。

字段 类型 约束 说明
id uuid PK
reporter_id uuid FK → characters.id, IX 举报者
target_id uuid FK → characters.id, IX 被举报者
message_id uuid FK → chat_messages.id 被举报消息 ID
reason varchar(32) ABUSE / SPAM / FRAUD / HARASSMENT / OTHER
status varchar(16) IX PENDING / APPROVED / REJECTED
resolved_at timestamptz 处理时间
created_at timestamptz

索引

  • (reporter_id, created_at DESC) — 举报者历史
  • (target_id, status) — 被举报者待处理查询
  • (status, created_at) — 审核队列

9.2 邮件系统GDD-29 §10A

mails

邮件表,承载系统邮件、玩家邮件、帮派/门派邮件、交易邮件。

字段 类型 约束 说明
id uuid PK
sender_id uuid FK → characters.id, nullable 发送者(系统邮件为 NULL
receiver_id uuid FK → characters.id, IX 接收者
mail_type varchar(16) IX SYSTEM / PLAYER / GUILD / TRADE
subject varchar(128) 主题
content text 内容
attachments jsonb DEFAULT '[]' 附件(物品/货币,最多 6 格)
is_read boolean DEFAULT false 已读状态
is_collected boolean DEFAULT false 附件已领取
expires_at timestamptz IX 过期时间(默认 created_at + 30 天)
created_at timestamptz

索引

  • (receiver_id, is_read, created_at DESC) — 收件箱查询
  • (expires_at) WHERE NOT is_collected — 过期清理(未领取附件的邮件优先清理)

9.3 成就、图鉴与称号GDD-30

achievements

成就定义表(静态配置,由策划/Nacos 维护)。

字段 类型 约束 说明
id varchar(64) PK 成就模板 IDach_kill_first_beast
name varchar(128) 成就名称
description varchar(512) 成就描述
category varchar(16) IX combat / cultivation / exploration / crafting / social / collection / special
tier varchar(16) bronze / silver / gold / legendary
is_hidden boolean 是否隐藏成就(条件不可见)
conditions jsonb 达成条件列表(事件类型、阈值等)
rewards jsonb 奖励配置(称号、属性微增、物品、外观)
server_broadcast boolean 达成时是否全服广播
version int 配置版本

character_achievements

角色成就进度表。

字段 类型 约束 说明
id uuid PK
character_id uuid FK → characters.id, IX
achievement_id varchar(64) FK → achievements.id, IX
status varchar(16) unlocked / locked隐藏成就未发现前不写入
progress jsonb 当前进度快照(击杀数、累计值等)
unlocked_at timestamptz 解锁时间

唯一约束(character_id, achievement_id)

codex_entries

图鉴条目定义表(静态配置)。图鉴类型包括怪物、功法、种族、装备、地图探索。

字段 类型 约束 说明
id varchar(64) PK 图鉴条目 ID
codex_type varchar(16) IX monster / manual / race / equipment / map
name varchar(128) 条目名称
source_ref_id varchar(64) IX 关联源数据 IDtemplate_id / manual_id / race_id 等)
unlock_levels jsonb 各解锁层级对应的信息内容定义
version int 配置版本

character_codex

角色图鉴记录表。

字段 类型 约束 说明
id uuid PK
character_id uuid FK → characters.id, IX
codex_entry_id varchar(64) FK → codex_entries.id, IX
unlock_level smallint 当前解锁层级0~4,如怪物图鉴初见/交手/熟知/通晓)
stats jsonb 统计数据(击杀次数、打造次数、接触次数等)
updated_at timestamptz

唯一约束(character_id, codex_entry_id)

character_titles

角色称号表。

字段 类型 约束 说明
id uuid PK
character_id uuid FK → characters.id, IX
title_id varchar(64) 称号 ID对应成就/里程碑/声望等来源的称号)
title_name varchar(64) 称号显示名
source varchar(16) achievement / milestone / honor / mercenary / domain / race / social / hidden
source_id varchar(64) 来源 ID成就 ID / 里程碑 ID 等)
effect_type varchar(16) display / attribute / special
effects jsonb 属性效果列表(如 [{"type":"monster_damage_bonus","value":0.01}]
rarity varchar(16) common / uncommon / rare / legendary / unique
is_unique boolean 是否全服唯一
slot_type varchar(16) equipped / display_1 / display_2 / display_3 / unequipped
equipped_at timestamptz 装备到槽位的时间
obtained_at timestamptz 获得时间

唯一约束(character_id, title_id)

索引

  • (character_id, slot_type) — 查询已装备/展示称号

9.4 洞府与个人空间GDD-31

caves

洞府主表。

字段 类型 约束 说明
id uuid PK 洞府唯一 ID
owner_id uuid FK → characters.id, UQ 所属玩家(每人最多 1 个洞府)
level smallint 洞府等级1~9,对应九大境界
world_tier smallint IX 所在世界层级
region_id uuid FK → regions.id, nullable 所在地域
zone_id uuid FK → zones.id, nullable 所在区域
terrain_quality varchar(16) poor / normal / good / excellent / immortal地脉品质
barrier_hp int 结界当前耐久
barrier_hp_max int 结界最大耐久
barrier_last_repair_at timestamptz 上次结界修复时间
active_arrays jsonb 已布阵法列表(类型/等级/材料品质/剩余维持时间)
appearance_id varchar(64) 当前外观 ID
partner_id uuid FK → characters.id, nullable 道侣 ID
partner_permission varchar(16) visit / facility_share / full_share
last_invaded_at timestamptz 上次被入侵时间
invasion_count_today smallint 今日被入侵次数(每日重置)
status varchar(16) active / abandoned / destroyed
created_at timestamptz
updated_at timestamptz

cave_facilities

洞府设施表。

字段 类型 约束 说明
id uuid PK 设施唯一 ID
cave_id uuid FK → caves.id, IX 所属洞府
facility_type varchar(16) training_room / alchemy_room / forge_room / library / herb_garden / mine_vein / array_core / disciple_quarters
level smallint 设施等级(受洞府等级上限约束)
state jsonb 运行状态(产出队列 / 弟子派驻 / 阵法配置)
last_collect_at timestamptz 上次收取产出时间
updated_at timestamptz

唯一约束(cave_id, facility_type)


9.5 NPC与势力关系GDD-32

faction_reputation

势力声望表。每个玩家对七大势力各有独立声望值。

字段 类型 约束 说明
id uuid PK
character_id uuid FK → characters.id, IX
faction_id varchar(32) celestial_court / dragon_palace / underworld / demon_domain / witch_holy_land / demon_territory / eldritch_beyond
reputation_level varchar(16) hated / cold / neutral / friendly / revered / exalted / worshipped
reputation_value int 声望值(-10000 ~ 10000
total_earned int 累计获取声望(防通胀监控)
updated_at timestamptz

唯一约束(character_id, faction_id)

索引

  • (character_id, reputation_level) — 按声望等级查询已解锁势力

npc_affinity

NPC 好感度表。每个玩家对每个可交互 NPC 有独立好感度。

字段 类型 约束 说明
id uuid PK
character_id uuid FK → characters.id, IX
npc_id varchar(64) NPC 唯一标识
affinity_level varchar(16) stranger / acquaintance / familiar / trusted / soulmate
affinity_value int 好感度值0 ~ 1000
last_interacted_at timestamptz 上次交互时间(用于衰减计算)
lock_until timestamptz nullable 信物锁定截止时间(锁定期间不衰减)
updated_at timestamptz

唯一约束(character_id, npc_id)

索引

  • (character_id, affinity_level) — 按好感度等级查询
  • (last_interacted_at) — 衰减批处理扫描

9.6 世界Boss与大型PVE协作GDD-33

world_boss_instances

世界Boss实例表。每只存活的 Boss 生成一条实例记录;镜像实例为独立记录。

字段 类型 约束 说明
id uuid PK 实例 ID
boss_template_id varchar(64) IX Boss 模板 ID对应 GDD-19 怪物 Schema
boss_class varchar(16) IX divine / auspicious / regional / event
current_hp bigint 当前血量(实时同步 Valkey
max_hp bigint 最大血量(含参与人数缩放)
world_tier smallint IX 出没世界层级
region_id uuid FK → regions.id, nullable 出没地域
zone_id uuid FK → zones.id, nullable 出没区域
is_mirror boolean 是否镜像实例
parent_instance_id uuid FK → world_boss_instances.id, nullable 镜像对应的主实例
current_phase smallint 当前阶段1~4
is_frenzy boolean 是否进入狂暴状态
status varchar(16) IX alive / dead / despawned
participant_count int 当前参与人数
ownership_holder_id uuid FK → characters.id, nullable 当前归属权持有者
spawn_at timestamptz IX 刷新时间
death_at timestamptz 死亡时间
expires_at timestamptz 事件 Boss 过期时间(非事件 Boss 为 NULL
created_at timestamptz

索引

  • (status, boss_class) — 查询活跃 Boss 列表
  • (world_tier, status) — 按层级查询活跃 Boss

world_boss_participants

世界Boss参与记录表。记录每位玩家对每次 Boss 战的贡献数据。

字段 类型 约束 说明
id uuid PK
instance_id uuid FK → world_boss_instances.id, IX Boss 实例
character_id uuid FK → characters.id, IX 参与玩家
damage_dealt bigint 造成伤害(含境界修正后)
damage_taken bigint 承受伤害
healing_done bigint 治疗量
contribution_score numeric(16,4) 综合贡献度伤害×0.7 + 承受×0.15 + 治疗×0.15
ownership_score numeric(8,4) 归属权得分
rank int 个人排名
has_first_hit boolean 是否首击
has_last_hit boolean 是否尾刀
is_first_kill boolean 是否全服首杀
reward_type varchar(16) contribution / last_hit / first_hit / participation / first_kill / top3
rewards jsonb 奖励快照(物品/货币/称号)
is_reward_claimed boolean 奖励是否已领取
join_at timestamptz 加入时间
leave_at timestamptz 离开时间(战败/超时/Boss 死亡)

唯一约束(instance_id, character_id)

索引

  • (instance_id, contribution_score DESC) — 排名查询
  • (character_id, join_at DESC) — 个人参与历史

9.7 新增表索引与分区汇总

新增分区表

分区键 分区粒度 保留策略
chat_messages created_at 7 周

新增常用查询索引

索引字段 用途
chat_messages (channel_type, channel_id, created_at DESC) 频道历史消息
chat_messages (sender_id, created_at DESC) 玩家发言记录
mails (receiver_id, is_read, created_at DESC) 收件箱查询
character_achievements (character_id, achievement_id) UQ 成就进度查询
character_codex (character_id, codex_entry_id) UQ 图鉴记录查询
character_titles (character_id, slot_type) 已装备称号查询
caves (owner_id) UQ 洞府归属查询
faction_reputation (character_id, faction_id) UQ 声望查询
npc_affinity (character_id, npc_id) UQ 好感度查询
world_boss_instances (status, boss_class) 活跃 Boss 列表
world_boss_participants (instance_id, contribution_score DESC) Boss 排名查询

10. 版本记录

版本 日期 作者 变更说明
1.0 2026-06-30 Kimi Code CLI 初稿:完成账号、角色、种族境界、功法技能、物品经济、市场拍卖、组织、弟子、悬赏、地图副本、战斗、渡劫、社交、配置审计等表结构设计;定义索引、分区策略与 GDD 冲突项。
1.1 2026-06-30 Kimi Code CLI 按需求清单对齐表名:playerscharacter_race_statesrealms/character_realmsmanuals/skills/itemsinventories/equipmentscurrency_balancesauctionsguilds/guild_members/guild_territoriesdisciple_missionsbountiesmapsbattles/battle_logslovers/sworn_brothers;拆分 contracts/bounties/battles/battle_logs;补充表名速查索引。
1.2 2026-07-02 Claude 新增 GDD-29~33 系统表结构(第 9 章chat_messages、chat_report_records、mails、achievements、character_achievements、codex_entries、character_codex、character_titles、caves、cave_facilities、faction_reputation、npc_affinity、world_boss_instances、world_boss_participants;含索引设计与分区策略。

TDD-04 v1.2 | 2026-07-02 | 数据库表结构设计