본문 바로가기
전쟁과 기술

데이터는 왜 행과 열로 나눠 저장할까?

by 전쟁과 기술 2026. 8. 29.

지난 글에서는 파일이 많아지고 여러 사람이 같은 정보를 다루기 시작할 때 데이터베이스가 필요한 이유를 살펴보았다. 그런데 데이터를 한곳에 모으는 것만으로는 문제가 해결되지 않는다. 사람마다 이름과 날짜를 적는 방식이 다르고, 같은 대상을 서로 다른 말로 기록한다면 컴퓨터는 그 자료를 제대로 묶거나 비교하지 못한다.

창고에 물건을 쌓는 일과 필요한 물건을 꺼내 쓰는 일이 다른 것처럼, 데이터를 저장하는 일과 사용할 수 있게 정리하는 일도 다르다. 데이터베이스가 단순한 전자 보관함이 되지 않으려면 각각의 값이 무엇을 뜻하는지 알아볼 수 있는 구조가 필요하다. 오늘날 가장 널리 쓰이는 구조 가운데 하나가 행과 열로 이루어진 테이블이다.

한줄 요약
행은 사람이나 장비, 사건처럼 한 건의 대상을 담고 열은 그 대상이 가진 공통 속성을 정한다. 이 단순한 약속 덕분에 컴퓨터는 많은 자료를 같은 기준으로 저장하고 비교하며 필요한 정보만 다시 찾아낼 수 있다.

종이에 적힌 기록은 사람이 뜻을 짐작할 수 있었다

종이 명부를 읽는 사람은 기록이 조금 흐트러져 있어도 앞뒤 문맥을 보고 뜻을 짐작한다. 이름 칸에 직급이 함께 적혀 있거나 날짜가 ‘8월 말’이라고만 표시되어도 상황을 이해할 수 있다. 익숙한 담당자라면 약어와 여백의 메모까지 참고하여 누가 무엇을 뜻했는지 알아낸다.

기계는 이런 눈치가 없다. 어느 부분이 이름이고 어느 부분이 주소인지, 비슷해 보이는 두 기록이 같은 사람을 뜻하는지 미리 알려주지 않으면 구별하기 어렵다. 사람이 자유롭게 적은 문장을 기계가 계산할 수 있는 데이터로 바꾸려면 먼저 기록의 위치와 의미를 일정하게 맞춰야 했다.

명부와 장부에 줄을 긋고 항목별 칸을 나눈 방식은 이런 문제를 해결하는 오래된 방법이었다. 가로 한 줄에는 한 사람이나 한 거래를 기록하고, 세로 방향에는 이름·날짜·수량처럼 같은 종류의 정보를 배치했다. 표는 보기 좋게 정리하는 형식에 그치지 않았다. 서로 다른 기록을 같은 기준으로 비교하고 세기 위한 규칙이었다.

다만 종이 위의 표를 사람이 직접 읽고 합산하는 동안에는 처리 속도에 한계가 있었다. 인구가 늘고 국가와 기업이 다루는 기록이 많아지자, 표의 규칙을 기계가 읽게 만드는 기술이 필요해졌다.

종이 기록이 일정한 행과 열을 가진 자료로 정리되는 장면

천공카드는 사람의 특징을 구멍의 위치로 바꾸었다

19세기 말 미국 인구조사는 사람이 감당하기 어려울 만큼 많은 자료를 만들어냈다. 당시 인구조사국에서 일했던 허먼 홀러리스(Herman Hollerith)는 조사표를 손으로 세고 분류하는 작업을 기계화하려 했다. 그가 개발한 방식은 개인의 정보를 카드에 뚫린 구멍의 위치로 표현하고, 전기식 집계 장치가 이를 읽어 수를 세는 것이었다.

홀러리스의 천공카드와 집계 장치는 1890년 미국 인구조사에 사용되었다. 카드 한 장은 조사 대상 한 사람의 기록이 되었고, 카드에서 정해진 위치는 거주지·나이·국적·직업 같은 항목을 나타냈다. 사람이 문장을 해석하는 대신 기계는 구멍이 뚫린 위치를 읽었다. 정보의 의미를 일정한 자리에 묶어 놓았기 때문에 가능했던 일이다.

