- MariaDB 환경별 자동 감지 (Windows/NAS/Linux) - Unix Socket 및 TCP 연결 지원 - 완전한 UTF8MB4 스키마 적용 - 자동 초기화 스크립트 개선 - NAS 배포 스크립트 MariaDB 지원 - 환경변수 기반 설정 시스템 - 상세한 배포 가이드 문서화 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
87 lines
3.0 KiB
SQL
87 lines
3.0 KiB
SQL
-- 자료실 MariaDB 데이터베이스 스키마
|
|
-- 파일: database/mariadb-schema.sql
|
|
|
|
-- 데이터베이스 생성
|
|
CREATE DATABASE IF NOT EXISTS jaryo
|
|
CHARACTER SET utf8mb4
|
|
COLLATE utf8mb4_unicode_ci;
|
|
|
|
USE jaryo;
|
|
|
|
-- 사용자 테이블
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
id VARCHAR(36) PRIMARY KEY,
|
|
email VARCHAR(255) UNIQUE NOT NULL,
|
|
password_hash VARCHAR(255) NOT NULL,
|
|
name VARCHAR(100) NOT NULL,
|
|
role ENUM('admin', 'user') DEFAULT 'user',
|
|
is_active TINYINT(1) DEFAULT 1,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
last_login TIMESTAMP NULL,
|
|
INDEX idx_email (email),
|
|
INDEX idx_role (role)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- 카테고리 테이블
|
|
CREATE TABLE IF NOT EXISTS categories (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
name VARCHAR(100) UNIQUE NOT NULL,
|
|
is_default TINYINT(1) DEFAULT 0,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX idx_name (name)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- 파일 정보 테이블
|
|
CREATE TABLE IF NOT EXISTS files (
|
|
id VARCHAR(36) PRIMARY KEY,
|
|
title VARCHAR(255) NOT NULL,
|
|
description TEXT,
|
|
category VARCHAR(100) NOT NULL DEFAULT '기타',
|
|
tags JSON,
|
|
user_id VARCHAR(36),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
INDEX idx_category (category),
|
|
INDEX idx_created_at (created_at),
|
|
INDEX idx_user_id (user_id),
|
|
INDEX idx_title (title),
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- 파일 첨부 정보 테이블
|
|
CREATE TABLE IF NOT EXISTS file_attachments (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
file_id VARCHAR(36) NOT NULL,
|
|
original_name VARCHAR(255) NOT NULL,
|
|
file_name VARCHAR(255) NOT NULL,
|
|
file_path TEXT NOT NULL,
|
|
file_size BIGINT DEFAULT 0,
|
|
mime_type VARCHAR(255),
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX idx_file_id (file_id),
|
|
INDEX idx_original_name (original_name),
|
|
FOREIGN KEY (file_id) REFERENCES files(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- 세션 테이블 (선택사항)
|
|
CREATE TABLE IF NOT EXISTS user_sessions (
|
|
id VARCHAR(255) PRIMARY KEY,
|
|
user_id VARCHAR(36) NOT NULL,
|
|
expires_at TIMESTAMP NOT NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
INDEX idx_user_id (user_id),
|
|
INDEX idx_expires_at (expires_at),
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- 기본 카테고리 데이터 삽입
|
|
INSERT IGNORE INTO categories (name, is_default) VALUES
|
|
('문서', 1),
|
|
('이미지', 1),
|
|
('동영상', 1),
|
|
('프레젠테이션', 1),
|
|
('기타', 1);
|
|
|
|
-- 기본 관리자 계정 생성 (비밀번호: Hee150603!)
|
|
-- 실제 해시는 애플리케이션에서 생성됩니다 |