표·행·열

데이터베이스 안은 엑셀 표와 같은 모양이에요. 표 하나가 시트 한 장, 가로 한 줄(행)이 손님 한 명, 세로 한 칸(열)이 항목 하나예요. 이 세 단어만 알면 데이터 얘기의 절반이 들려요.

쉽게 말하면

사장님이 엑셀로 예약 손님을 관리해 본 적 있다면, 이미 데이터베이스의 모양을 알고 있는 거예요. 시트 한 장이 표(테이블)이고, 가로 한 줄이 손님 한 명이고, 세로 한 칸이 이름·전화번호 같은 항목이에요. 데이터베이스는 그 엑셀 파일을 훨씬 튼튼하게 만든 것뿐이에요. 모양은 똑같아요.

그래서 데이터 얘기는 겁낼 이유가 없어요. 개발자나 AI가 "테이블", "행", "열" 같은 말을 쓰면, 머릿속에서 엑셀 화면을 떠올리고 단어만 바꿔 들으면 돼요. 이 문서가 그 단어 변환표예요.

엑셀에서 부르는 말데이터베이스에서 부르는 말
시트 한 장표 (테이블, table)한 가지 주제의 기록 묶음. 손님 시트, 예약 시트처럼요
가로 한 줄행 (로우, row) 또는 레코드기록 하나. 손님 한 명, 예약 한 건, 주문 한 건
세로 한 칸열 (컬럼, column) 또는 필드항목 하나. 이름 칸, 전화번호 칸, 예약일 칸
맨 윗줄 머리글열 이름 (스키마의 일부)이 표에 어떤 칸들이 있는지 정한 것

가게 장부로 옮겨 보면

말로만 들으면 헷갈리니, 예약을 받는 가게의 표를 하나 그려 볼게요. 아래가 데이터베이스 안에 실제로 들어 있는 "예약" 표의 모습이에요.

이름전화번호예약일인원
손님 A010-1234-****8월 25일 저녁 7시2명
손님 B010-5678-****8월 25일 저녁 8시4명
손님 C010-9012-****8월 26일 점심 12시3명

가로로 읽으면 이에요. 첫째 줄 전체가 손님 A의 예약 한 건이에요. 손님이 새로 예약하면 줄이 하나 늘어나요. 예약을 취소하면 그 줄이 지워지고요. 행이 늘어나는 건 장사가 잘된다는 뜻이라 아무리 늘어도 좋은 일이에요.

세로로 읽으면 이에요. "전화번호" 칸을 위에서 아래로 쭉 읽으면 모든 손님의 전화번호가 나와요. 열은 표를 처음 만들 때 정하고, 그 뒤로는 잘 안 바뀌어요. "요청사항" 칸을 새로 만들고 싶다면 그건 열을 추가하는 일이고, 표의 구조를 바꾸는 일이라 행 추가보다 조심스러운 작업이에요.

행과 열이 자꾸 헷갈리면

행은 가로로 행진, 열은 세로로 열 맞춰. 이렇게 외우면 안 헷갈려요. 행진하는 줄은 가로로 나아가고, 열 맞춰 선 줄은 세로로 서 있죠. 손님 하나 = 행 하나, 항목 하나 = 열 하나예요.

그럼 엑셀 쓰면 되지, 왜 데이터베이스인가요

모양이 같은데 왜 굳이 데이터베이스를 쓰는지 궁금할 거예요. 차이는 표의 모양이 아니라 표를 다루는 방식에 있어요.

엑셀 파일로 운영
예약장부_최종_진짜최종.xlsx (카톡으로 주고받는 파일)

두 사람이 동시에 열면 어느 쪽이 진짜인지 몰라요. 파일이 여러 벌 생기고, 실수로 한 줄을 지워도 아무도 몰라요.

데이터베이스로 운영
예약 표 (테이블) (서비스가 직접 읽고 쓰는 원본 한 벌)

손님이 예약하는 순간 행이 자동으로 늘어요. 동시에 백 명이 써도 원본은 하나예요. 서비스와 표가 한 몸이에요.

정리하면 이래요. 엑셀은 사람이 손으로 쓰는 표이고, 데이터베이스는 내 서비스가 스스로 쓰는 표예요. 손님이 회원가입을 하면 회원 표에 행이 하나 생기고, 주문을 하면 주문 표에 행이 하나 생겨요. 사장님이 밤에 자는 동안에도요.

