테이블 에디터와 SQL 에디터로 테이블을 만들고, 데이터 타입과 관계를 설계하는 법을 배운다.
테이블과 데이터 모델
Supabase의 데이터는 모두 Postgres 테이블에 저장됩니다. 테이블을 잘 설계하면 자동으로 안전하고 일관된 API가 만들어집니다. 이 강의에서는 테이블 생성, 데이터 타입, 기본 키, 그리고 테이블 간 관계 설정을 다룹니다.
학습 목표
- 테이블 에디터와 SQL 에디터로 테이블을 만든다.
- 주요 Postgres 데이터 타입을 이해한다.
- 기본 키(PK)와 외래 키(FK)로 관계를 설정한다.
- 정규화된 데이터 모델의 기본 개념을 익힌다.
테이블 에디터로 만들기
콘솔의 Table Editor에서 그래픽 인터페이스로 테이블을 만들 수 있습니다. New table 버튼을 누르고 이름과 컬럼을 추가합니다. 기본으로 id, created_at 컬럼이 제공됩니다.
테이블을 만들면 별도 설정 없이도 REST API와 SDK로 즉시 접근할 수 있습니다.
SQL 에디터로 만들기
복잡한 구조는 SQL Editor에서 직접 작성하는 편이 빠릅니다.
create table posts (
id bigint generated always as identity primary key,
title text not null,
content text,
published boolean default false,
created_at timestamptz default now()
);
이 한 번의 쿼리로 테이블, 기본 키, 기본값까지 정의됩니다.
주요 데이터 타입
| 타입 | 용도 |
|---|---|
text | 길이 제한 없는 문자열 |
int8 / bigint | 큰 정수 |
boolean | 참/거짓 |
timestamptz | 시간대 포함 날짜·시간 |
uuid | 고유 식별자 |
jsonb | JSON 데이터 |
💡 TIP — 날짜는 거의 항상
timestamptz를 사용하세요. 시간대가 포함되어 여러 지역의 사용자를 다룰 때 혼란을 줄여줍니다.
기본 키와 식별자
각 행을 유일하게 구분하는 기본 키(PK)가 필요합니다. 자동 증가 정수 또는 uuid를 흔히 사용합니다.
create table profiles (
id uuid primary key default gen_random_uuid(),
username text unique not null,
bio text
);
uuid는 추측이 어렵고 분산 환경에서 충돌이 적다는 장점이 있습니다.
관계 설정
외래 키로 테이블 간 관계를 맺습니다. 아래는 posts가 profiles를 참조하는 예입니다.
create table posts (
id bigint generated always as identity primary key,
author_id uuid references profiles (id) on delete cascade,
title text not null,
created_at timestamptz default now()
);
references로 관계를 선언하면 Supabase는 이 관계를 인식해, 조회 시 자동 조인을 지원합니다. on delete cascade는 부모 행이 삭제되면 자식 행도 함께 삭제하도록 합니다.
⚠️ 주의 — 새로 만든 테이블은 기본적으로 RLS가 비활성화되어 있어 누구나 접근 가능할 수 있습니다. 실서비스 전에 반드시 RLS를 켜고 정책을 설계해야 합니다(07강 참고).
요약
- Supabase 데이터는 Postgres 테이블에 저장되며, 테이블 에디터와 SQL 에디터 둘 다 사용할 수 있습니다.
- 문자열은
text, 시간은timestamptz, 식별자는uuid나 자동 증가 정수를 자주 씁니다. - 모든 테이블에는 행을 구분하는 기본 키가 필요합니다.
- 외래 키(
references)로 관계를 맺으면 자동 조인 조회가 가능합니다.
연습문제
- 테이블 에디터와 SQL 에디터의 차이는 무엇인가?
- 시간대를 포함한 날짜·시간을 저장할 때 권장하는 타입은?
uuid기본 키를 자동 생성하는 함수는 무엇인가?- 부모 행 삭제 시 자식 행도 삭제하려면 외래 키에 어떤 옵션을 붙이는가?
힌트 — SQL 예제에서 사용한 함수와 옵션 키워드를 다시 살펴보세요.
💡 연습문제 풀이
불러오는 중…
댓글 0
“Supabase” 강좌에 대한 댓글입니다.