이 방식은 오늘날의 데이터베이스 테이블과 같지는 않다. 그래도 중요한 변화가 하나 있었다. 한 사람의 정보를 하나의 기록 단위로 만들고, 같은 속성을 항상 정해진 위치에 표시하면 기계가 대량의 자료를 분류하고 집계할 수 있다는 사실을 보여주었다. 행과 열이라는 익숙한 구조가 기계식 데이터 처리와 만나는 지점이었다.

천공카드는 이후 정부의 통계뿐 아니라 철도, 보험, 회계와 과학 계산에도 활용되었다. 종이에 적힌 내용을 보관하는 시대에서 기계가 읽을 수 있는 형식으로 정보를 표현하는 시대로 넘어가고 있었다. 저장 매체는 종이 카드에서 자기테이프와 디스크로 바뀌었지만, 기록을 일정한 항목으로 나누어 처리한다는 생각은 사라지지 않았다.

1890년대 천공카드를 기계로 분류하고 처리하는 장면

한 행에는 한 건, 한 열에는 같은 종류의 값이 들어간다

현대의 관계형 데이터베이스에서 가로 한 줄은 보통 한 건의 대상을 나타낸다. 사람을 관리하는 테이블이라면 한 행은 한 사람이고, 도서 대출 기록이라면 한 행은 한 번의 대출이다. 장비를 관리한다면 장비 한 대가 하나의 행이 될 수 있다. 데이터베이스에서는 이런 한 건의 기록을 레코드라고도 부른다.

세로 방향의 열에는 여러 기록이 공통으로 갖는 속성이 들어간다. 사람이라면 이름·생년월일·연락처가 될 수 있고, 장비라면 모델·제조번호·설치 위치·도입일이 될 수 있다. 열을 컬럼이라고 부르는 이유도 여기에 있다. 같은 열에 놓인 값은 같은 의미로 읽힐 수 있어야 한다.

행과 열의 역할이 뒤섞이면 컴퓨터가 자료를 다루기 어려워진다. 어떤 행은 사람을 나타내고 다른 행은 부서 합계를 나타내거나, 날짜를 넣기로 한 열에 ‘다음 달 확인’ 같은 메모가 들어가면 일관된 계산이 깨진다. 사람은 적당히 뜻을 알아차리지만 컴퓨터는 어느 값을 날짜로 비교하고 어느 값을 문장으로 남겨야 하는지 판단할 기준을 잃는다.

그래서 데이터베이스의 테이블은 보고서처럼 보기 좋게 꾸미는 표와 목적이 다르다. 셀을 합치거나 중간에 설명 행을 넣는 대신, 모든 행이 같은 열 구조를 따르게 만든다. 화면에서 보이는 모양보다 데이터가 지켜야 할 약속을 우선하는 셈이다.

열의 이름만 같다고 같은 데이터가 되는 것은 아니다

‘날짜’라는 열을 만들었다고 해도 사람마다 2026-08-29, 8월 29일, 29/08/26처럼 다르게 입력하면 정렬과 비교가 까다로워진다. 수량을 적는 열에 숫자 10과 ‘열 개’가 섞여 있어도 합계를 바로 계산하기 어렵다. 항목 이름뿐 아니라 그 안에 들어갈 값의 종류까지 정해야 하는 이유다.

데이터베이스는 열마다 문자, 정수, 소수, 날짜와 시간, 참·거짓 같은 데이터 타입을 정할 수 있다. 날짜로 저장한 값은 기간별로 검색할 수 있고, 숫자로 저장한 값은 크기를 비교하거나 합산할 수 있다. 데이터 타입은 입력을 불편하게 만드는 장벽이 아니라, 같은 열의 값을 같은 방식으로 해석할 수 있게 하는 약속이다.

빈값을 허용할지, 같은 값이 반복되어도 되는지 같은 조건도 붙일 수 있다. 반드시 필요한 항목이 빠지는 일을 막고, 정해진 범위를 벗어난 값이 들어오지 않게 제한하는 것이다. 잘못된 자료를 나중에 찾아 고치는 것보다 저장되는 순간부터 일정한 기준을 지키게 하는 편이 훨씬 안정적이다.

