← 관계형 DB 목록으로
🐱
관계형 DB · 에어테이블 · 1편

표 하나에 다 넣으면
생기는 일

"이 사람 지금까지 몇 번 왔어요?" 이 질문 하나에 표가 무너지는 순간. 뽀야가 실제 신청 명단으로 보여줄게.

쓰는 도구 에어테이블
난이도 개념 ★☆☆ · 실습 ★☆☆
걸리는 시간 읽기 7분
🐱

뽀야: 관계형 DB를 설명으로 배우면 안 남아. 그러니까 먼저 불편한 표를 하나 보여줄게. 그 표를 보다가 "어? 이거 이상한데" 하는 순간이 오면, 그때 이름을 붙여줄 거야. 그림부터 봐. 글은 그림 설명일 뿐이야.

1

표는 원래 하나였다

프로그램을 열고 신청을 받는다. 표 두 장이면 충분해 보인다.

신청 표에 이름·전화번호·이메일을 같이 받아 적는다. 대부분의 운영자가 지금 이 모양이고, 한동안은 아무 문제가 없다.

그림 1신청 표 하나 — 사람 정보가 그 안에 같이 들어있다
신청내역 표 16건
신청 16건 · 프로그램 3개 · 실제로 굴러가는 표

지금까진 문제가 없다. 문제는 표가 아니라, 곧 던질 질문 하나에서 시작된다.

2

질문 하나로 무너진다

"김서연 님, 지금까지 몇 번 오셨어요?"

운영하다 보면 반드시 나오는 질문이다. 재참여자에게 인사를 하려고, 할인을 주려고, 혹은 그냥 반가워서.

그런데 이 표로는 세어야 답할 수 있다. 그리고 세다 보면 이상한 게 나온다.

🐱

뽀야: 지금 위 그림에서 직접 세어봐. 김서연 님 몇 줄이야? 세다가 손이 멈추는 데가 있을 거야. 거기가 오늘의 핵심이야.

3

숨어 있던 함정 셋

표를 세로로 훑으면 세 가지가 걸린다.

그림 2같은 사람인데 표는 다르게 본다
누구표에 적힌 것무슨 일이 나나
김서연이름·전화·이메일이 3줄에 그대로 복사고칠 일이 생기면 3군데를 고쳐야 한다
박도현010-7715-3390 / 010-7715-3930전화번호로 세면 두 사람이 된다
이하늘옛 이메일이 옛 줄에 그대로어느 게 최신인지 표만 봐선 모른다
노란 칸 = 그냥 중복붉은 칸 = 같은 사람이 갈라진 자리

중복은 참을 수 있다. 진짜 문제는 같은 사람이 둘로 갈라지는 것이다. 이건 눈으로 안 보인다.

이름으로 세면 동명이인이 섞이고, 전화로 세면 오타가 새고, 이메일로 세면 바뀐 주소가 샌다. 기준이 될 한 줄이 없다.

4

화살표 = 관계

표를 하나 더 만들고, 그 사이에 화살표를 긋는다.

화살표를 그렸다는 건 관계를 가졌다는 뜻이다. 이렇게 관계를 갖는 걸 관계형 데이터베이스라고 부른다. 노션을 써봤다면 이미 만난 적이 있다. 노션이냐 에어테이블이냐의 문제가 아니라 개념이다.

그림 3한 줄이 뜻하는 것을 표마다 다르게 잡는다
프로그램

한 줄 = 열리는
프로그램 1개

─<
신청

한 줄 = 누가 어느
프로그램에 신청한 1건

>─
사람

한 줄 = 사람 1명
몇 번을 신청하든 한 줄

가운데 신청이 양쪽을 각각 문다사람은 여기서 딱 한 줄

관계가 걸리는 순간, 신청 한 줄은 그 프로그램의 모든 정보를 주렁주렁 달고 다닌다. 폴더처럼 열어볼 수 있게 된다.

그림 4에어테이블에서 화살표는 "link" 필드다
프로그램 link 필드가 걸린 신청내역 테이블
연보라 알약처럼 보이는 칸이 링크

링크를 한 번만 걸면 반대쪽 표에도 짝 필드가 저절로 생긴다. 양쪽에서 각각 만들지 않는다.

5

사람을 떼어낸다

신청 안에 눌러앉아 있던 사람을 독립시킨다.

중요한 건 옮기는 방식이다. 그냥 옮기면 중복이 그대로 따라온다. "같은 사람은 새로 만들지 말고 한 줄로 합쳐"가 붙어야 한다.

그림 5신청 16건 → 사람 11줄
사람 테이블 11명
줄어든 5줄 = 재신청한 사람들

숫자가 줄어드는 것이 첫 성과다. 전화번호가 둘이던 박도현도 한 사람으로 합쳐졌다.

6

표가 대신 대답한다

이제 처음의 질문으로 돌아간다.

그림 6사람 한 줄에 신청이 매달린다
사람 테이블에 신청내역이 여러 개 연결된 화면
김서연 = 3개 · 박도현 · 이하늘 · 최유진 = 2개씩

"몇 번 오셨어요?"에 세지 않고 답한다. 표가 보여준다. 이게 표를 나눈 이유 전부다.

여기서 끝이 아니다. 사람이 한 줄로 서 있으면 그 뒤에 다 붙는다 — 재참여 할인, 지난 신청 이력, 문자 한 번에 보내기. 사람이 흩어져 있으면 그 어느 것도 못 붙인다.

확인문제

눌러서 답을 펼쳐봐. 틀려도 괜찮아 — 틀리는 자리가 배우는 자리야.

1같은 사람이 프로그램에 세 번 신청하면, 잘 만든 표에서는 몇 줄이 늘어날까?

사람 표는 그대로 한 줄, 신청 표만 세 줄 늘어난다. 사람이 늘어난다면 표를 잘못 나눈 것이다.

2전화번호를 기준으로 같은 사람을 찾으면 왜 위험할까?

오타 한 글자에 다른 사람으로 갈라진다. 박도현이 그 경우였다. 어떤 항목 하나도 완벽한 기준이 못 되기 때문에, 애초에 사람을 한 줄로 세워두는 것이 답이다.

3"화살표를 그었다"는 말은 에어테이블에서 무엇을 한 것일까?

link 필드를 건 것이다. 한 번 걸면 반대쪽 표에도 짝이 저절로 생긴다.

🐱

뽀야 마무리: 오늘 배운 건 사실 한 문장이야. "이 사람 몇 번 왔어요?"에 표가 답할 수 있게 만든다. 그게 관계형 DB를 쓰는 이유 전부고, 나머지는 다 그 뒤에 붙는 거야. 다음 편에서는 이 표들을 클릭 말고 말로 만들어볼게 🙀

← 관계형 DB 목록으로