규칙을 가진 스프레드시트
테이블은 겉으로 보면 행과 열이 있는 표지만, 각 열에 이름과 자료형, 제약이 붙는다는 점이 달라. 행 하나는 같은 구조를 따르는 개별 대상을 나타내고, 열 하나는 그 대상의 한 속성을 맡아. 관계대수에서는 행을 record 또는 tuple, 열을 attribute라고 불러. 스키마는 테이블·열·자료형·제약을 모아 데이터가 어떤 모양이어야 하는지 정의해. 이 규칙은 설명서에만 적히는 게 아니라 값을 넣는 순간 PostgreSQL이 직접 검사해.
CREATE TABLE을 문장처럼 읽기
테이블 정의는 “이 세계에 어떤 대상이 있고 무엇이 반드시 참이어야 하는가”를 적은 문장이야. 이름은 대상을 드러내고, 자료형은 허용되는 값을 좁히며, NOT NULL·CHECK·UNIQUE·외래 키는 잘못된 상태가 생기지 못하게 해. 스키마가 정직하면 앱 1개가 아니라 모든 앱과 스크립트가 같은 규칙을 공유해.