62 lines
3.2 KiB
SQL
62 lines
3.2 KiB
SQL
-- =============================================================
|
|
-- 포트폴리오 스키마 참조 파일 (MariaDB / utf8mb4)
|
|
-- 실제 생성은 서버 기동 시 Data/PortfolioSchemaInitializer.cs 가 담당한다.
|
|
-- 이 파일은 수동 배포·점검용 사본이며, 몇 번을 실행해도 안전하다(멱등).
|
|
-- - 테이블: CREATE TABLE IF NOT EXISTS
|
|
-- - 시드 : INSERT IGNORE (slug 유니크 키로 중복 삽입 차단)
|
|
-- created_at / updated_at 은 애플리케이션이 DateTime.UtcNow 로 직접 기록한다.
|
|
-- (ON UPDATE CURRENT_TIMESTAMP 에 의존하지 않는다.)
|
|
-- =============================================================
|
|
|
|
CREATE TABLE IF NOT EXISTS tb_portfolio_category (
|
|
category_no INT AUTO_INCREMENT PRIMARY KEY,
|
|
slug VARCHAR(64) NOT NULL,
|
|
name VARCHAR(100) NOT NULL,
|
|
description VARCHAR(255) NULL,
|
|
accent VARCHAR(32) NULL,
|
|
sort_order INT NOT NULL DEFAULT 0,
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
UNIQUE KEY uk_portfolio_category_slug (slug)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS tb_portfolio_post (
|
|
post_no INT AUTO_INCREMENT PRIMARY KEY,
|
|
category_no INT NOT NULL,
|
|
title VARCHAR(200) NOT NULL,
|
|
summary VARCHAR(500) NULL,
|
|
content_md MEDIUMTEXT NULL,
|
|
thumbnail_url VARCHAR(500) NULL,
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
KEY ix_portfolio_post_category (category_no),
|
|
CONSTRAINT fk_portfolio_post_category FOREIGN KEY (category_no)
|
|
REFERENCES tb_portfolio_category (category_no) ON DELETE RESTRICT
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
CREATE TABLE IF NOT EXISTS tb_portfolio_post_image (
|
|
image_no INT AUTO_INCREMENT PRIMARY KEY,
|
|
post_no INT NOT NULL,
|
|
image_url VARCHAR(500) NOT NULL,
|
|
caption VARCHAR(255) NULL,
|
|
sort_order INT NOT NULL DEFAULT 0,
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
KEY ix_portfolio_post_image_post (post_no),
|
|
CONSTRAINT fk_portfolio_post_image_post FOREIGN KEY (post_no)
|
|
REFERENCES tb_portfolio_post (post_no) ON DELETE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- -------------------------------------------------------------
|
|
-- 기본 카테고리 시드 (재실행해도 중복되지 않음)
|
|
-- -------------------------------------------------------------
|
|
INSERT IGNORE INTO tb_portfolio_category (slug, name, description, accent, sort_order, created_at)
|
|
VALUES ('game', '게임', 'Unity 게임 프로젝트', '#7c5cff', 1, UTC_TIMESTAMP());
|
|
|
|
INSERT IGNORE INTO tb_portfolio_category (slug, name, description, accent, sort_order, created_at)
|
|
VALUES ('dev', '개발', '서버 · 툴 · 시스템', '#20d5c4', 2, UTC_TIMESTAMP());
|
|
|
|
INSERT IGNORE INTO tb_portfolio_category (slug, name, description, accent, sort_order, created_at)
|
|
VALUES ('art', '아트', '그래픽 · UI · 연출', '#ff5c9a', 3, UTC_TIMESTAMP());
|
|
|
|
INSERT IGNORE INTO tb_portfolio_category (slug, name, description, accent, sort_order, created_at)
|
|
VALUES ('log', '기록', '작업 일지와 회고', '#ffb74d', 4, UTC_TIMESTAMP());
|