정보체계를 다루다 보면 화면에 표시된 문구보다 그 값이 어떤 형식과 기준으로 저장되었는지가 더 중요할 때가 있다. 화면에서는 똑같이 ‘정상’이라고 보여도 한 시스템은 숫자로, 다른 시스템은 문자로, 또 다른 시스템은 서로 다른 코드로 저장했다면 정보를 주고받을 때 별도의 해석이 필요해진다. 아직 군 정보체계의 구체적인 이야기로 들어갈 단계는 아니지만, 여러 시스템이 같은 정보를 공유하려면 데이터의 구조와 의미부터 맞아야 한다는 점은 기억해 둘 필요가 있다.

서로 다른 원시 데이터가 종류별 열로 정돈되는 장면

관계형 데이터베이스는 표를 연결 가능한 구조로 바꾸었다

컴퓨터가 보급된 뒤에도 데이터를 저장하는 방식은 프로그램의 구조나 물리적인 저장 위치에 강하게 묶여 있었다. 원하는 정보를 꺼내려면 데이터가 어디에 있고 어떤 경로로 이어지는지 잘 아는 전문가가 필요한 경우가 많았다. 자료의 양이 커질수록 저장 방식에 얽매이지 않고 필요한 내용을 찾을 수 있는 방법이 중요해졌다.

IBM의 연구원이었던 에드거 F. 커드(Edgar F. Codd)는 1970년 발표한 논문에서 관계형 데이터 모델을 제안했다. 데이터의 물리적인 위치를 따라가는 대신, 값을 기준으로 서로 관련된 자료를 다루는 방식이었다. 정보를 행과 열로 이루어진 관계로 표현하고, 공통된 값을 이용해 여러 관계에서 필요한 결과를 얻는 생각은 이후 관계형 데이터베이스의 토대가 되었다.

여기서 테이블은 완성된 보고서가 아니다. 사람, 주문, 상품을 각각 나누어 저장해 두고 필요할 때 서로 연결해 새로운 결과를 만드는 재료에 가깝다. 한 표에 모든 내용을 반복해서 적지 않아도 되므로 데이터의 중복을 줄일 수 있고, 저장된 값의 조합을 바꾸어 여러 질문에 답할 수 있다.

커드의 아이디어가 중요했던 이유는 표 모양을 발명했기 때문이 아니다. 데이터가 저장된 세부 경로를 일일이 따라가지 않고도, 무엇을 찾고 싶은지에 집중할 수 있는 논리적 구조를 제시했기 때문이다. 이후 SQL과 데이터베이스 관리시스템이 발전하면서 이 생각은 은행 거래, 예약, 물류, 행정, 인터넷 서비스처럼 많은 정보가 계속 바뀌는 분야의 기반이 되었다.

짧은 생각
정보를 많이 모으는 일보다 먼저 해야 할 일은 무엇을 한 건으로 보고, 어떤 속성을 같은 기준으로 기록할지 정하는 것이다. 화면은 나중에 바꿀 수 있지만 데이터의 기준이 처음부터 흔들리면 서로 다른 기능과 시스템을 연결할수록 그 흔들림도 함께 커진다.

같은 이름이 두 번 나타나면 컴퓨터는 누구를 선택할까

행과 열을 정하면 많은 정보를 같은 모양으로 저장할 수 있다. 그러나 아직 해결되지 않은 문제가 있다. 이름이 같은 사람이 두 명이거나 같은 모델의 장비가 여러 대라면, 특정한 한 행을 무엇으로 구별할 것인가 하는 문제다. 이름이나 위치처럼 바뀔 수 있는 값을 기준으로 삼으면 수정할 때마다 다른 기록과 혼동될 수 있다.

기계가 한 건의 데이터를 정확히 찾고 수정하려면 다른 행과 겹치지 않는 식별값이 필요하다. 사람에게 주민등록번호나 회원번호가 있고 물건에 일련번호가 붙는 이유와 닮았다. 데이터베이스에서는 이런 역할을 맡는 값을 키라고 부른다. 다음 글에서는 수많은 행 가운데 하나를 가리키는 기본키가 왜 필요하며, 좋은 식별값은 어떤 조건을 갖춰야 하는지 이어서 살펴본다.