그리고 데이터베이스는 규칙을 지켜 줘요. 엑셀은 전화번호 칸에 "나중에 확인"이라고 글자를 적어도 말리지 않지만, 데이터베이스는 칸마다 "여긴 숫자만", "여긴 비우면 안 됨" 같은 규칙을 정해 두면 어긋나는 값을 받지 않아요. 손님 데이터가 수천 건이 돼도 깨끗하게 유지되는 비결이 이거예요.

행 하나의 일생

표·행·열이 머리에 잡혔으면, 이번엔 행 하나가 태어나서 사라질 때까지를 따라가 볼게요. 손님 한 명이 내 서비스에 회원가입을 했다고 해요.

  1. 1태어나요. 가입 버튼을 누르는 순간 회원 표에 행이 하나 생겨요. 이름 칸, 이메일 칸에 손님이 적은 값이 들어가고, 가입일 칸은 서비스가 알아서 채워요.
  2. 2자라나요. 손님이 예약을 하고 주문을 하면, 예약 표와 주문 표에 이 손님과 연결된 행들이 쌓여요. 회원 표의 행 자체는 그대로인데, 다른 표에서 이 손님을 가리키는 줄이 늘어나는 거예요.
  3. 3바뀌어요. 손님이 전화번호를 바꾸면 새 행이 생기는 게 아니라, 있던 행의 전화번호 칸만 고쳐져요. 엑셀에서 셀 하나 고치는 것과 같아요.
  4. 4떠나요. 손님이 탈퇴하면 그 행을 지우거나, 지운 것처럼 표시만 해 두거나 둘 중 하나예요. 개인정보는 지워야 하지만 거래 기록은 법으로 남겨야 하는 경우가 있어서, 실제 서비스들은 둘을 나눠서 처리해요.

이 흐름을 알면 데이터 얘기의 대부분이 이 네 가지 중 하나라는 게 보여요. 생기고, 쌓이고, 고쳐지고, 지워지고. 개발자가 어떤 말을 해도 "지금 행이 생기는 얘기인가, 고쳐지는 얘기인가"로 분류해 들으면 길을 잃지 않아요.

사장님이 실제로 겪는 장면

장면 1 · AI 빌더가 이렇게 보고했다

회원 테이블에 '생일' 컬럼을 추가하고, 예약 테이블과 연결해 뒀어요.

이제 해석돼요. 회원 시트에 '생일'이라는 세로 칸을 하나 새로 만들었다는 뜻이에요. 겁먹을 문장이 아니라, 엑셀에서 열 하나 끼워 넣은 것과 같은 일이에요. "연결했다"는 회원 표와 예약 표가 서로를 찾아갈 수 있게 다리를 놓았다는 뜻이고요.

장면 2 · 외주 개발자가 물었다

주문 데이터가 지금 한 테이블에 다 들어가 있는데, 회원이랑 주문을 분리할까요?

엑셀로 바꿔 들으면 이런 질문이에요. "한 시트에 손님 정보랑 주문 내역을 다 적고 있는데, 시트를 두 장으로 나눌까요?" 손님 한 명이 주문을 열 번 하면 이름과 전화번호가 열 번 반복되니, 손님 시트 따로 주문 시트 따로 두는 게 정리가 잘돼요. "네, 나눠 주세요"라고 답하면 되는 좋은 제안이에요.

증상이 보이면 이렇게 말해요

표·행·열이라는 단어를 알면 좋은 진짜 이유는 이거예요. 문제가 생겼을 때 AI에게 정확히 주문할 수 있게 돼요. 자주 겪는 증상과 그때 쓰는 문장을 짝지어 둘게요. 그대로 복사해서 써도 돼요.

증상AI에게 이렇게 말해요
예약을 받았는데 손님 요청사항을 적을 데가 없어요"예약 테이블에 '요청사항' 열을 추가해 줘. 비워 둬도 되는 칸으로."
같은 손님 정보가 여기저기 중복으로 적혀요"회원 정보가 여러 테이블에 중복돼 있는지 봐 주고, 회원 테이블 하나로 모아서 연결해 줘."
관리자 화면에서 손님 목록이 안 보여요"회원 테이블의 행들이 관리자 화면에 표로 보이게 해 줘."
테스트하며 만든 가짜 손님을 지우고 싶어요"회원 테이블에서 테스트로 만든 행만 골라서 지워 줘. 지우기 전에 몇 건인지 먼저 보여 줘."
항목 이름이 영어라 못 알아보겠어요"각 테이블에 어떤 열이 있는지, 열마다 무슨 뜻인지 한국어로 표로 정리해 줘."

