-- 외래키 제약 조건 활성화 -- 기본적으로 SQLite는 외래키 검사 안함 그래서 켜줘야 함 PRAGMA foreign_keys = ON; CREATE TABLE IF NOT EXISTS guilds ( id TEXT PRIMARY KEY, -- 길드 ID (전역 유일값) name TEXT NOT NULL, -- 길드 이름 (캐싱용) channel_id TEXT NOT NULL -- 채팅 ID ); CREATE TABLE IF NOT EXISTS users ( guild_id TEXT NOT NULL, -- 소속 길드 ID, guilds.id를 참조 id TEXT NOT NULL, -- 유저 ID name TEXT NOT NULL, -- 유저 이름 (캐싱용) voice_type TEXT, -- TTS 목소리 슬러그 (NULL = 기본) -- 복합 기본키: 같은 길드 안에서 id는 중복 불가 PRIMARY KEY (guild_id, id), -- 외래키 설정: guilds.id를 참조 -- 길드가 삭제되면 소속된 유저도 자동으로 삭제됨 (ON DELETE CASCADE) FOREIGN KEY (guild_id) REFERENCES guilds(id) ON DELETE CASCADE );