에듀테크 프로젝트 대시보드
데이터 타입
타입을 정확히 고르면 저장공간·검증·인덱스 효율이 모두 좋아집니다. PostgreSQL 은 타입에 엄격합니다.
| 타입 | 범위 / 용도 |
|---|---|
smallint / integer / bigint | 정수 2 / 4 / 8바이트 |
numeric(p, s) | 정확한 십진수 — 돈·비율은 반드시 이것 (반올림 오차 없음) |
real / double precision | 부동소수 — 과학 계산용, 금액 금지 |
price numeric(12, 2) -- 최대 9,999,999,999.99
ratio numeric(5, 4) -- 0.0000 ~ 9.9999text 를 기본으로 쓰세요 — varchar(n) 와 성능 차이 없음varchar(n) 는 길이 상한이 도메인 규칙일 때만 (예: 국가코드 char(2))CHECK (char_length(x) <= 100) 로도 가능-- 권장 (SQL 표준)
CREATE TABLE users (
id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
...
);
-- 구식 serial (여전히 흔함) = integer + sequence + default
CREATE TABLE users ( id bigserial PRIMARY KEY, ... );GENERATED ALWAYS 는 실수로 id 에 직접 값을 넣는 것을 막음 (OVERRIDING SYSTEM VALUE 로만 가능)serial 은 컬럼 삭제 시 시퀀스가 남는 등 관리가 지저분함id uuid DEFAULT gen_random_uuid() -- PG13+ 내장 (pgcrypto 불필요)
is_active boolean DEFAULT true -- true/false/'t'/'f'/1/0
data bytea -- 바이너리
tags text[] -- 배열 (다음 장)
price_range int4range -- 범위 타입