Airtable์์ PostgreSQL๋ก ๋ง์ด๊ทธ๋ ์ด์ : ์ค์ฉ์ ์ธ ๋ณํ ํจํด
๋งํฌ๋ ๋ ์ฝ๋, ๋กค์ , ์์, ๊ถํ์ ์ค์ ์ฑ ๊ธฐ์ค์ผ๋ก ๋ฒ์ญํ๋ฉฐ Airtable์์ PostgreSQL๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.

Airtable ํจํด์ด ์ค๋ฌด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ค๋ฅธ ์ด์
Airtable์ ๊ตฌ์กฐ๊ฐ ์๋ ์คํ๋ ๋์ํธ์ฒ๋ผ ๋๊ปด์ ธ์ผ ํ ๋ ์ ๋ง์ต๋๋ค. ๋ฌธ์ ๋ ๋ฒ ์ด์ค๊ฐ โ์์คํ โ์ด ๋๊ณ ๋ ๋ง์ ์ฌ๋์ด ๋งค์ผ ์์กดํ๊ฒ ๋ ๋ ์์๋ฉ๋๋ค. ๋งํฌ๋ ๋ ์ฝ๋, ๋กค์ , ์์์ ์๋ฆฌํ๊ฒ ์กฐํฉํ๋ฉด ์๋๊ฐ ๋๋ ค์ง๊ณ ์ ์ด๊ฐ ์ด๋ ค์์ง๋ฉฐ ์ค์๋ก ๋ฐ๋๊ธฐ ์ฌ์ด ์ํ๊ฐ ๋ฉ๋๋ค.
ํ๋ก๋์ ์ฉ PostgreSQL ๊ธฐ๋ฐ ์ฑ์ ๋ค๋ฅธ ๊ธฐ๋์น๋ฅผ ์ค์ฌ์ผ๋ก ์ค๊ณ๋ฉ๋๋ค. ๋ฐ์ดํฐ๋ ๊ณต์ ๋๊ณ ๊ท์น์ ํญ์(๋ทฐ์์๋ง์ด ์๋๋ผ) ์ ์ฉ๋ฉ๋๋ค. ๋ณ๊ฒฝ์ฌํญ์ ์ถ์ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค. ๊ทธ๋์ โAirtable์์ PostgreSQL๋ก ๋ง์ด๊ทธ๋ ์ด์ โ์ ๋ณดํต ํ ์ด๋ธ์ ๋ณต์ฌํ๋ ๋ฌธ์ ๊ฐ ์๋๋ผ ๋์์ ๋ฒ์ญํ๋ ๋ฌธ์ ์ ๋๋ค.
ํ๋ก๋์ ์ฌ์ฉ์ ๋ณดํต ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์ฒด์ ์๊ตฌ์ฌํญ์ ์๋ฏธํฉ๋๋ค:
- ์ ๋ขฐ์ฑ: ์ฑ์ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ํญ์ ๊ฐ์ ๋์์ ํด์ผ ํฉ๋๋ค.
- ์ ๊ทผ ์ ์ด: ์ฌ๋๋ค์ ์์ ์ด ํ์ฉ๋ ๊ฒ๋ง ๋ณด๊ณ ํธ์งํฉ๋๋ค.
- ๊ฐ์ฌ์ฑ: โ๋๊ฐ ๋ฌด์์ ์ธ์ ๋ฐ๊ฟจ๋?โ์ ๋ตํ ์ ์์ด์ผ ํฉ๋๋ค.
- ํ์ฅ ์ ์ฑ๋ฅ: ๋ ์ฝ๋์ ์ฌ์ฉ์๊ฐ ๋์ด๋๋ ์ผ์์ด ๋ฉ์ถ์ง ์์์ผ ํฉ๋๋ค.
- ๋ช ํํ ์์ ๊ถ: ์ ๋ฐ์ดํธ๋ ํฉ์ด์ง ๋ทฐ์ ์์์ ์ด ์๋๋ผ ์ฑ ๊ท์น์ ํตํด ์ผ์ด๋ฉ๋๋ค.
Airtable์์๋ ๋ง์ ๊ท์น์ด โ๋ทฐ ์์ โ์ ์กด์ฌํฉ๋๋ค. ๋กค์ ์ ํฉ๊ณ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ , ์์์ ๊ณ์ฐ๊ฐ์ ๋ณด์ฌ์ฃผ๋ฉฐ, ํํฐ๋ ๋ทฐ๋ ๋ ์ฝ๋๋ฅผ ์จ๊น๋๋ค. PostgreSQL์์๋ ์ด๋ฌํ ๋์๋ค์ด ๋ณดํต ๊ด๊ณ, ์ง๊ณ ์ฟผ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ์ฑ ๋ก์ง์ผ๋ก ๋ฐ๋์ด ์ฌ์ฉ์๊ฐ ์ฑ์ ์ด๋์ ์๋ ์ผ๊ด๋๊ฒ ์คํ๋ฉ๋๋ค.
์ผ๋ถ Airtable ๋์์ 1:1๋ก ๋งคํ๋์ง ์์ต๋๋ค. โ๊ทธ๋ฅ ์๋ํ๋โ ๋งํฌ ํ๋๋ ๋ ์๊ฒฉํ ๊ท์น์ ๊ฐ์ง ์กฐ์ธ ํ ์ด๋ธ์ด ๋ ์ ์์ต๋๋ค. ํ ์คํธ, ๋ ์ง, ๋ฃฉ์ ์ ์๋ ์์์ SQL ํํ์, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ทฐ, ๋๋ ๋ฐฑ์๋ ๋ก์ง์ผ๋ก ๋ฐ๋ ์ ์์ต๋๋ค.
๊ฐ๋จํ ์: Airtable์์ ๋งค๋์ ๋ ๋ทฐ์ ๋กค์ ์ ํตํด โ์ด ํ์ดํ๋ผ์ธโ์ ๋ณผ ์ ์์ต๋๋ค. ํ๋ก๋์ ์ฑ์์๋ ๋์ผํ ์ซ์๊ฐ ๊ถํ์ ์ค์ํด์ผ ํ๊ณ (์ด๋ค ๋์ ๋ณผ ์ ์๋?), ์์ธก ๊ฐ๋ฅํ๊ฒ ๊ฐฑ์ ๋๋ฉฐ ๋ณด๊ณ ์์์ ์ฌํ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
์ค์ ์ํฌํ๋ก์ ๋ง์ถ Airtable ๊ฐ์ฌ๋ก ์์ํ์ธ์
Airtable์์ PostgreSQL๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ธฐ ์ ์ ๋ฒ ์ด์ค๊ฐ ์ค์ ๋ก ์ด๋ป๊ฒ ๋งค์ผ ์ฌ์ฉ๋๋์ง ์ ์ด๋์ธ์. Airtable์ ์ข ์ข โ์ด์ ์๋ ์คํ๋ ๋์ํธโ๋ก ์์ํ๋ฏ๋ก ๋์ผํ ํ ์ด๋ธ์ด ๋ฆฌํฌํ , ์น์ธ, ๋น ๋ฅธ ํธ์ง์ ๋์์ ํ๊ฒ ๋ฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ๋ฐ ์ฑ์ ๋ ๋ช ํํ ๊ท์น์ ํ์๋ก ํฉ๋๋ค.
์กด์ฌํ๋ ํญ๋ชฉ์ ๋ชฉ๋กํํ์ธ์. ์ฌ๋๋ค์ด ์๋ ๋ถ๋ถ๋ค(์: โ์์โ ๋ทฐ, ์ผํ์ฑ ์คํฌ๋ฆฝํธ)๋ ํฌํจํฉ๋๋ค.
- ํ ์ด๋ธ(์จ๊น ๋๋ ๋ณด๊ด๋ ํ ์ด๋ธ ํฌํจ)
- ํ์ด ์์กดํ๋ ๋ทฐ์ ํํฐ(ํนํ '๋ด ์์ ' ๊ฐ์ ๋ทฐ)
- ์ธํฐํ์ด์ค, ํผ, ๊ฐ ์ธํฐํ์ด์ค์ ์ฌ์ฉ์
- ์๋ํ, ์คํฌ๋ฆฝํธ, ํตํฉ
- ์์์ ๋ฃจํด(๋ณต์ฌ/๋ถ์ฌ๋ฃ๊ธฐ ์ํฌํธ, ์ฃผ๊ฐ ์ ๋ฆฌ)
๋ค์์ผ๋ก ํ๋๋ฅผ ์ง์ค์ ์ถ์ฒ(source of truth)์ธ์ง ํ์๊ฐ(derived)์ธ์ง ํ์ํ์ธ์.
- ์ถ์ฒ ํ๋๋ ์ฌ๋์ด ์ ๋ ฅํ๊ฑฐ๋ ์ ๋ขฐํ ์ ์๋ ์์คํ ์ด ์ฑ์ฐ๋ ๊ฐ์ ๋๋ค(์: ๊ณ ๊ฐ ์ด๋ฉ์ผ, ๊ณ์ฝ ์๋ช ๋ ์ง).
- ํ์ ํ๋๋ ๋กค์ , ์์, ๋ฃฉ์ , ๋ค๋ฅธ ๋ฐ์ดํฐ๋ก๋ถํฐ ์ ๋๋๋ ์ํ ํ๋๊ทธ์ ๋๋ค.
์ด๋ ์ผ๋ถ ํ์๊ฐ์ ์ ์ฅ๋์ด์ผ(ํ์คํ ๋ฆฌ์ ๊ฐ์ฌ์ฉ) ํ๊ณ , ๋ค๋ฅธ ๊ฐ์ ํ์ํ ๋ ๊ณ์ฐ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ค์ํฉ๋๋ค.
์ค์ฉ์ ์ธ ๊ท์น: ์ฌ๋๋ค์ด โ๊ทธ ์์ ์ ๊ฐโ์ ์์์ผ ํ๋ค๋ฉด(์: ๋์ด ๋ซํ์ ๋์ ์ปค๋ฏธ์ ), ์ ์ฅํ์ธ์. ๋จ์ง ํ์์ฉ์ด๋ผ๋ฉด(์: โ๋ง์ง๋ง ํ๋ ์ดํ ์ผ์โ) ๊ณ์ฐํ์ธ์.
ํต์ฆ ์ง์ ์ ํ์ดํ ์ธ์ด๋ก ์ ์ด ๋์ธ์. ์: โDeals ๋ทฐ๊ฐ ๋ก๋๋๋ ๋ฐ 20์ด ๊ฑธ๋ฆฐ๋คโ, โ๋งค๋์ ๊ฐ ๊ธ์ฌ ํ๋๋ฅผ ๋ณผ ์ ์๋คโ, โ์ํฌํธ ํ ๊นจ์ง ๋งํฌ๋ฅผ ๊ณ์ ๊ณ ์น๋ค.โ ์ด๋ฌํ ํญ๋ชฉ๋ค์ ์ ์ฑ์์ ๊ถํ, ์ฑ๋ฅ, ๋ฐ์ดํฐ ๊ฒ์ฌ์ ๊ดํ ์ค์ ์๊ตฌ์ฌํญ์ด ๋ฉ๋๋ค.
๋ฐ์ดํฐ ๋ชจ๋ธ ๋ฒ์ญ: ํ ์ด๋ธ, ํ๋, ID
Airtable์์ PostgreSQL๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ๋ ๊ฐ์ฅ ํฐ ์ฌ๊ณ ๋ฐฉ์ ์ ํ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋ ์ด๋ธ๊ณผ ๋ ์ด์์์ด ๋ฐ๋์ด๋ ์ง์ค์ ์ ์งํ๋ ๊ท์น์ ํ์๋ก ํ๋ค๋ ๊ฒ์ ๋๋ค. Airtable์ โ์ ์ ์ค๋ ๋ฌด์์ด ๋ค์ด์๋๊ฐโ์ ๊ด๋ํ์ง๋ง PostgreSQL์ ๊ทธ๋ ์ง ์์์ผ ํฉ๋๋ค.
๊ฐ Airtable ํ ์ด๋ธ์ ์์ ์ ์ธ ๊ธฐ๋ณธ ํค๋ฅผ ๊ฐ์ง ์ค์ ์ํฐํฐ๋ก ๋ฒ์ญํ๋ ๊ฒ๋ถํฐ ์์ํ์ธ์. ์ฌ๋ ์ด๋ฆ(์: โAcme, Inc.โ)์ ID๋ก ์ฌ์ฉํ์ง ๋ง์ธ์. ์ด๋ฆ์ ๋ฐ๋๊ณ ์คํ๊ฐ ์๊ธฐ๋ฉฐ ์ถฉ๋์ด ๋ ์ ์์ต๋๋ค. ๋ด๋ถ ID(๋ณดํต UUID๋ ์ซ์ ID)๋ฅผ ์ฌ์ฉํ๊ณ ์ด๋ฆ์ ํธ์ง ๊ฐ๋ฅํ ์์ฑ์ผ๋ก ์ ์งํ์ธ์.
ํ๋ ํ์ ์ ์ฌ๊ฒํ ํด์ผ ํฉ๋๋ค. Airtable์ 'number'์ 'text'๋ ์ค์ํ ์ฐจ์ด๋ฅผ ์จ๊ธธ ์ ์์ต๋๋ค:
- ๊ฐ ์งํฉ์ด ์๊ณ ์๋ ค์ ธ ์์ผ๋ฉด ์ ์ด๋ ์ ํ์ง(์ํ, ์ฐ์ ์์, ๋ฑ๊ธ)๋ก ์ทจ๊ธํ์ธ์.
- ๊ธ์ก์ ํตํ ์ฐ์ฐ์ ์ ํฉํ ์ซ์ ํ์ ์ผ๋ก ์ ์ฅํ๊ณ ํตํ๋ฅผ ๊ฒฐ์ ํ์ธ์.
- ์๊ฐ์ ๋ ์ง(์๊ฐ ์์)์ ํ์์คํฌํ(์ ํํ ์๊ฐ) ์ค ํ๋๋ฅผ ๊ฒฐ์ ํ์ธ์.
๋น๊ฐ์ ๋ํด์๋ ๋ช ํํ ์ ์ฑ ์ด ํ์ํฉ๋๋ค. Airtable์ ์ข ์ข '๋น', '0', '์ ์ ์์'์ ์์ด ์ฐ๊ธฐ ์ฌ์ด๋ฐ PostgreSQL์์๋ ๊ฐ ์ํ์ ์๋ฏธ๋ฅผ ์ ํด์ผ ํฉ๋๋ค:
- ์ง์ง๋ก ๋ชจ๋ฅผ ๋๋ NULL์ ์ฌ์ฉํ์ธ์.
- ์ผ๋ฐ์ ์ธ ๊ฐ์ด ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ฉํ์ธ์(์: status = "new").
- ๋น ๋ฌธ์์ด์ด '๋๋ฝ'์ ์๋ฏธํ๋ฉด ๋น ๋ฌธ์์ด์ NULL๋ก ๋ณํํ์ธ์.
- ๋น ๋ฌธ์์ด์ด ์๋ฏธ๊ฐ ์์ ๋๋ง ๋น ๋ฌธ์์ด์ ์ ์งํ์ธ์.
- ๊ฐ๋จํ ๊ฒ์ฌ(์: amount >= 0)๋ฅผ ์ถ๊ฐํด ์๋ชป๋ ์ํฌํธ๋ฅผ ์ก์ผ์ธ์.
๋ง์ง๋ง์ผ๋ก ์ค์ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ๋ช ๊ฐ์ง ์ธ๋ฑ์ค๋ฅผ ์ถ๊ฐํ์ธ์. ์ฌ๋๋ค์ด ๋งค์ผ ๊ณ์ , ์ํ, ์์ฑ์ผ๋ก ํํฐํ๋ค๋ฉด ํด๋น ์ปฌ๋ผ๋ค์ด ์ข์ ํ๋ณด์ ๋๋ค. ์ค์ง์ ์ธ ์ฑ๋ฅ ๋ฐ์ดํฐ๊ฐ ๋์ค๊ธฐ ์ ๊น์ง ๊ณผ๋ํ ์ธ๋ฑ์ฑ์ ํผํ๋, ๋ช ๋ฐฑํ ๊ฒ๋ค์ ๊ฑด๋๋ฐ์ง ๋ง์ธ์.
์: 'Deals' ํ ์ด๋ธ์ deals(id, account_id, stage, amount, close_date, created_at)์ฒ๋ผ ๋ ์ ์์ต๋๋ค. ์ด ๊ตฌ์กฐ๋ ์ด๋ค UI๋ฅผ ์์ ์ฌ๋ฆฌ๋ ์์ ์ ์ผ๋ก ์ ์ง๋ฉ๋๋ค.
๋งํฌ๋ ๋ ์ฝ๋: ๋งํฌ๋ฅผ ๊ด๊ณ์ ์กฐ์ธ ํ ์ด๋ธ๋ก ๋ฐ๊พธ๊ธฐ
Airtable์ ๊ด๊ณ๋ฅผ ๊ฐ๋จํ๊ฒ ๋๊ปด์ง๊ฒ ๋ง๋ญ๋๋ค: ๋งํฌ ํ๋๋ฅผ ์ถ๊ฐํ๋ฉด ๋์ธ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค. PostgreSQL์์๋ ๊ทธ ๋งํฌ๊ฐ ๋ฌด์์ ์๋ฏธํ๋์ง ๊ฒฐ์ ํด์ผ ํฉ๋๋ค.
์ฐ์ ์นด๋๋๋ฆฌํฐ๋ถํฐ ๋ณด์ธ์: ๊ฐ ๋ ์ฝ๋๊ฐ ํ๋์ ๋์๋ง ๊ฐ์ง ์ ์๋์, ์๋๋ฉด ์ฌ๋ฌ ๊ฐ๋ฅผ ๊ฐ์ง ์ ์๋์?
- ์ผ๋๋ค: ํ๋์ Company๋ ์ฌ๋ฌ Contacts๋ฅผ ๊ฐ์ง์ง๋ง ๊ฐ Contact๋ ํ๋์ Company์ ์ํฉ๋๋ค.
- ๋ค๋๋ค: ํ๋์ Contact๊ฐ ์ฌ๋ฌ Deals์ ์ผํ ์ ์๊ณ , ํ๋์ Deal์ ์ฌ๋ฌ Contacts๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค.
PostgreSQL์์๋:
- ์ผ๋๋ค ๋งํฌ๋ ๋ณดํต โ๋ง์โ ์ชฝ์ ๋จ์ผ ์ปฌ๋ผ(์: contacts.company_id)์ ๋๋ค.
- ๋ค๋๋ค ๋งํฌ๋ ๋ณดํต deal_contacts(deal_id, contact_id) ๊ฐ์ ์กฐ์ธ ํ ์ด๋ธ์ด ๋ฉ๋๋ค.
์กฐ์ธ ํ ์ด๋ธ์ ์ฌ๋๋ค์ด ๊ด๊ณ์ ๋ชฐ๋ ๋ฃ๋ ์ถ๊ฐ ์ ๋ณด(์: role_on_deal, added_by)๋ ๋ด์ ์ ์์ต๋๋ค.
์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ์ผ๋ก ๋งํฌ๋ฅผ ์์ ํ๊ฒ ์ ์งํ์ธ์
Airtable์ ์๊ฐ์ด ์ง๋๋ฉด์ ๋งํฌ๊ฐ ์๋ง์ด ๋๋๋ก ๋ด๋ฒ๋ ค๋ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ๋ฐ ์ฑ์์๋ ์ธ๋ ํค์ ๋ช ํํ ์ญ์ ๊ท์น์ผ๋ก ์ด๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
๋ค์ ์ฌํญ์ ๊ฒฐ์ ํ์ธ์:
- ์ญ์ ์ ์ฐ์ ์ญ์ (cascade), ์ ํ(restrict), ๋๋ ๋งํฌ๋ฅผ NULL๋ก ์ค์ ํ ์ง?
- ๊ณ ์ ํ(์: ์ค์ ๋์ด๋ ์ปจํ์ด ์๋ deal_contacts)์ ์ฐจ๋จํ ์ง?
ID์ ํ์ ์ด๋ฆ
Airtable์ ๋งํฌ ๋ผ๋ฒจ๋ก ์น์ํ '์ฃผ์ ํ๋'๋ฅผ ๋ณด์ฌ์ค๋๋ค. PostgreSQL์ ์์ ์ ์ธ ํค(์ซ์ ID๋ UUID)๋ฅผ ์ ์ฅํ๊ณ ์ฑ์ด ์น์ํ ์ด๋ฆ์ ํ์ํ๋๋ก ํด์ผ ํฉ๋๋ค.
์ค์ฉ์ ํจํด: ๊ณณ๊ณณ์ company_id๋ฅผ ์ ์ฅํ๊ณ companies.name(๋ฐ ํ์ ์ companies.code)์ ๊ฒ์ยทํ์์ ์ฌ์ฉํ์ธ์.
๋กค์ : ๋ทฐ ์์ ์ ๊ณ์ฐ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ง๊ณ๋ก
Airtable์์ ๋กค์ ์ '๊ด๋ จ ๋ ์ฝ๋ ๊ฐ์ ๊ณ์ฐ'์ ๋๋ค. ํ๋์ ํ๋์ฒ๋ผ ๋ณด์ด์ง๋ง ์ค์ ๋ก๋ ์ฌ๋ฌ ํ์ ์์ฝ์ ๋๋ค: ์นด์ดํธ, ํฉ๊ณ, ์ต์/์ต๋ ๋ ์ง, ํ๊ท , ๋๋ ๋งํฌ๋ฅผ ํตํด ๋์ด์จ ๋ชฉ๋ก ๋ฑ์ ๋๋ค.
PostgreSQL์์๋ ๊ฐ์ ์์ด๋์ด๊ฐ ์ง๊ณ ์ฟผ๋ฆฌ๊ฐ ๋ฉ๋๋ค. ๊ด๋ จ ํ ์ด๋ธ์ ์กฐ์ธํ๊ณ ๋ถ๋ชจ ๋ ์ฝ๋๋ณ๋ก ๊ทธ๋ฃนํํด ๋ด์ฅ ํจ์๋ฅผ ์ฌ์ฉํด ํฉ๊ณ๋ฅผ ๊ณ์ฐํฉ๋๋ค. Airtable์์ PostgreSQL๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ๋ ๋กค์ ์ ์คํ๋ ๋์ํธ์ ํ๋๊ฐ ์๋๋ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋ตํ ์ ์๋ ์ง๋ฌธ์ด ๋ฉ๋๋ค.
์ผ๋ฐ ๋กค์ ์ SQL๋ก ๋ฒ์ญํ๊ธฐ
์ผ๋ฐ์ ์ธ ํจํด:
- โ์ด ๊ณ ๊ฐ์ ์ด ์ธ๋ณด์ด์ค ๊ธ์กโ -> ๊ณ ๊ฐ๋ณ SUM(amount)
- โ์ด ํ๋ก์ ํธ์ ์ด๋ ค ์๋ ์์ ์โ -> ์ํ ํํฐ๋ฅผ ๋ COUNT(*)
- โ์ต์ ํ๋ ๋ ์งโ -> MAX(activity_date)
- โ์ด ๋ด๋น์ ํ๊ท ๋ ๊ท๋ชจโ -> AVG(deal_value)
Airtable ๋กค์ ์๋ ์ข ์ข โํ์ฑ ํญ๋ชฉ๋งโ ๋๋ โ์ง๋ 30์ผ๋งโ ๊ฐ์ ํํฐ๊ฐ ํฌํจ๋ฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ์ด๊ฒ์ด WHERE ์ ์ด ๋ฉ๋๋ค. ํ์์กด๊ณผ โ์ง๋ 30์ผโ์ ์ ์์ ๋ํด ๋ช ํํ ํ์ธ์. ํ๋ก๋์ ๋ฆฌํฌํ ์์๋ ํญ์ ์ง๋ฌธ๋ฐ์ต๋๋ค.
๊ณ์ฐ๋ ๋กค์ vs ์ ์ฅ๋ ๋กค์
๋ ๊ฐ์ง ์ต์ ์ด ์์ต๋๋ค:
- ํ์ํ ๋ ๊ณ์ฐ(ํญ์ ์ต์ , ์ ์ง๋ณด์ ์ฌ์).
- ์ ์ฅ(ํ๋ฉด์ด ๋น ๋ฅด์ง๋ง ์ ๋ฐ์ดํธ๋ฅผ ์ ์งํด์ผ ํจ).
์ค์ฉ ๊ท์น: ๋์๋ณด๋์ ๋ฆฌ์คํธ๋ ๊ณ์ฐ์ผ๋ก, ์๋ ๋๋ ์์ ์ ์ค๋ ์ท์ด ํ์ํ ๋๋ง ์ ์ฅ์ ๊ณ ๋ คํ์ธ์.
์์: ๋ฌด์์ SQL๋ก, ๋ฌด์์ ์ฑ ๋ก์ง์ผ๋ก ๋์ง ๊ฒฐ์ ํ๊ธฐ
Airtable์์ PostgreSQL๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ๋ ์์์ ๋ณดํต ๊ฐ์ฅ ์ธ์ฌํ ๋ฒ์ญ์ด ํ์ํฉ๋๋ค. Airtable์ ์์์ ๋ทฐ, ํํฐ, ์ํฌํ๋ก๋ฅผ ๋์์ ์กฐ์ฉํ ๊ตฌ๋ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ํ๋ก๋์ ์ฑ์์๋ ๊ฒฐ๊ณผ๊ฐ ์ผ๊ด๋๊ณ ๋น ๋ฅด๋ฉฐ ๋ชจ๋ ํ๋ฉด์์ ๋์ผํด์ผ ํฉ๋๋ค.
์์์ ์ค์ ์ฉ๋๋ณ๋ก ๋ถ๋ฅํ์ธ์:
- ํ์ํ: ๊ฐ์ "Q1 2026"์ด๋ "๋์ ์ฐ์ ์์" ๊ฐ์ ๋ผ๋ฒจ๋ก ๋ฐ๊พธ๊ธฐ
- ์กฐ๊ฑด ํ๋๊ทธ: "์ฐ์ฒด" ๋๋ "๊ฒํ ํ์" ๊ฐ์ TRUE/FALSE ์ฒดํฌ
- ๊ณ์ฐ: ํฉ๊ณ, ๋ง์ง, ๋ ์ง ์ฐจ์ด, ์ ์
- ๋ฃฉ์ : ๋งํฌ๋ ๋ ์ฝ๋์์ ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
- ๋น์ฆ๋์ค ๊ท์น: ์ฌ์ฉ์๊ฐ ํ ์ ์๋ ๊ฒ์ ๋ณ๊ฒฝํ๋ ๋ชจ๋ ๊ฒ(์๊ฒฉ, ์น์ธ)
๋จ์ ๊ณ์ฐ๊ณผ ํ๋๊ทธ๋ ๋๊ฐ SQL(์ฟผ๋ฆฌ ํํ์, ๋ทฐ, ๊ณ์ฐ ํ๋)์ ๋๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ชจ๋ ํ๋ฉด์ด ์ผ๊ด๋๊ณ ๋์ผํ ์ํ์ ์ฌ๋ฌ ๋ฒ ๊ตฌํํ๋ ์ผ์ ํผํ ์ ์์ต๋๋ค.
์์์ด ์ค์ ๊ท์น์ธ ๊ฒฝ์ฐ(์: โ๊ณ์ ์ด ํ์ฑ ์ํ์ด๊ณ ๋์ด $5,000 ์ด์์ด์ด์ผ๋ง ํ ์ธ ํ์ฉโ), ๋ณดํต ๋ฐฑ์๋ ๋ก์ง์ผ๋ก ์ฎ๊ฒจ์ผ ํฉ๋๋ค. ๊ทธ๋์ผ ๋ค๋ฅธ ํด๋ผ์ด์ธํธ, CSV ์ํฌํธ, ์ ๋ฆฌํฌํธ๊ฐ ์ฐํํ ์ ์์ต๋๋ค.
ํ์ ํ์๋ UI์ ๊ฐ๊น๊ฒ ์ ์งํ์ธ์. ํ์ ๋ผ๋ฒจ์ ์นยท๋ชจ๋ฐ์ผ ์ธํฐํ์ด์ค์์ ์์ฑํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ๋์ฝ๋ฉํ์ง ๋ง์ธ์.
ํ์ ์ ์ ํญ์ ์ผ์นํด์ผ ํ๋ ๋ช ๊ฐ์ง ์ถ๋ ฅ(์: ์ํ, ๋ฏธ์ง๊ธ ๊ธ์ก, SLA ์๋ฐ)์ ๊ณจ๋ผ ๊ทธ๋ค์ด ์ด๋์์ ๊ด๋ฆฌ๋๋์ง ๊ฒฐ์ ํ์ธ์. ๊ทธ๋ฐ ๋ค์ ๋ชจ๋ ํด๋ผ์ด์ธํธ์์ ํ ์คํธํด ์ฑ์์ ๋ณด๋ ๊ฐ์ด ์ฌ๋ฌด๊ฐ ๋ด๋ณด๋ด๋ ๊ฐ๊ณผ ์ผ์นํ๋์ง ํ์ธํ์ธ์.
๊ถํ ์ฌ์ค๊ณ: ์ญํ , ๋ ์ฝ๋ ์ ๊ทผ, ๊ฐ์ฌ ๊ธฐ๋ก
Airtable ๊ถํ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ๋จํด ๋ณด์ ๋๋ค. ์ฃผ๋ก ๋ฒ ์ด์ค, ํ ์ด๋ธ, ๋ทฐ ๊ธฐ๋ฐ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ์ง๋ง ํ๋ก๋์ ์ฑ์์๋ ๊ทธ ์ ๋๋ก๋ ์ถฉ๋ถํ์ง ์์ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ทฐ๋ ์ํฌํ๋ก์ ์ ์ฉํ์ง๋ง ๋ณด์ ๊ฒฝ๊ณ๊ฐ ๋์ง ์์ต๋๋ค. Airtable์์ PostgreSQL๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ๋๋ โ๋๊ฐ ์ด๊ฑธ ๋ณผ ์ ์๋?โ๋ผ๋ ๊ฒฐ์ ์ API, UI, ์์ถ, ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ๋ฑ ๋ชจ๋ ๊ณณ์์ ์ ์ฉ๋๋ ์ ๊ทผ ๊ท์น์ผ๋ก ์ฒ๋ฆฌํ์ธ์.
๋จผ์ ์ฑ์ ํ์ํ ์ญํ ์ ์ฌ๋๋ค์ ํญ์ด ์๋๋ผ ์ค์ ์ญํ ๋จ์๋ก ๋์ดํ์ธ์. ์ผ๋ฐ์ ์ธ ์งํฉ:
- Admin: ์ค์ , ์ฌ์ฉ์, ๋ชจ๋ ๋ฐ์ดํฐ ๊ด๋ฆฌ
- Manager: ๋ณ๊ฒฝ ์น์ธ ๋ฐ ํ ์์ ๋ณด๊ธฐ
- Staff: ํ ๋น๋ ๋ ์ฝ๋ ์์ฑยท์ ๋ฐ์ดํธ, ์ ํ๋ ๋ฆฌํฌํ
- Customer: ์์ ์ ์์ฒญ, ์ธ๋ณด์ด์ค, ์ํ ๋ณด๊ธฐ
๊ทธ๋ค์ ๋ ์ฝ๋ ์์ค ๊ท์น(ํ ์์ค ์ ๊ทผ)์ ์ ์ํ์ธ์. ๋ง์ ์ค์ ์ฑ์ ๋ค์ ํจํด ์ค ํ๋๋ก ๊ท๊ฒฐ๋ฉ๋๋ค: "๋ด ๋ ์ฝ๋๋ง", "๋ด ํ", ๋๋ "๋ด ์กฐ์ง". ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํ ์์ค ๋ณด์(row-level security)๋ก ๊ฐ์ ํ๋ API ๋ ์ด์ด์์ ํ๋ ํต์ฌ์ ์ผ๊ด์ฑ์ ๋๋ค. ๋ชจ๋ ์ฟผ๋ฆฌ(์์ถ ๋ฐ '์จ๊ฒจ์ง' ํ๋ฉด ํฌํจ)์ ๊ท์น์ด ์ ์ฉ๋์ด์ผ ํฉ๋๋ค.
๊ฐ์ฌ๋ฅผ ์ฒ์๋ถํฐ ๊ณํํ์ธ์. ๊ฐ ๋ณ๊ฒฝ์ ๋ํด ๋ฌด์์ ๊ธฐ๋กํด์ผ ํ๋์ง ๊ฒฐ์ ํ์ธ์:
- ๋๊ฐ ํ๋๊ฐ(์ฌ์ฉ์ ID, ์ญํ )
- ๋ฌด์์ด ๋ฐ๋์๋๊ฐ(ํ์ํ ๋ ํ๋๋ณ ์ด์ /์ดํ)
- ์ธ์ ์ผ์ด๋ฌ๋๊ฐ(ํ์์คํฌํ์ ํ์์กด)
- ์ด๋์ ์๋๊ฐ(UI, ์ํฌํธ, API)
- ์(์ ํ์ ๋ฉ๋ชจ๋ ์ด์ ์ฝ๋)
๋๋ผ์์ ํผํ๋ ๋จ๊ณ๋ณ ๋ง์ด๊ทธ๋ ์ด์ ๊ณํ
๊ฐ์ฅ ์์ ํ ๋ง์ด๊ทธ๋ ์ด์ ์ ์ง๋ฃจํ๊ฒ ๋๊ปด์ง๋๋ค. ๋ ์ง๋ฅผ ์ ํ๊ณ ๋ณ๊ฒฝ ์์๋ฅผ ์ค์ด๋ฉฐ ์ด์ ๋ฒ ์ด์ค์ ์ ์ฑ์ ๋น๊ตํ๊ธฐ ์ฝ๊ฒ ๋ง๋์ธ์.
์ด๋ ์ผ์ฃผ์ผ ์ ์๋ ์คํค๋ง ๋ณ๊ฒฝ์ ์ค๋จํ์ธ์. ์ปคํธ์ค๋ฒ ๋ ์ง์ ํฉ์ํ๊ณ ๊ท์น์ ์ ํ์ธ์: ์ ํ ์ด๋ธ ๊ธ์ง, ์ ํ๋ ๊ธ์ง, ํ๋ ์ด๋ฆ ๋ณ๊ฒฝ ๊ธ์ง. ์์ ๋ณ๊ฒฝ๋ ์ํฌํธ์ ์์์ ์กฐ์ฉํ ๊นจ๋จ๋ฆด ์ ์์ต๋๋ค.
๊ฐ๋จํ 5๋จ๊ณ ๊ณํ:
- ๊ตฌ์กฐ๋ฅผ ๊ณ ์ ํ๊ณ โ์๋ฃโ์ ์๋ฏธ๋ฅผ ์ ์(์ด๋ค ํ๋ฉด, ์ํฌํ๋ก, ๋ฆฌํฌํธ๊ฐ ์ผ์นํด์ผ ํ๋์ง).
- ๋ฐ์ดํฐ๋ฅผ ๋ด๋ณด๋ด Airtable ๋ฐ์์ ์ ๋ฆฌ. ๋ฉํฐ์ ๋ ํธ ์ ๋ฆฌ, ๊ฒฐํฉ ํ๋ ๋ถ๋ฆฌ, ๋งํฌ๊ฐ ์ ์ง๋๋๋ก ์์ ์ ์ธ ID ์์ฑ.
- PostgreSQL ์คํค๋ง ์์ฑ ํ ๋ฐฐ์น๋ก ์ํฌํธํ๊ณ ๊ฒ์ฌ ์ํ. ํ ์, ํ์ ํ๋, ์ ๋ํฌ, ์ธ๋ํค ๊ฒ์ฆ.
- ๋งค์ผ ์ฌ๋๋ค์ด ์ฌ์ฉํ๋ ํต์ฌ ํ๋ฉด๊ณผ ์์ฑ/์ ๋ฐ์ดํธ ํ๋ฆ์ ๋จผ์ ์ฌ๊ตฌ์ฑ.
- ์งง์ ๋ณํ ์ด์ ํ ์ปคํธ์ค๋ฒ. ๋กค๋ฐฑ ๊ณํ(์ฝ๊ธฐ ์ ์ฉ Airtable, ์ปคํธ์ค๋ฒ ์ PostgreSQL ์ค๋ ์ท, ์ฌ๊ฐํ ๋ถ์ผ์น๊ฐ ๋์ค๋ฉด ์ค๋จ ๊ท์น) ์ค๋น.
์: ์์ ์ด์ ๋ฒ ์ด์ค์ ๊ฒฝ์ฐ ๋ ์์คํ ์ ์ผ์ฃผ์ผ ๋์ ๋ณํ ์ด์ํ์ธ์. ๋ด๋น์๋ ์ ์ฑ์ ํ๋์ ๊ธฐ๋กํ์ง๋ง ํ์ ๋งค์ผ ์์นจ Airtable๊ณผ ํ์ดํ๋ผ์ธ ํฉ๊ณ๋ฅผ ๋น๊ตํด ์ซ์๊ฐ ์ผ๊ด๋๊ฒ ๋ง์ ๋๊น์ง ํ์ธํฉ๋๋ค.
๋ฐ์ดํฐ ํ์ง ๋ฐ ํ ์คํธ: ์ ์ฑ์ด ํ์ค๊ณผ ์ผ์นํจ์ ์ฆ๋ช ํ์ธ์
๋๋ถ๋ถ์ ๋ง์ด๊ทธ๋ ์ด์ ๋ฒ๊ทธ๋ 'PostgreSQL ๋ฒ๊ทธ'๊ฐ ์๋๋๋ค. Airtable์ด ์๋ฏธํ๋ ๊ฒ๊ณผ ์ ํ ์ด๋ธ์ด ์ ์ฅํ๋ ๊ฒ ์ฌ์ด์ ๋ถ์ผ์น์ ๋๋ค. ํ ์คํธ๋ฅผ ๋ฐ์ดํฐ ์์ ์ ์ผ๋ถ๋ก ์ฌ๊ธฐ๊ณ ๋ง์ง๋ง ์๊ฐ ์์ ์ผ๋ก ๋์ง ๋ง์ธ์.
๊ฐ๋จํ ๋งคํ ์ํธ๋ฅผ ์ ์งํ์ธ์. Airtable์ ๊ฐ ํ๋์ ๋ํด ๋์ Postgres ์ปฌ๋ผ๊ณผ ์ฑ์์ ์ฌ์ฉ๋๋ ์์น(ํ๋ฉด, ๋ฆฌํฌํธ, ์ํ ๊ท์น)๋ฅผ ์ ์ผ์ธ์. ์ด๋ก์จ โ์ํฌํธ๋ ํ์โ์ด โ์ ๋ ์ ์โ์ผ๋ก ๋ฐ๋๋ ์ผ์ ๋ง์ ์ ์์ต๋๋ค.
๋น ๋ฅธ ๊ฒ์ฆ๋ถํฐ ์์ํ์ธ์:
- ์ํฌํธ ์ ํ ํ ์ด๋ธ๋ณ ํ ์ ๋น๊ต
- ๋๋ฝ๋ ๋งํฌ(์๋ฌด๊ฒ๋ ๊ฐ๋ฆฌํค์ง ์๋ ์ธ๋ํค) ํ์ธ
- ์ค์ ๋ก๋ ๊ณ ์ ํ๋ ๊ฐ๋ค(์ด๋ฉ์ผ, ๋ ID)์์ ์ค๋ณต ์ฐพ๊ธฐ
- Airtable์์ ํผ์ ํตํด ํ์ฉํ๋ ํ์ ํ๋ ๋น์ด ์์ ์ฌ๋ถ ์ฐพ๊ธฐ
๋ค์์ผ๋ก ์ฌ๋๋ค์ด ์์กดํ๋ ๊ณ์ฐ๋ค์ ๊ฒ์ฆํ์ธ์. ์ค์ ๋ ์ฝ๋๋ฅผ ๊ณจ๋ผ ํฉ๊ณ, ์ํ, ๋กค์ ์ ์๋ ค์ง ์์ ์ ๋น๊ตํ์ธ์. ์์ ๋์ฒด๊ฐ ํํ ์ด๊ธ๋๋ ์ง์ ์ ๋น๊ฐ, 0, ๋๋ฝ๋ ๋งํฌ๊ฐ ๋ค๋ฅด๊ฒ ๋์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ง์ง๋ง์ผ๋ก ์ผ๋ถ ์์ง ์ผ์ด์ค ๋ฐ์ดํฐ๋ฅผ ์๋์ ์ผ๋ก ํ ์คํธํ์ธ์: ๋น๊ฐ, ์ญ์ ๋ ๋งํฌ, ๊ธด ํ ์คํธ, ํน์๋ฌธ์, ์ค๋ฐ๊ฟ ๋ฑ. "O'Neil" ๊ฐ์ ์ด๋ฆ๊ณผ ์ฌ๋ฌ ์ค ๋ฉ๋ชจ๋ ์ํฌํธยทํ์ ์ด์์ ํํ ์์ธ์ ๋๋ค.
Airtable์ PostgreSQL๋ก ๋ฒ์ญํ ๋ ํํ ํจ์
๊ฐ์ฅ ํฐ ํจ์ ์ Airtable ๋ฒ ์ด์ค๋ฅผ ๋จ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ด๋ณด๋ด๊ธฐ๋ก ์ทจ๊ธํ๋ ๊ฒ์ ๋๋ค. Airtable์ ์ ์ฅ, ๋ทฐ ๋ก์ง, ์์, ๊ณต์ ๊ท์น์ ์์ด ๋์ต๋๋ค. PostgreSQL์ ์ด๋ค ์ฑ ์์ ๋ถ๋ฆฌํฉ๋๋ค. ์ด๋ ํ๋ก๋์ ์์๋ ๊ฑด์ ํ์ง๋ง ๊ฐ ๋์์ ์ด๋์ ๋์ง ์ ํํ๋๋ก ๊ฐ์ ํฉ๋๋ค.
๋งํฌ๋ ๋ ์ฝ๋๋ ์ ํ์ ์ธ ์์ ๋๋ค. ๋ง์ ํ์ด ๋ชจ๋ ๋งํฌ๊ฐ ์ผ๋๋ค๋ผ๊ณ ๊ฐ์ ํ๋๋ฐ(๋จ์ผ ํ๋์ฒ๋ผ ๋ณด์ด๋ฏ๋ก) ์ค์ ๋ก๋ ๋ค๋๋ค์ธ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ด๋ฅผ ๋จ์ผ ์ธ๋ํค๋ก ๋ชจ๋ธ๋งํ๋ฉด ๊ด๊ณ๋ฅผ ์กฐ์ฉํ ์๊ณ ๋์ค์ ์ฐํ์ฑ ์ผ๋ก ๊ณ ์ํ๊ฒ ๋ฉ๋๋ค.
๋กค์ ์ ๋ค๋ฅธ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์์ต๋๋ค. ํ์ฌ ๋กค์ ์ซ์๋ฅผ ์ต์ข ์ฌ์ค๋ก ์ํฌํธํ๋ฉด ๊ทธ ์ซ์๊ฐ ์ด๋ป๊ฒ ๊ณ์ฐ๋๋์ง ์บก์ฒํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ฐ์ด ๋์ค์ ๋ฐ๋์์ ๋ ์ค๋ช ํ ์ ์์ต๋๋ค. ์ฌ๊ณ์ฐ ๊ฐ๋ฅํ ์ง๊ณ(SUM/COUNT)๋ฅผ ์ ํธํ๊ณ ์ ์๋ฅผ ๋ช ํํ ํ๋ฉฐ ์บ์ฑ์ด ํ์ํ๋ฉด ์ ๋ฐ์ดํธ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํ์ธ์.
๋ทฐ๋ ์ค๋ํ ์ ์์ต๋๋ค. ํ์ ์ข ์ข Airtable ๋ทฐ๋ฅผ ์ ์ฑ์์ ๊ณ ์ ํํฐ๋ก ์ฌ๊ตฌ์ฑํ ๋ค, ๊ทธ ๋ทฐ๊ฐ ๊ฐ์ธ ์ํฌํ๋ก์์ง ๊ณต์ ๋ ์๊ตฌ์ฌํญ์ด ์๋์ ๋ฐ๊ฒฌํฉ๋๋ค. ํํฐ๋ฅผ ๊ณ ์ ํ๊ธฐ ์ ์ ๋๊ฐ ๋ทฐ๋ฅผ ์ฌ์ฉํ๋์ง, ๋ค์์ผ๋ก ์ด๋ค ํ๋์ ์ทจํ๋์ง, ์ ์ฅ๋ ํํฐ๋ ์ธ๊ทธ๋จผํธ ๋๋ ๋์๋ณด๋๊ฐ ํ์ํ์ง ๋ฌผ์ด๋ณด์ธ์.
๋น ๋ฅธ ํจ์ ์ฒดํฌ๋ฆฌ์คํธ:
- ์ ๋ฆฌ๋์ง ์์ ์์ ํ ์คํธ ์ํ(โIn progressโ, โin-progressโ, โIPโ)
- ์ ์๋ ์ฌ๊ณ์ฐ ๊ณํ ์์ด ์ํฌํธ๋ ๋กค์ ๊ฐ
- ๋ค๋๋ค ๊ด๊ณ๋ฅผ ์ธ๋ํค ํ๋๋ก ๋ชจ๋ธ๋งํ ๊ฒฝ์ฐ
- ์ฌ์ฉ์ ์๋๋ฅผ ํ์ธํ์ง ์๊ณ ๊ณ ์ ๋ ํ๋ฉด์ผ๋ก ์ฌํํ ๋ทฐ
- ๊ถํ์ ๋ง์ง๋ง์ ์ถ๊ฐํด ๊ณ ํต์ค๋ฌ์ด ์ฌ์์ฑ ๋ฐ์
์์ ์๋๋ฆฌ์ค: ์์ ์ด์ ๋ฒ ์ด์ค๋ฅผ ์ค์ ์ฑ์ผ๋ก ์ฌ๊ตฌ์ถ
์์ Ops Airtable ๋ฒ ์ด์ค์ Accounts, Deals, Activities, Owners(์์ ๋ด๋น์ ๋ฐ ๋งค๋์ ) ๋ค ํ ์ด๋ธ์ด ์๋ค๊ณ ๊ฐ์ ํ์ธ์. Airtable์์ Deal์ ํ๋์ Account์ ํ๋์ Owner์ ๋งํฌ๋๊ณ , Activities๋ Deal์ ๋งํฌ๋ฉ๋๋ค(์ฝ, ์ด๋ฉ์ผ, ๋ฐ๋ชจ ๋ฑ).
PostgreSQL์์๋ ๋ค์๊ณผ ๊ฐ์ ๋ช ํํ ๊ด๊ณ๊ฐ ๋ฉ๋๋ค: deals.account_id๋ accounts.id๋ฅผ ๊ฐ๋ฆฌํค๊ณ , deals.owner_id๋ owners.id๋ฅผ ๊ฐ๋ฆฌํค๋ฉฐ, activities.deal_id๋ deals.id๋ฅผ ๊ฐ๋ฆฌํต๋๋ค. ๋ง์ฝ ๋์ ์ฌ๋ฌ ๋ด๋น์(์์ ๋ด๋น์ + ์ธ์ผ์ฆ ์์ง๋์ด)๊ฐ ํ์ํ๋ฉด deal_owners ๊ฐ์ ์กฐ์ธ ํ ์ด๋ธ์ ์ถ๊ฐํ์ธ์.
Airtable์ ์ผ๋ฐ์ ์ธ ์งํ๋ โAccount๋ณ Deal Value ๋กค์ โ(์ฐ๊ฒฐ๋ ๋ ๊ฐ์ ํฉ)์ ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ๋ฐ ์ฑ์์๋ ์ด ๋กค์ ์ ํ์ํ ๋ ์คํํ๋ ์ง๊ณ ์ฟผ๋ฆฌ๋ก ๋ง๋ค๊ฑฐ๋ ์บ์ ๋๋ ๋จธํฐ๋ฆฌ์ผ๋ผ์ด์ฆํ ์ ์์ต๋๋ค:
SELECT a.id, a.name,
COALESCE(SUM(d.amount), 0) AS total_pipeline
FROM accounts a
LEFT JOIN deals d ON d.account_id = a.id
AND d.stage NOT IN ('Closed Won', 'Closed Lost')
GROUP BY a.id, a.name;
์ด์ โHealth scoreโ ์์์ ์๊ฐํด๋ณด์ธ์. Airtable์์๋ ๋ชจ๋ ๊ฒ์ ํ๋์ ํ๋์ ๋ฃ๊ณ ์ถ์ง๋ง, ํ๋ก๋์ ์์๋ ์ ๋ ฅ๊ฐ์ ์ ์ฅํ๊ณ ๊ฐ์ฌ ๊ฐ๋ฅํ๊ฒ ์ ์งํ์ธ์(last_activity_at, next_step_date, open_deal_count, overdue_tasks_count). ๊ทธ๋ฐ ๋ค์ health_score๋ ๋ฐฑ์๋ ๋ก์ง์์ ๊ณ์ฐํด ๊ท์น์ ๋ฐ๊ฟ ๋ ์ด์ ๋ ์ฝ๋๋ฅผ ๋ค์ ์ฐ์ง ์์๋ ๋๊ฒ ํ์ธ์. ํํฐ๋ง๊ณผ ๋ฆฌํฌํ ์ ์ํด ์ต์ ์ ์๋ฅผ ์ ์ฅํ ์๋ ์์ต๋๋ค.
๊ถํ์ ๋ณดํต ๊ฐ์ฅ ํฌ๊ฒ ์ฌ๊ณ ํด์ผ ํฉ๋๋ค. ๋ทฐ ํํฐ ๋์ ๋ช ์์ ์ ๊ทผ ๊ท์น์ ์ ์ํ์ธ์:
- ๋ด๋น์๋ ์์ ์ ๋๊ณผ ํ๋๋ง ๋ณด๊ณ ํธ์งํ ์ ์์.
- ๋งค๋์ ๋ ํ์ ๋์ ๋ณผ ์ ์์.
- ์ฌ๋ฌด๋ Closed-won ์์ต์ ๋ณผ ์ ์์ง๋ง ๋น๊ณต๊ฐ ๋ ธํธ๋ ๋ณผ ์ ์์.
- Sales Ops๋ ๋จ๊ณ์ ์ ์ ๊ท์น์ ๊ด๋ฆฌํ ์ ์์.
์ถ์ ์ ๋น ๋ฅธ ์ฒดํฌ๋ฆฌ์คํธ
๋ผ์ด๋ธ ์ ์ 'Airtable ๋๋'์ด ์์ ์ ์ด๊ณ ํ ์คํธ ๊ฐ๋ฅํ๋ฉฐ ์์ ํ ๊ฒ์ผ๋ก ๋ฒ์ญ๋์๋์ง ์ต์ข ์ ๊ฒ์ ํ์ธ์. ์์ ๊ฐญ์ด ์ค์ ์ฌ๊ฑด์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
์ถ์ ์ ์ ๊ฒ ํญ๋ชฉ:
- ๊ด๊ณ: ์ด์ ๋งํฌ๋ ๋ ์ฝ๋๋ง๋ค ๋ช ์์ ๊ด๊ณ ํ์ (์ผ๋๋ค, ๋ค๋๋ค)๊ณผ ๋ช ํํ ํค ์ ๋ต(์์ ์ ID, ์ ๋ํฌ ์ ์ฝ, ์ญ์ ๊ท์น)์ด ์๋๊ฐ?
- ์ง๊ณ: ํญ์ ์ ํํด์ผ ํ๋ ํฉ๊ณ(์ธ๋ณด์ด์ค, ์ฟผํฐ, ์๊ฒฉ ๊ธฐ์ค)์ ์ฝ๊ฐ ์ง์ฐ๋์ด๋ ๊ด์ฐฎ์ ๊ฒ(๋์๋ณด๋)์ ๊ตฌ๋ถํ๋๊ฐ?
- ์์ฌ๊ฒฐ์ ๋ก์ง: ์น์ธ, ๊ฐ๊ฒฉ, ์ปค๋ฏธ์ , ์๊ฒฉ์ฒ๋ผ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๊พธ๋ ์์์ ์ ์ ํ ๊ณณ(SQL vs ๋ฐฑ์๋)์ ๊ตฌํํ๊ณ ํ ์คํธํ๋๊ฐ?
- ๊ถํ: ๊ฐ ์ญํ ์ ๋ํด ์ค์ ์ฌ์ฉ์ ์คํ ๋ฆฌ๋ฅผ ๋๊น์ง(์์ฑ, ํธ์ง, ์์ถ, ์ญ์ , ์น์ธ) ์คํํด ๋ ์ฝ๋ ์์ค ์ ๊ทผ์ ํ์ธํ๋๊ฐ?
- ์์ ๊ถ ๋ฐ ๋ฐฐํฌ: ์คํค๋ง ๋ณ๊ฒฝ์ ๋๊ฐ ์์ ํ๋์ง, ๋ก์ง ๋ณ๊ฒฝ์ ๋๊ฐ ๊ฒํ ํ๋์ง, ๋กค๋ฐฑ์ ์ด๋ป๊ฒ ๋๋์ง, ์ฑ์ ์ด๋์ ์ด์๋๋์ง ๊ฒฐ์ ํ๋๊ฐ?
ํ์ค ๊ฒ์ฆ: ๋ง์ฝ ์์ ๋ด๋น์๊ฐ Airtable์์ "Account Tier"๋ฅผ ํธ์งํ ์ ์๊ณ ๊ทธ ํฐ์ด๊ฐ ํ ์ธ์ ์ํฅ์ ์ค๋ค๋ฉด, ์๋ง๋ ํธ์ง ๊ถํ์ ๊ด๋ฆฌ์๋ง์ผ๋ก ์ ํํ๋ ๊ถํ ๋ณ๊ฒฝ๊ณผ ๋๊ฐ ์ธ์ ๋ณ๊ฒฝํ๋์ง ๊ธฐ๋กํ๋ ๊ฐ์ฌ ๋ก๊ทธ๊ฐ ๋ชจ๋ ํ์ํ ๊ฒ์ ๋๋ค.
๋ค์ ๋จ๊ณ: ๊ตฌ์ถ, ์ถ์, ์ง์ ๊ฐ์
Airtable์์ PostgreSQL๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ํ ๊ฐ์ฅ ํฐ ์ํ์ ๋ชจ๋ ๊ฒ์ ํ๊บผ๋ฒ์ ๋ค์ ๋ง๋ค๋ ค๊ณ ํ๋ ๊ฒ์ ๋๋ค. ์ค์ ์ฌ์ฉ์์ ํจ๊ป ํ๋์ ์ํฌํ๋ก๋ฅผ ๋๊น์ง ์คํํ๋ ํ์ผ๋ฟ์ผ๋ก ์์ํ์ธ์. "๋ ์ฝ๋ ์์ฑ - ์น์ธ - ์๋ฆผ - ๋ฆฌํฌํธ" ๊ฐ์ ์ธก์ ๊ฐ๋ฅํ ์์ ์ ์ ํํ๊ณ ๋ฒ์๋ฅผ ์๊ฒ ์ ์งํ์ธ์.
ํ์ผ๋ฟ์ ์ ํ์ฒ๋ผ ๋ค๋ฃจ์ธ์. ๋น๊ธฐ์ ๋ด๋น์๋ ๋ ๊ฐ์ง ์ง๋ฌธ์ ๋น ๋ฅด๊ฒ ๋ตํ ์ ์๋๋ก ์ ๋ฐ์ดํฐ ๋ชจ๋ธ๊ณผ ๊ถํ ๊ท์น์ ํ์ดํ ์ธ์ด๋ก ๋ฌธ์ํํ์ธ์: โ์ด ๊ฐ์ ์ด๋์์ ์ค๋?โ์ โ๋๊ฐ ๋ณผ ์ ์๊ณ ๋ฐ๊ฟ ์ ์๋?โ
๋ฌธ์๋ฅผ ๊ฐ๋ณ๊ฒ ์ ์งํ์ธ์. ๋๋ถ๋ถ์ ํ์ ๋ค์์ผ๋ก ์ถฉ๋ถํฉ๋๋ค:
- ์ฃผ์ ํ ์ด๋ธ๊ณผ ๊ฐ ํ ์ด๋ธ์ด ์๋ฏธํ๋ ๋ฐ
- ์ค์ํ ๊ด๊ณ(์ญ์ /๋ณด๊ด ์ ์ด๋ค ๋์์ ํด์ผ ํ๋์ง)
- ์ด๋ค ํ๋๊ฐ ๊ณ์ฐ๋๋์ง(SQL vs ์ฑ ๋ก์ง)์ ๊ทธ ์ด์
- ์ญํ , ๋ ์ฝ๋ ์์ค ์ ๊ทผ ๊ท์น, ๊ถํ ๋ถ์ฌ์
- ๊ฐ์ฌ ๊ธฐ๋์น(๋ฌด์์ ๊ธฐ๋กํด์ผ ํ๋์ง)
๋ชจ๋ ๊ฒ์ ์ฒ์๋ถํฐ ์ง์ ๋ง๋ค๊ธฐ ์ด๋ ค์ฐ๋ฉด, ์ค์ ๋ฐฑ์๋๋ฅผ ์ ๊ณตํ๊ณ ๊ท์น์ ์ผ๊ด๋๊ฒ ์ ์ฉํ๋ ๋ ธ์ฝ๋ ํ๋ซํผ์ ์ฌ์ฉํด ๋น ๋ฅด๊ฒ ์งํํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด AppMaster (appmaster.io)๋ PostgreSQL ๊ธฐ๋ฐ ์ฑ์ ๋น๋ํ๋๋ก ์ค๊ณ๋์ด ๋น์ฆ๋์ค ๋ก์ง๊ณผ ์ญํ ๊ธฐ๋ฐ ์ ๊ทผ์ ์ง์ํ๋ฉด์๋ ํ๋ก๋์ ์ฉ ์์ค ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
๋จ๊ณ๋ณ๋ก ๋กค์์ํ์ธ์: ํ ํ๊ณผ ํ์ผ๋ฟ, ์งง์ ๋ณํ ์ด์, ๊ณํ๋ ์ปคํธ์ค๋ฒ์ ๋กค๋ฐฑ ๊ณํ, ๊ทธ๋ค์ ์ํฌํ๋ก ๋จ์๋ก ํ์ฅํฉ๋๋ค.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
๋จผ์ Airtable ๋ฒ ์ด์ค๊ฐ ์ค์ ๋ก ๋ฌด์์ ํ๋์ง ๋ชฉ๋ก์ผ๋ก ์ ๋ฆฌํ์ธ์. ํ(ํ ์ด๋ธ)๋ง ๋ณด๋ ๊ฒ์ด ์๋๋ผ ๋ทฐ, ์ธํฐํ์ด์ค, ์๋ํ, ์คํฌ๋ฆฝํธ, ๋ฐ๋ณต์ ์ธ ์์์ ๋ฃจํด์ ํนํ ์ฃผ๋ชฉํ์ธ์. ์ด๋ค์ ์ค์ ๋ก ์จ๊ฒจ์ง ๊ท์น์ด ๋ด๊ฒจ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๊ณ , PostgreSQL ๊ธฐ๋ฐ ์ฑ์์๋ ์ผ๊ด๋๊ฒ ๊ฐ์ ํด์ผ ํฉ๋๋ค.
ํ ์ด๋ธ์ ์์ ์ ์ธ ์ํฐํฐ๋ก, ๊ด๊ณ๋ฅผ ๋ชจ๋ ๊ณณ์์ ์ ํจํด์ผ ํ๋ ๋ช ์์ ์ ์ฝ์ผ๋ก ๋ํ๋ ์ฌ๊ณ ๋ฐฉ์์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ์ ๋๋ค. Airtable์ โ์ ์ ์๋ ๋ฌด์์ด๋ โ ๋ฐฉ์ ๋์ ๋ช ํํ ํ์ , ๊ธฐ๋ณธ๊ฐ, ๊ฒ์ฌ ๊ท์น์ ์ ์ฉํด ์๋ชป๋ ๋ฐ์ดํฐ๊ฐ ์ํฌํธ๋ ์ดํ ํธ์ง์์ ์กฐ์ฉํ ํ๋ฌ๋ค์ด๊ฐ์ง ์๋๋ก ํ์ธ์.
์ด๋ฆ์ ์๋ณ์๋ก ์ฐ์ง ๋ง์ธ์. ์ด๋ฆ์ ๋ฐ๋๊ณ , ์ฒ ์๊ฐ ํ๋ฆฌ๊ฑฐ๋ ์ค๋ณต๋ ์ ์์ต๋๋ค. ๋ด๋ถ ID(๋ณดํต UUID๋ ์ซ์ ID)๋ฅผ ๊ธฐ๋ณธ ํค๋ก ์ฌ์ฉํ๊ณ ์ด๋ฆ์ ํ์์ ๊ฒ์์ฉ์ผ๋ก ํธ์ง ๊ฐ๋ฅํ ์์ฑ์ผ๋ก ๋์ธ์.
๊ฐ ๋งํฌ๊ฐ ์ค์ ๋ก ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์ง ๋ณด๊ณ ์ผ๋๋ค์ธ์ง ๋ค๋๋ค์ธ์ง ๊ฒฐ์ ํ์ธ์. ์ผ๋๋ค๋ ๋ณดํต โ๋ง์โ ์ชฝ์ ์ธ๋ํค ์ปฌ๋ผ์ผ๋ก ๋ชจ๋ธ๋งํ๊ณ , ๋ค๋๋ค๋ ๊ด๊ณ ์ธ๋ถ์ฌํญ(์: ์ญํ , ์ถ๊ฐ๋ ๋ ์ง ๋ฑ)์ ๋ด์ ์ ์๋ ์กฐ์ธ ํ ์ด๋ธ๋ก ๋ง๋์ธ์.
์ธ๋ ํค๋ฅผ ์ถ๊ฐํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๊นจ์ง ๋งํฌ๋ฅผ ์ฐจ๋จํ๊ฒ ํ์ธ์. ๊ทธ๋ฆฌ๊ณ ์ญ์ ๋์์ ์ ์คํ ์ ํ์ธ์. ๋ถ๋ชจ ๋ ์ฝ๋ ์ญ์ ์ ์์์ ํจ๊ป ์ญ์ ํ ์ง, ์ญ์ ๋ฅผ ์ ํํ ์ง, ์ฐธ์กฐ๋ฅผ NULL๋ก ๋ง๋ค์ง๋ฅผ ์ํฌํ๋ก์ฐ์ ๋ง์ถฐ ๊ฒฐ์ ํ์ธ์.
๋กค์ ์ ์คํ๋ ๋์ํธ์์ผ๋ก ์ ์ฅ๋ ํ๋๊ฐ ์๋๋ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ง๊ณ ์ฟผ๋ฆฌ๋ก ๋ตํ๋ ์ง๋ฌธ์ผ๋ก ๋ณด์ธ์. ๊ธฐ๋ณธ์ ์ผ๋ก ์ ํ์ฑ์ ์ํด ํ์ํ ๋๋ง๋ค ๊ณ์ฐํ๊ณ , ์ฑ๋ฅ์ ๋ช ํํ ์ด์ ๊ฐ ์์ ๋๋ง ์ ์ฅํ๊ฑฐ๋ ์บ์ํ์ธ์.
์์์ ์ฉ๋๋ณ๋ก ๋ถ๋ฅํ์ธ์: ํ์ ํ์, ๋จ์ ๊ณ์ฐ, ํ๋๊ทธ, ๋ฃฉ์ , ๊ทธ๋ฆฌ๊ณ ์ค์ ๋น์ฆ๋์ค ๊ท์น์ผ๋ก ๋๋๋๋ค. ํ์ ํ์์ UI์ ๋๊ณ , ์ผ๊ด์ฑ์ด ํ์ํ๋ฉด ๋จ์ ๊ณ์ฐ์ SQL์ ๋๋ฉฐ, ์ฐํ๋ ์ ์๋ ๊ท์น์ฑ์ ๋ฐฑ์๋ ๋ก์ง์ผ๋ก ์ฎ๊ธฐ์ธ์.
๋ทฐ๋ ์ํฌํ๋ก์ ์ ์ฉํ์ง๋ง ๋ณด์ ๊ฒฝ๊ณ๊ฐ ์๋๋๋ค. ์ญํ ๊ณผ ๋ ์ฝ๋ ์์ค ์ ๊ทผ ๊ท์น์ ๋ช ์์ ์ผ๋ก ์ ์ํ๊ณ API, UI, ์์ถ, ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ๋ฑ ๋ชจ๋ ๊ณณ์์ ์ผ๊ด๋๊ฒ ์ ์ฉํ์ธ์. ๋ํ ๋๊ฐ ์ธ์ ๋ฌด์์ ๋ณ๊ฒฝํ๋์ง ์ถ์ ํ ์ ์๋๋ก ๊ฐ์ฌ ๋ก๊น ์ ์ถ๊ฐํ์ธ์.
์ปคํธ์ค๋ฒ ์ ์คํค๋ง๋ฅผ ๊ณ ์ ํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ณด๋ด ์ ๋ฆฌํ ๋ค ๊ฒ์ฆ๊ณผ ํจ๊ป ์ํฌํธํ์ธ์. ๋ ์์คํ ์ ์ ์ ๋ณํ ์ด์ํ๋ฉฐ ํต์ฌ ์ซ์๋ฅผ ๋น๊ตํ๊ณ , ๋กค๋ฐฑ ๊ณํ(์ฝ๊ธฐ ์ ์ฉ Airtable, PostgreSQL ์ค๋ ์ท ๋ฑ)์ ์ค๋นํด ๋์ธ์.
ํธ๋์ฝ๋ฉ ์ ๋ถ๋ฅผ ํผํ๋ฉด์ ์๋๋ฅผ ์ํ๋ฉด ์ค์ ๋ฐฑ์๋๋ฅผ ์ ๊ณตํ๊ณ ๊ท์น์ ๊ฐ์ ํ๋ ํ๋ซํผ์ ์ ํํ์ธ์. AppMaster๋ ์ญํ ๊ธฐ๋ฐ ์ ๊ทผ๊ณผ ๋น์ฆ๋์ค ๋ก์ง์ ๊ฐ์ง PostgreSQL ๊ธฐ๋ฐ ์ฑ์ ์์ฑํ๊ณ ํ๋ก๋์ ์์ค ์ฝ๋๋ฅผ ๋ด๋ณด๋ด๋ ํ ๊ฐ์ง ์ต์ ์ ๋๋ค.


