fix_series_info_unique_constraint.sql 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. -- =============================================
  2. -- 修复 series_info 表的唯一约束问题
  3. -- 日期:2025-12-30
  4. -- 说明:删除旧的 series_instance_uid 唯一约束,添加组合唯一约束
  5. -- =============================================
  6. USE qconline;
  7. -- =============================================
  8. -- 第一步:查看当前约束
  9. -- =============================================
  10. SELECT '=== 当前 series_info 表的索引 ===' AS '';
  11. SHOW INDEX FROM series_info WHERE Key_name = 'uk_series_uid';
  12. -- =============================================
  13. -- 第二步:删除旧的唯一约束
  14. -- =============================================
  15. SELECT '=== 删除旧的 uk_series_uid 约束 ===' AS '';
  16. ALTER TABLE series_info DROP INDEX IF EXISTS uk_series_uid;
  17. -- =============================================
  18. -- 第三步:添加新的组合唯一约束
  19. -- =============================================
  20. SELECT '=== 添加新的 uk_series_sop 组合唯一约束 ===' AS '';
  21. ALTER TABLE series_info ADD UNIQUE KEY uk_series_sop (series_instance_uid, sop_instance_uid);
  22. -- =============================================
  23. -- 第四步:验证修改结果
  24. -- =============================================
  25. SELECT '=== 修改后的索引 ===' AS '';
  26. SHOW INDEX FROM series_info;
  27. -- =============================================
  28. -- 说明
  29. -- =============================================
  30. /*
  31. 旧约束:series_instance_uid 单独唯一
  32. 问题:一个序列只能有一条 series_info 记录
  33. 无法存储同一序列的多张片子
  34. 新约束:series_instance_uid + sop_instance_uid 组合唯一
  35. 优点:
  36. 1. 同一个序列(series_instance_uid)可以有多条记录(多张片子)
  37. 2. 同一张片子(sop_instance_uid)在同一个序列中不会重复
  38. 3. 符合新的数据结构设计:每个 series_info 记录代表一张片子
  39. 数据结构变化:
  40. 旧:Study -> Series (1条) -> Instances (多条)
  41. 新:Study -> Series (多条,按series_instance_uid分组)
  42. 查询逻辑:
  43. - 按 series_instance_uid 分组获取序列信息
  44. - 每组的所有记录就是该序列的所有片子
  45. */