위키득계정 ↗
기술

데이터베이스 스키마

데이터베이스 스키마기술
영문명
Database schema
주요 내용
테이블 구조와 관계 및 제약
구분 대상
구조 정의와 현재 저장된 데이터
다른 용례
데이터베이스 객체를 묶는 이름 공간
데이터베이스 스키마는 데이터베이스가 어떤 구조와 규칙으로 구성되는지를 나타내는 정의다. 테이블, 열, 자료형, 관계와 제약 등을 포함하며 실제로 저장된 개별 데이터와 구분된다.

설계와 현재 내용의 차이

책 테이블에 식별자, 제목과 출판 연도를 둔다고 정하는 것은 구조 정의다. 그 테이블에 어떤 책이 몇 권 등록돼 있는지는 현재 데이터의 상태다. 새 책 한 건을 추가하는 일과 제목 열의 자료형을 바꾸는 일은 성격이 다르다.

스키마는 표의 열 이름만 나열한 목록보다 넓은 개념이다. 값의 허용 범위와 필수 여부, 고유성, 다른 테이블과의 참조 관계도 자료를 해석하는 규칙이 된다.

모델을 구체적인 구조로 표현하기

데이터 모델이 관리할 대상과 관계를 정리한다면 스키마는 선택한 데이터베이스에서 이를 구현하는 정의를 제공한다. 설계도나 SQL 정의로 표현할 수 있으며 두 표현이 실제 운영 구조와 일치하는지도 관리해야 한다.

다른 시스템으로 자료를 옮길 때는 열 이름뿐 아니라 자료형과 제약의 의미가 호환되는지 확인해야 한다. 같은 이름의 형식도 허용 범위나 비교 방식이 다를 수 있다.

이름 공간이라는 뜻도 있다

일부 데이터베이스에서는 스키마가 테이블과 함수 같은 객체를 묶는 이름 공간을 가리킨다. 이 경우 서로 다른 스키마에 같은 이름의 테이블이 있을 수 있다. 데이터베이스 전체의 구조를 뜻하는 용법과 구분해서 읽어야 한다.

특정 제품의 스키마와 데이터베이스가 어떤 관계인지는 제품마다 다르다. 용어가 같다는 이유만으로 접근 권한이나 객체 구분 방식까지 같다고 가정할 수 없다.

구조 변경에는 이행이 따른다

새 필수 열을 추가하면 기존 행에는 어떤 값을 넣을지 정해야 한다. 열을 삭제하거나 의미를 바꾸면 기존 프로그램이 영향을 받을 수 있다. 구조 변경은 기존 자료와 연결된 프로그램을 함께 고려하는 작업이다.

이행 순서와 호환 기간을 계획하고, 실행 전후의 구조를 확인해야 한다. 스키마 정의가 문서에만 남아 있고 실제 구조와 다르면 운영과 복구 과정에서 예상치 못한 문제가 생길 수 있다.

관련 문서

데이터 모델 / 데이터베이스 / SQL / 데이터베이스 정규화