지우는 주문에는 안전핀을

행을 지우는 주문에는 마지막 예시처럼 "지우기 전에 먼저 보여 줘"를 꼭 붙이세요. 엑셀과 달리 데이터베이스의 삭제는 되돌리기 버튼이 없는 경우가 많아요. 진짜 손님의 행이 섞여 지워지면 큰일이니까요. 만약을 위한 백업도 이럴 때를 위한 거예요.

지금은 신경 쓰지 않아도 되는 때

이 문서를 읽었다고 해서 표를 직접 설계하러 갈 필요는 없어요. 다음에 해당하면 지금은 이 주제를 덮어 두셔도 돼요.

  1. 1아직 만들기 전이거나 만드는 중이라면 신경 쓸 일이 아니에요. 바이브캠퍼스에서 서비스를 만들면 AI가 표와 열을 알아서 설계해요. 사장님이 표를 그리는 게 아니라, 필요할 때 알아보기만 하면 돼요.
  2. 2손님 데이터를 아예 안 받는 서비스라면 (소개 페이지, 메뉴판, 포트폴리오 같은 것) 표 자체가 없을 수 있어요. 그건 이상한 게 아니라 정상이에요.
  3. 3서비스가 잘 돌아가고 있다면 표 구조를 궁금해서 열어 볼 필요는 없어요. 이 단어들이 필요해지는 순간은 딱 두 가지예요. 항목을 추가하고 싶을 때, 그리고 데이터가 이상하게 보일 때.

반대로 신경 써야 하는 순간은 이래요. 손님 개인정보를 담은 표가 생기는 순간부터는 개인정보 쪽 의무가 따라와요. 그리고 표의 구조를 바꾸는 큰 작업(마이그레이션)을 하기 전에는 백업부터예요. 이 두 가지만 기억하면 나머지는 그때그때 찾아봐도 늦지 않아요.

자주 묻는 것

Q. 테이블, 행, 열을 제가 직접 만들어야 하나요?
바이브캠퍼스에서는 아니에요. "손님 예약을 받고 싶어"라고 말하면 AI가 예약 표와 필요한 열들을 알아서 만들어요. 사장님의 일은 만들어진 표를 알아보고, 부족한 칸이 있으면 말로 추가를 시키는 거예요.
Q. 레코드, 필드라는 말도 들었는데 다른 건가요?
같은 거예요. 행을 레코드라고도 부르고, 열을 필드나 컬럼이라고도 불러요. 사람마다 부르는 말이 다를 뿐이라, 넷 다 들리면 "아, 줄이랑 칸 얘기구나" 하면 돼요.
Q. 표는 몇 개나 생기나요? 많으면 문제인가요?
서비스 하나에 표가 여러 개인 게 정상이에요. 회원 표, 예약 표, 주문 표, 리뷰 표처럼 주제마다 한 장씩이에요. 엑셀 파일 하나에 시트가 여러 장인 것과 같아요. 개수 자체는 걱정할 일이 아니에요.
Q. 행이 수만 개가 되면 느려지지 않나요?
수만 개 정도는 데이터베이스에게 아무것도 아니에요. 수백만 개쯤 되면 찾아보기가 느려질 수 있는데, 그때 쓰는 게 인덱스라는 색인이에요. 그 시점이 오면 그건 장사가 아주 잘된다는 뜻이니 좋은 고민이에요.
Q. 엑셀에 있던 손님 명단을 표로 옮길 수 있나요?
네, 모양이 같아서 옮기기 쉬워요. AI에게 "이 엑셀 파일의 손님 명단을 회원 테이블로 넣어 줘"라고 하면 돼요. 옮기기 전에 엑셀의 머리글(이름, 전화번호 같은 칸 이름)이 표의 열과 짝이 맞는지만 같이 확인해요.
Q. 표를 처음에 잘못 만들면 나중에 못 고치나요?
고칠 수 있어요. 열을 추가하거나 이름을 바꾸거나 표를 나누는 건 다 가능한 공사예요. 다만 행이 많이 쌓인 뒤의 공사는 이사가 커지는 것처럼 조심할 게 늘어나요. 그래서 규칙은 하나예요. 구조를 바꾸기 전에 백업 먼저. 완벽한 설계를 처음부터 하려고 애쓰기보다, 장사하면서 필요할 때 고치는 게 정상 경로예요.
Q. 손님 행은 언제까지 보관해도 되나요?
이건 법이 걸린 문제라 여기서 단정하지 않을게요. 거래 기록은 법으로 일정 기간 보관 의무가 있고, 반대로 개인정보는 목적이 끝나면 지워야 하는 의무가 있어요. 정확한 기간은 개인정보보호위원회(privacy.go.kr)와 국세청 안내에서 내 업종 기준으로 확인하는 게 안전해요. 손님 데이터 관리 문서도 같이 보세요.

