데이터 스키마

새 아파트를 짓기 전에 방 크기와 위치를 정해둔 설계도면이자, 회원가입 서류의 네모난 빈칸 양식이에요.

정의 데이터베이스에 정보를 담기 전에 미리 짜놓는 데이터의 공식 설계도예요. 회원가입 신청서에 '이름', '생년월일', '전화번호' 칸이 정해져 있듯이, 컴퓨터가 데이터를 어떤 구조와 규칙으로 저장해야 할지 틀을 잡아주는 약속이에요.

회원가입 양식이 필요한 이유

놀이공원 회원가입 종이에 아무런 칸도 없이 백지만 준다면 어떤 일이 벌어질까요? 누군가는 한글로 이름을 적고, 누군가는 전화번호 대신 이메일만 적으며, 누군가는 주소를 세 줄에 걸쳐 쓸 거예요. 이렇게 뒤죽박죽으로 모인 정보는 나중에 컴퓨터가 검색하거나 정리하기가 불가능에 가까워요.

그래서 우리는 미리 네모난 칸을 만들고 규칙을 정해요. '이름 칸에는 한글 10자 이내', '생년월일 칸에는 숫자 8자리', '전화번호 칸은 필수 입력'처럼 말이죠. 데이터베이스에서도 마찬가지예요. 수많은 정보를 질서 있게 보관하려면 데이터가 들어올 규격과 규칙을 미리 정해두어야 하는데, 이 약속의 모음이 바로 스키마예요.

스키마가 잘 짜여 있으면 엉뚱한 데이터가 들어오는 것을 입구에서 막을 수 있어요. 나이 칸에 실수로 '서울시'라는 글자가 들어가려고 하면 데이터베이스가 즉시 입력을 거절해 시스템 오류를 예방해 준답니다.

데이터 스키마의 규칙 검증과 정돈된 테이블 저장 과정 데이터 규격 (스키마) 이름 문자 10자 나이 숫자 형태 전화 번호 규칙 규칙 검사 오류 차단 ✕ 거부 정리된 표 (DB) 이름 나이 전화 민수 24 010-.. 지우 28 010-.. 서연 31 010-..

조금 더 정확히 말하면: 설계도의 세 가지 눈높이

조금 더 정확히 말하면, 전문가들은 집을 지을 때 조감도와 평면도를 따로 그리듯이 스키마도 세 가지 눈높이로 나누어 다뤄요. 이를 '3단계 스키마 구조'라고 불러요. 사용자가 보는 화면과 전체 데이터 구조, 그리고 실제 하드디스크 저장 방식을 분리해서 관리하기 위한 방법이에요.

가장 바깥에는 사용자가 보는 외부 스키마가 있어요. 같은 쇼핑몰이라도 구매자가 보는 주문 내역 화면과 판매자가 보는 정산 화면에 필요한 정보가 다른 것처럼, 사용자 입장마다 맞춤형으로 보여주는 개별 설계도예요.

가운데에는 전체 데이터의 뼈대인 개념 스키마가 있고, 맨 아래에는 디스크에 물리적으로 기록되는 방식을 다루는 내부 스키마가 있어요. 이렇게 계층을 나누어 두면 하드디스크 교체 같은 내부 변경이 생겨도 사용자가 보는 프로그램 화면까지 뜯어고칠 필요가 없어져요.

데이터베이스 3단계 스키마 구조 다이어그램 외부 스키마 (사용자 뷰) 외부 스키마 (관리자 뷰) 개념 스키마 (전체 논리 구조) 내부 스키마 (물리적 저장 구조)

딱딱한 설계도와 유연한 상자

전통적인 관계형 데이터베이스에서는 스키마가 아주 엄격해요. 집을 지을 때 콘크리트 벽을 단단히 굳히는 것과 같아서, 처음에 정한 규칙을 벗어난 데이터는 절대 허용하지 않아요. 은행이나 병원처럼 단 하나의 오차도 없어야 하는 곳에서는 이 엄격한 스키마가 데이터의 신뢰성을 지켜주는 든든한 방패가 돼요.

반면 요즘 인터넷 서비스처럼 데이터 형태가 수시로 바뀌는 환경에서는 스키마가 유연한 NoSQL 방식을 쓰기도 해요. 규격화된 서랍장 대신 물건을 자유롭게 넣을 수 있는 큼직한 상자를 쓰는 것과 비슷해요. 오늘은 글만 넣었다가 내일은 사진과 위치 정보를 덧붙여도 시스템이 막지 않죠.

결국 어떤 스키마를 고를지는 데이터의 목적에 달려 있어요. 규칙과 정확성이 최우선인 금융 거래에는 단단한 스키마가 알맞고, 새로운 형태의 게시물이 쏟아지는 소셜 미디어에는 유연한 방식이 어울려요.

🤔 흔한 오해

✕ 오해

스키마는 한 번 정해두면 절대로 바꿀 수 없다.

✓ 사실

서비스가 성장하면서 스키마도 수정(마이그레이션)할 수 있어요. 다만 기존에 저장된 대량의 데이터가 손상되지 않도록 신중한 절차를 거쳐 변경해요.

🧺 일상에서 만나요

1 쇼핑몰 데이터베이스에서 '가격' 칸에는 문자 대신 숫자만 들어가도록 제한하는 규칙이에요.
2 학생 명부에서 '학번'은 중복될 수 없고 '이름'은 빈칸으로 둘 수 없게 막아주는 틀이에요.
💡 그러니까 한마디로

데이터 스키마는 데이터베이스의 규칙과 구조를 미리 정의한 설계도로, 데이터가 엉뚱하게 꼬이지 않도록 지켜주는 뼈대예요.