데이터 베이스 스키마란 무엇일까. 위키백과에 따르면 데이터베이스에서 자료의 구조, 자료의 표현 방법, 자료간의 관계를 형식 언어로 정의한 구조라고 정의하고 있다. 데이터베이스 관리 시스템(DBMS)이 주어진 설정에 따라 데이터베이스 스키마를 생성하고 데이터 베이스 사용자가 자료를 저장 조회, 삭제, 변경할때 DBMS는 자신이 생성한 데이터베이스 스키마를 참조하여 명령을 수행한다고 하는데 이때 스키마는 3층 구조로 되어있다고 한다. 한번 살펴보도록 하자.
외부 스키마(External Schema)
: 프로그래머나 사용자의 입장에서 데이터베이스의 모습으로 조직의 일부분을 정의한 것개념 스키마(Conceptual Schema)
: 모든 응용 시스템과 사용자들이 필요로 하는 데이터를 통합한 조직 전체의 데이터 베이스 구조를 논리적으로 정의한 것내부 스키마(Internal Schema)
: 전체 데이터베이스의 물리적 저장 형태를 기술하는 것외부 스키마는 사용자 View라고 볼 수 있다. 외부 스키마는 전체 데이터베이스의 한 논리적인 부분을 볼 수 있으므로 서브 스키마라고도 불린다.
하나의 데이터베이스 시스템에는 여러개의 외부 스키마가 존재할 수 있으며 하나의 외부 스키마를 여러개의 응용 프로그램이나 사용자가 공용할 수도 있으며 같은 데이터베이스에 대해서도 서로 다른 관점으로 정의할 수 있도록 허용한다고 한다. 일반 사용자는 SQL을 이용하여 DB를 쉽게 사용할 수 있으며 응용프로그래머는 프로그래밍 언어를 사용하여 DB에 접근할 수 있다고 한다.
개념 스키마는 전체적인 View를 지징하는데, 데이터베이스의 전체적인 논리적인 구조로서, 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터 베이스인 셈이며, 하나만 존재한다고 한다.
개념 스키마는 개체간의 관계와 제약 조건을 나타내고 데이터베이스의 접근 권한, 보안 및 무결성 규칙에 관한 명세를 정의하며 데이터 베이스 파일에 저장되는 데이터의 형태를 나타내는 것으로 단순히 스키마라고 하면 이 개념 스키마를 의마하는 셈이 된다.
내부 스키마는 저장스키마라고도 하는데, 물리적 저장장치의 입장에서 본 데이터베이스 구조로 물리적인 저장장치와 밀접한 계층이라고 한다.
내부 스키마는 실제로 데이터베이스에 저장될 레코드의 물리적인 구조를 정의하고, 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서등을 나타내기도 한다고 한다. 또 시스템 프로그래머나 시스템 설계자가 보는 관점의 스키마인 셈이라고도 할 수 있다.
데이터 독립성은 데이터 베이스 내의 데이터, 데이터를 사용하는 사용자 및 응용 프로그램, 데이터 베이스의 저장 구조가 서로 영향을 받지 않는 성질을 의미하는데, 이는 각각 어떤 독립성을 띄느냐에 따라 각각의 스키마에게 영향을 끼치는지 여부를 판단하게 된다.
논리적 독립성
: 개념 스키마가 변경되어도 외부 스키마에 영향을 주지 않는다.
물리적 독립성
: 내부 스키마가 변경되어도 개념스키마와 외부 스키마에 영향을 주지 않는다.
참고 자료
https://coding-factory.tistory.com/216
https://iingang.github.io/posts/DB-schema/