-- users: 관리자 사용자 계정
CREATE TABLE users (
user_id INT AUTO_INCREMENT PRIMARY KEY,
user_uuid CHAR(36) NOT NULL UNIQUE,
email VARCHAR(255) NOT NULL UNIQUE,
password_hash VARCHAR(255) NULL,
username VARCHAR(100) NOT NULL,
role ENUM('super_admin', 'admin', 'manager', 'viewer') DEFAULT 'viewer',
auth_provider ENUM('local', 'google') DEFAULT 'local',
google_id VARCHAR(255) NULL UNIQUE,
profile_image VARCHAR(500) NULL,
is_active TINYINT DEFAULT 1,
last_login_at TIMESTAMP NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NULL,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_user_uuid (user_uuid),
INDEX idx_email (email),
INDEX idx_google_id (google_id),
INDEX idx_role (role),
INDEX idx_is_active (is_active)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- user_sessions: 사용자 세션 관리 (JWT 토큰 등)
CREATE TABLE user_sessions (
session_id INT AUTO_INCREMENT PRIMARY KEY,
user_uuid CHAR(36) NOT NULL,
token_hash VARCHAR(255) NOT NULL UNIQUE,
refresh_token_hash VARCHAR(255) NULL,
ip_address VARCHAR(45) NULL,
user_agent TEXT NULL,
expires_at TIMESTAMP NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NULL,
FOREIGN KEY (user_uuid) REFERENCES users(user_uuid) ON DELETE CASCADE,
INDEX idx_user_uuid (user_uuid),
INDEX idx_token_hash (token_hash),
INDEX idx_expires_at (expires_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- user_activity_logs: 사용자 활동 로그
CREATE TABLE user_activity_logs (
log_id INT AUTO_INCREMENT PRIMARY KEY,
user_uuid CHAR(36) NOT NULL,
action_type ENUM('login', 'logout', 'create', 'update', 'delete', 'view') NOT NULL,
resource_type VARCHAR(100) NULL,
resource_id VARCHAR(255) NULL,
ip_address VARCHAR(45) NULL,
details JSON NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NULL,
FOREIGN KEY (user_uuid) REFERENCES users(user_uuid) ON DELETE CASCADE,
INDEX idx_user_uuid (user_uuid),
INDEX idx_action_type (action_type),
INDEX idx_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- password_reset_tokens: 비밀번호 재설정 토큰
CREATE TABLE password_reset_tokens (
token_id INT AUTO_INCREMENT PRIMARY KEY,
user_uuid CHAR(36) NOT NULL,
token_hash VARCHAR(255) NOT NULL UNIQUE,
expires_at TIMESTAMP NOT NULL,
used_at TIMESTAMP NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NULL,
FOREIGN KEY (user_uuid) REFERENCES users(user_uuid) ON DELETE CASCADE,
INDEX idx_user_uuid (user_uuid),
INDEX idx_token_hash (token_hash),
INDEX idx_expires_at (expires_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
TypeScript
복사
