다 변경해야 하는 내용들.
팀원들과 이야기해야 함.
CREATE TABLE users (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(), # UUID?
email VARCHAR(255) UNIQUE NOT NULL,
nickname VARCHAR(100),
password VARCHAR(255) NOT NULL,
profile_image_url VARCHAR(255),
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
last_login_at TIMESTAMP,
INDEX idx_users_email (email),
INDEX idx_users_created_at (created_at DESC) # 정렬을 위한..!
);
soft delete 미사용
ID로 UUID를 사용할지.. 말지는 정해보면 좋을것 같아요!!
auto_increment 지금 상황에서 충분하다고 생각!UUID v7 은 어떤지!태그 테이블 (유저별로 추가 가능)CREATE TABLE tags (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
name VARCHAR(50) NOT NULL,
user_id UUID REFERENCES users(id) ON DELETE CASCADE, -- NULL이면 시스템 태그
-- color VARCHAR(7) DEFAULT '#3B82F6', # color (태그별 색상?!)
is_system BOOLEAN DEFAULT FALSE, -- 시스템 제공 태그 여부
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
UNIQUE(user_id, name), -- 사용자별 태그명 중복 방지
CREATE INDEX idx_tags_user_id ON tags(user_id),
CREATE INDEX idx_tags_name ON tags(name),
CREATE INDEX idx_tags_system ON tags(is_system) WHERE is_system = TRUE
);
records? notes?CREATE TABLE records (
-- 기본 정보
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID NOT NULL REFERENCES users(id)
title VARCHAR(50) NOT NULL,
content TEXT,
location GEOGRAPHY(POINT, 4326), # coordinates
address VARCHAR(255),
place_name VARCHAR(100),
thumbnail_url VARCHAR(500),
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
deleted_at TIMESTAMP, # is_deleted, Soft delete
INDEX idx_records_user_id (user_id),
INDEX idx_records_created_at (created_at DESC),
INDEX idx_records_user_date (user_id, created_at DESC),
INDEX idx_records_deleted_at (deleted_at) WHERE deleted_at IS NOT NULL
)