3.0 KiB
3.0 KiB
QA 数据库 Schema 后置校验与完整性审计报告
测试数据库: jdbc:kingbase8://127.0.0.1:4321/training (隔离 QA 环境)
后置校验结论: QA_SCHEMA_POSTCHECK = PASS
1. 表结构与索引后置状态
1.1 train_accommodation (住宿表)
- 主键:
pk_train_accommodation(accommodation_id) - 历史旧约束:
uq_accommodation_enroll已被成功移除(确认 count = 0)。 - 新部分唯一索引:
uq_accommodation_enroll_active- 索引定义:
CREATE UNIQUE INDEX uq_accommodation_enroll_active ON public.train_accommodation USING btree (enrollment_id NULLS FIRST) WHERE (accommodation_status = ANY (ARRAY[0, 1]))
- 索引定义:
- 业务行为审计实测:
- 允许同一学员拥有多条退宿记录 (
accommodation_status = 2),调房与退宿历史完整保留。 - 严禁同一学员拥有多于 1 条处于有效状态 (
0=预分配, 1=已入住) 的记录,并发冲突时被 Kingbase 底层唯一索引硬阻断。
- 允许同一学员拥有多条退宿记录 (
1.2 train_external_resource_mapping (外部资源映射表)
- 主键:
mapping_id(BIGSERIAL) - 外键约束:
fk_ext_res_map_dorm(dorm_id关联train_dormitory_info.dorm_id) - 部分唯一索引 1:
uq_ext_res_map_active_room- 作用:
(vendor_code, dorm_id) WHERE external_resource_type = 'ROOM' AND mapping_status = 'ACTIVE' - 审计实测: 同一宿舍绑定多个 ACTIVE 房间时被底层直接拦截。
- 作用:
- 部分唯一索引 2:
uq_ext_res_map_active_ext_res- 作用:
(vendor_code, external_resource_type, external_resource_id) WHERE mapping_status = 'ACTIVE' - 审计实测: 阻止多个宿舍绑定同一个外部激活资源。
- 作用:
1.3 train_external_operation (外部操作流水表)
- 主键:
operation_id(BIGSERIAL) - 外键约束:
fk_ext_op_door_auth(door_auth_id关联train_dorm_auth.auth_id) - 幂等索引:
uq_ext_op_idempotency(idempotency_key唯一索引) - 审计实测: 重复生成具有相同 idempotency_key 的操作直接被唯一约束阻断,杜绝外部重复并发重放。
1.4 train_dorm_auth (门禁授权表)
- 字段审计:
credential_type(varchar(32)): 默认ONLINE_PASSWORD。auth_status(varchar(32)): 默认PENDING_GRANT。latest_operation_id(bigint): 关联最新操作。operation_version(integer): 默认 1,防时序倒退。
- 密码安全红线:
- 表中字段总数 18 个,经全表字段名及属性扫描,不存在任何包含 password、secret、pin 的列。
2. 数据完整性指标
| 完整性检查项 | 规约目标 | 实际扫描结果 | 判定 |
|---|---|---|---|
孤儿外键记录数 (orphan foreign keys) |
0 | 0 | PASS |
存量重复有效住宿 (duplicate active accommodations) |
0 | 0 | PASS |
存量重复有效房间映射 (duplicate active room mappings) |
0 | 0 | PASS |
存量重复幂等操作流水 (duplicate idempotency keys) |
0 | 0 | PASS |
临时测试事务残留 (dirty test rows) |
0 (已回滚) | 0 | PASS |