100 lines
3.4 KiB
Markdown
100 lines
3.4 KiB
Markdown
# 修复重复字段总结
|
||
|
||
## 问题分析
|
||
|
||
通过分析 `f_polic_field` 表,发现存在以下重复问题:
|
||
|
||
### 1. 重复的字段编码 (filed_code)
|
||
|
||
发现 **2个重复的字段编码**:
|
||
|
||
#### 问题1: `target_id_number` 重复
|
||
- **字段1**: ID=1764836032902356, name="被核查人员身份证号码(带括号)", 关联模板数=0
|
||
- **字段2**: ID=1764836032913357, name="被核查人员身份证号", 关联模板数=9
|
||
|
||
**处理方案**:
|
||
- 保留字段2(ID=1764836032913357),因为它关联了9个模板
|
||
- 删除字段1(ID=1764836032902356),因为它没有关联任何模板
|
||
|
||
#### 问题2: `target_organization_and_position` 重复
|
||
- **字段1**: ID=1764656917367205, name="被核查人员单位及职务", 关联模板数=4
|
||
- **字段2**: ID=1764836032734251, name="被核查人单位及职务", 关联模板数=9
|
||
|
||
**处理方案**:
|
||
- 保留字段2(ID=1764836032734251),因为它关联了9个模板
|
||
- 删除字段1(ID=1764656917367205),并将它的4个关联关系迁移到保留字段
|
||
|
||
## 修复操作
|
||
|
||
### 1. 迁移关联关系
|
||
- 将删除字段的模板关联关系迁移到保留字段
|
||
- 如果保留字段已经关联了某个模板,则跳过重复关联
|
||
|
||
### 2. 删除无效字段
|
||
- 删除重复字段在 `f_polic_file_field` 表中的所有关联关系
|
||
- 删除重复字段本身
|
||
|
||
### 3. 验证结果
|
||
- ✅ 所有 `filed_code` 现在都是唯一的(74个字段,74个唯一编码)
|
||
- ✅ 所有字段名称现在都是唯一的(74个字段,74个唯一名称)
|
||
- ✅ 所有更改已提交到数据库
|
||
|
||
## 修复后的状态
|
||
|
||
### 字段统计
|
||
- **总字段数**: 74
|
||
- **唯一字段编码数**: 74
|
||
- **唯一字段名称数**: 74
|
||
|
||
### 未关联模板的字段
|
||
发现 38 个未关联任何模板的输出字段,这些字段可能是:
|
||
- 预留字段,供将来使用
|
||
- 已废弃但未删除的字段
|
||
- 特殊用途字段
|
||
|
||
这些字段不影响系统功能,可以保留或根据业务需求决定是否删除。
|
||
|
||
## 相关表结构
|
||
|
||
### f_polic_field(字段定义表)
|
||
- `id`: 字段ID(主键)
|
||
- `tenant_id`: 租户ID
|
||
- `name`: 字段名称
|
||
- `filed_code`: 字段编码(**现在唯一**)
|
||
- `field_type`: 字段类型(1=输入字段,2=输出字段)
|
||
- `state`: 状态(0=未启用,1=启用)
|
||
|
||
### f_polic_file_field(文件和字段关联表)
|
||
- `file_id`: 文件配置ID(关联 f_polic_file_config.id)
|
||
- `filed_id`: 字段ID(关联 f_polic_field.id)
|
||
|
||
### f_polic_file_config(文件模板配置表)
|
||
- `id`: 文件配置ID(主键)
|
||
- `name`: 文件名称
|
||
- `file_path`: MinIO文件路径
|
||
- `state`: 状态(0=未启用,1=启用)
|
||
|
||
## 修复脚本
|
||
|
||
使用的修复脚本:
|
||
- `analyze_duplicate_fields.py`: 分析重复字段
|
||
- `fix_duplicate_fields.py`: 修复重复字段
|
||
- `verify_field_uniqueness.py`: 验证修复结果
|
||
|
||
## 注意事项
|
||
|
||
1. **数据完整性**:修复过程中已确保所有模板关联关系都迁移到保留字段,不会丢失数据
|
||
2. **唯一性约束**:虽然数据库表结构中没有对 `filed_code` 设置唯一约束,但通过修复已确保数据唯一性
|
||
3. **建议**:可以考虑在数据库层面为 `filed_code` 添加唯一索引,防止将来再次出现重复
|
||
|
||
## 建议的数据库优化
|
||
|
||
```sql
|
||
-- 为 filed_code 添加唯一索引(建议执行)
|
||
ALTER TABLE f_polic_field
|
||
ADD UNIQUE INDEX idx_tenant_filed_code (tenant_id, filed_code);
|
||
```
|
||
|
||
这样可以确保在数据库层面防止重复的 `filed_code`。
|
||
|