-- =============================================
-- 修复 series_info 表的唯一约束问题
-- 日期：2025-12-30
-- 说明：删除旧的 series_instance_uid 唯一约束，添加组合唯一约束
-- =============================================

USE qconline;

-- =============================================
-- 第一步：查看当前约束
-- =============================================
SELECT '=== 当前 series_info 表的索引 ===' AS '';
SHOW INDEX FROM series_info WHERE Key_name = 'uk_series_uid';

-- =============================================
-- 第二步：删除旧的唯一约束
-- =============================================
SELECT '=== 删除旧的 uk_series_uid 约束 ===' AS '';
ALTER TABLE series_info DROP INDEX IF EXISTS uk_series_uid;

-- =============================================
-- 第三步：添加新的组合唯一约束
-- =============================================
SELECT '=== 添加新的 uk_series_sop 组合唯一约束 ===' AS '';
ALTER TABLE series_info ADD UNIQUE KEY uk_series_sop (series_instance_uid, sop_instance_uid);

-- =============================================
-- 第四步：验证修改结果
-- =============================================
SELECT '=== 修改后的索引 ===' AS '';
SHOW INDEX FROM series_info;

-- =============================================
-- 说明
-- =============================================
/*
旧约束：series_instance_uid 单独唯一
  问题：一个序列只能有一条 series_info 记录
        无法存储同一序列的多张片子

新约束：series_instance_uid + sop_instance_uid 组合唯一
  优点：
  1. 同一个序列（series_instance_uid）可以有多条记录（多张片子）
  2. 同一张片子（sop_instance_uid）在同一个序列中不会重复
  3. 符合新的数据结构设计：每个 series_info 记录代表一张片子

数据结构变化：
  旧：Study -> Series (1条) -> Instances (多条)
  新：Study -> Series (多条，按series_instance_uid分组)

查询逻辑：
  - 按 series_instance_uid 分组获取序列信息
  - 每组的所有记录就是该序列的所有片子
*/