헷갈리기 쉬운 것

표(테이블)와 화면에 보이는 표는 달라요. 관리자 화면에서 보는 손님 목록 표는 데이터베이스의 표를 보여 주는 창이지 표 자체가 아니에요. 화면의 표를 예쁘게 바꾸는 건 프런트엔드 일이고, 표에 칸을 추가하는 건 데이터베이스 일이에요. AI에게 말할 때 "화면의 표"인지 "데이터의 표"인지 구분해 주면 훨씬 정확하게 알아들어요.

열 추가와 행 추가는 무게가 달라요. 행 추가는 매일 수백 번 일어나는 일상이에요(손님이 늘어나는 것). 열 추가는 표의 구조를 바꾸는 공사예요. 자주 하는 일은 아니고, 할 때는 기존 행들의 그 칸이 비어 있게 된다는 것 정도만 알아 두면 돼요. 구조를 크게 바꾸는 작업은 마이그레이션 문서에서 다뤄요.

확인해 보세요

손님이 내 예약 서비스에서 예약 버튼을 눌렀어요. 데이터베이스에서는 무슨 일이 일어날까요?

하나 더

"회원 테이블에 포인트 컬럼을 추가했어요"라는 보고를 들었어요. 엑셀로 치면 무슨 일일까요?

직접 해보기

내 서비스의 표를 눈으로 확인해 보세요

스튜디오에서 만들던 프로젝트를 열고 AI에게 이렇게 물어보세요. "지금 이 서비스에 어떤 테이블이 있고, 각 테이블에 무슨 열이 있는지 한국어 표로 정리해 줘." 내 서비스의 장부 구조가 한눈에 들어와요. 아직 프로젝트가 없다면 안 만들어도 돼요. 다음에 만들 때 물어보면 돼요.

스튜디오 열기

더 깊이 (안 읽어도 괜찮아요)

머리글을 정하는 일에는 이름이 있어요 · 표에 어떤 열들을 둘지, 각 칸에 숫자를 넣을지 글자를 넣을지 정하는 설계도를 스키마라고 불러요. 엑셀로 치면 맨 윗줄 머리글을 정하고 각 칸의 서식을 정하는 일이에요. 개발자가 "스키마를 바꿔야 해요"라고 하면 "표의 머리글 구성을 바꾸는 공사구나"로 들으면 정확해요.

표끼리는 서로를 찾아갈 수 있어요 · 예약 표의 각 행에는 "이 예약의 주인은 회원 표의 몇 번 손님"이라는 연결 고리가 들어가요. 그래서 손님 이름을 예약 표에 또 적지 않아도, 연결 고리를 따라가면 이름이 나와요. 이렇게 표들이 관계로 엮여 있다고 해서 이런 데이터베이스를 관계형 데이터베이스라고 불러요. 세상 서비스 대부분이 이 방식이에요.

행마다 고유 번호가 붙어요 · 같은 이름의 손님이 두 명이면 누가 누군지 헷갈리겠죠. 그래서 표는 행마다 절대 겹치지 않는 고유 번호를 붙여요. 이걸 아이디(ID) 또는 기본 키라고 불러요. 손님에게 보이는 번호가 아니라 표 내부의 일련번호예요. "회원번호 372번의 행"처럼, 컴퓨터는 이름이 아니라 이 번호로 행을 찾아요.

이것만 기억하세요

  • ·데이터베이스의 속은 엑셀과 같은 모양이에요. 표 = 시트, 행 = 가로 한 줄, 열 = 세로 한 칸
  • ·행 하나 = 손님 한 명, 주문 한 건. 행이 늘어나는 건 좋은 일이에요
  • ·열은 표의 구조예요. 칸이 부족하면 AI에게 "열을 추가해 줘"라고 말하면 돼요
  • ·행을 지우는 주문에는 "지우기 전에 먼저 보여 줘"를 꼭 붙여요
  • ·바이브캠퍼스에서는 AI가 표를 설계해요. 사장님은 알아보고 주문만 하면 돼요
VibeCampus새 빌드