데이터베이스에 데이터를 저장하고, 저장된 데이터를 관리하여 조직에 필요한 정보를 생성해주는 시스템.
흔히 데이터베이스, 데이터베이스 관리 시스템, 데이터베이스 시스템을 같은 의미로 사용하는데 각 용어의 개념을 명확히 구분하여 이해해야 한다.
- 데이터베이스(DB) : 데이터를 저장해두는 곳, 데이터의 집합
- 데이터베이스 관리 시스템(DBMS) : 데이터베이스에 저장된 데이터가 일관되고 무결한 상태로 유지되도록 관리하는 시스템
- 데이터베이스 시스템(DBS) : DB와 DBMS를 이용해 조직에 필요한 정보를 제공해주는 전체 시스템
데이터베이스 시스템은 DB와 DBMS외에도 사용자, 데이터 언어, 사용자의 컴퓨터로 구성된다.
스키마(schema) : DB에 저장되는 데이터 구조와 제약조건을 정의한 것
학교에서 학생들의 데이터를 관리한다고 가정해보자.
학번, 이름, 나이, 학과, 전화번호를 저장해야 한다.
학번은 정수로, 이름은 최대 10자의 문자열, 나이는 정수, 학과와 전화번호는 최대 20자의 문자열로 정해져있다. 이러한 정해진 내용이 바로 스키마이다.
그리고 정의도니 스키마에 따라 DB에 실제로 저장된 값이 인스턴스이다.
한 가지 상황을 예시로 들어보겠다. 당신은 인사과에 근무하는 회사원이다.
당신이 어떤 직원의 인사 기록을 찾아봐야 해서 인사 DB에 들어가서 그 직원의 경력사항만 살펴보고 싶다고 했을 때, 당신은 DB의 복잡한 내부구조와 작동원리를 다 알아야 할까?
당연하겠지만 절대 그렇지 않다.
이렇게 일반 사용자가 데이터베이스를 쉽게 이해하고 이용할 수 있도록 미국의 표준화 기관인 ANSI/SPARC에서 3단계 데이터베이스 구조를 제안하였다.
3단계 데이터베이스 구조는 하나의 데이터베이스를 세 단계로 나누어 이해한다.
- 외부 단계(exteranl level) : 개별 사용자 관점
- 개념 단계(conceptual level) : 조직 전체의 관점
- 내부 단계(internal level) : 물리적인 저장 장치의 관점
일반적으로 내부 단계에서 외부 단계로 갈수록 추상화 레벨이 높아진다.
이러한 구조로 DB의 복잡한 구조와 작동방식을 숨기고 필요한 데이터만 단순화한 외부 단계의 관점을 일반 사용자에게 제공할 수 있다.
각 단계를 디테일하게 알아보자
하나의 DB에는 세 가지 유형의 스키마가 존재하지만 이는 관점이 다를뿐 모두 같은 DB를 표현한다. 실제 데이터는 물리적 저장 장치에 저장된 DB에만 존재하므로 외부 스키마를 통해 원하는 데이터를 얻으려면 내부 스키마에 따라 저장된 DB에 접근해야 한다. 그러므로 세 가지 스키마 사이에는 유기적인 대응 관계가 성립해야 한다.
이러한 스키마 사이의 대응 관계를 사상 또는 매핑이라고 한다.
사상을 통해 외부 스키마에서 원하는 정보를 타고타고 들어가서 내부 스키마까지 가서 데이터를 가져올 수 있다.
앞서 데이터베이스의 3가지 구조로 나누고, 단계별로 스키마를 유지하며 스키마 사이의 대응 관계를 정의하는 궁극적인 목적은 데이터 독립성을 실현시키기 위해서다.
데이터 독립성은 하위 스키마를 변경하더라도 상위 스키마가 영향을 받지 않는 특성이다.
아주 중요한 장점이자 DBMS가 필요한 이유이다.
즉, 내부 스키마를 바꿔도 사상 정보만 잘 수정해주면 개념, 외부 스키마를 바꾸지 않아도 된다는 것이다.