dev.syw

테이블 에디터와 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고유 식별자
jsonbJSON 데이터

💡 TIP — 날짜는 거의 항상 timestamptz를 사용하세요. 시간대가 포함되어 여러 지역의 사용자를 다룰 때 혼란을 줄여줍니다.

기본 키와 식별자

각 행을 유일하게 구분하는 기본 키(PK)가 필요합니다. 자동 증가 정수 또는 uuid를 흔히 사용합니다.

create table profiles (
  id uuid primary key default gen_random_uuid(),
  username text unique not null,
  bio text
);

uuid는 추측이 어렵고 분산 환경에서 충돌이 적다는 장점이 있습니다.

관계 설정

외래 키로 테이블 간 관계를 맺습니다. 아래는 postsprofiles를 참조하는 예입니다.

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)로 관계를 맺으면 자동 조인 조회가 가능합니다.

연습문제

  1. 테이블 에디터와 SQL 에디터의 차이는 무엇인가?
  2. 시간대를 포함한 날짜·시간을 저장할 때 권장하는 타입은?
  3. uuid 기본 키를 자동 생성하는 함수는 무엇인가?
  4. 부모 행 삭제 시 자식 행도 삭제하려면 외래 키에 어떤 옵션을 붙이는가?

힌트 — SQL 예제에서 사용한 함수와 옵션 키워드를 다시 살펴보세요.

💡 연습문제 풀이

불러오는 중…

함께 보면 좋은 자료

댓글 0

Supabase” 강좌에 대한 댓글입니다.

댓글을 작성하려면 로그인이 필요합니다.