-- 修正認證系統架構 -- 方案 A: 保留 dt_users 的 username 和 display_name,都使用 API 回傳的 name (姓名+email) -- 使用 email 作為主要唯一識別碼,sys_user 表專門記錄登入資訊 -- Created: 2025-10-01 -- 1. 確保 dt_users 表的 email 唯一約束 -- 先檢查是否有重複的 email,如果有則需要手動處理 -- 因為有外鍵約束,不能直接刪除 -- 先顯示重複的 email 記錄讓管理員確認 -- SELECT email, COUNT(*) as count FROM dt_users GROUP BY email HAVING COUNT(*) > 1; -- 添加 email 唯一約束 ALTER TABLE dt_users ADD CONSTRAINT uk_dt_users_email UNIQUE (email); -- 2. 調整現有欄位註解,說明新的使用方式 ALTER TABLE dt_users MODIFY COLUMN username VARCHAR(255) NOT NULL COMMENT 'API name (姓名+email格式)', MODIFY COLUMN email VARCHAR(255) NOT NULL COMMENT '電子郵件 (主要識別鍵)'; -- 3. 保持 sys_user 表結構,但調整為專門記錄登入資訊 -- sys_user 表通過 email 與 dt_users 關聯 -- (保留現有的 sys_user 表,因為它是專門用於登入記錄) -- 4. 重新命名 login_logs 為 dt_login_logs (配合專案命名規則) RENAME TABLE login_logs TO dt_login_logs; -- 5. 更新 dt_login_logs 表結構 (配合 dt_users 的主鍵) ALTER TABLE dt_login_logs ADD COLUMN user_id INT COMMENT '關聯到 dt_users.id', ADD INDEX idx_user_id (user_id), ADD FOREIGN KEY fk_dt_login_logs_user_id (user_id) REFERENCES dt_users(id) ON DELETE SET NULL; -- 6. 建立使用者識別索引 (支援 email 和 username 快速查詢) ALTER TABLE dt_users ADD INDEX idx_username_email (username, email);