이 글은 데이터베이스 스터디 중 학습한 내용을 정리한 것입니다.
데이터베이스 시스템
데이터베이스의 구성요소를 모두 모아, 데이터베이스 시스템이라고 말합니다. DB 시스템은 위와 같은 요소들로 구성되있습니다. 이 글에서는, 그 중 데이터베이스 3단계 구조와 스키마에 대해 알아볼 것입니다.
3단계 데이터베이스 구조
3단계 데이터베이스 구조는, 미국의 표준화 기관인 ANSI/SPARC에서 제안한 “데이터베이스의 복잡한 내부 구조를 감추고 일반 사용자가 데이터베이스를 쉽게 이해하고 이용할 수 있도록 만든 3단계 구조”입니다.
3단계 DB 구조는 아래의 단계로 구성됩니다. 내부 단계 → 외부 단계로 갈수록 추상화의 레벨이 높아집니다.
- 외부 단계 : 개별 사용자 관점 (집주인 관점)
- 개념 단계 : 조직 전체의 관점 (관리자 관점)
- 내부 단계 : 물리적인 저장 장치의 관점 (건설 업체 관점)
외부 단계
외부 단계에서는 개별 사용자가 데이터베이스를 어떻게 보는가를 표현하므로, 사용자마다 생각하는 데이터베이스의 구조가 다릅니다. 이처럼 외부 단계에서 사용자에게 필요한 데이터베이스를 정의한 것을 외부 스키마라고 합니다. 외부 스키마는 각 사용자가 생각하는 데이터베이스의 모습인 논리적인 구조로, 사용자마다 다릅니다. 시스템의 관점에서, 외부 스키마를 정의하는 것은 DB 사용자와 응용 프로그램입니다.
개념 단계
사용자들의 외부 스키마를 통합하여, 데이터베이스를 조직 전체의 관점에서 이해하고 표현하는 단계입니다. 개념 단계에서는 DBMS나 관리자의 관점에서 모든 사용자에게 필요한 데이터를 통합한 전체 데이터베이스의 논리적 구조를 정의합니다. 이를 개념 스키마라고 합니다. 개념 스키마는 전체 데이터베이스에 어떤 데이터가 저장되는지, 데이터들 간에는 어떤 관계가 존재하고 어떤 제약조건이 존재하는지에 대한 정의뿐만 아니라, 데이터에 대한 보안 정책이나 접근 권한에 대한 정의도 포함합니다.
내부 단계
데이터베이스를 디스크 같은 저장 장치의 관점에서 이해하고 표현하는 단계입니다. 내부 단계는 전체 데이터베이스가 저장 장치에 실제로 저장되는 방법을 정의하며 이를 내부 스키마라고 합니다. 데이터베이스는 저장 장치에 파일 형태로 저장되는데, 내부 스키마는 파일에 데이터를 저장하는 레코드의 구조, 레코드를 구성하는 필드 크기, 인덱스를 이용한 레코드 접근 경로 등을 정의합니다.
데이터베이스를 굳이 3단계의 구조로 나눠 정의한 이유는 무엇일까요? 그 궁극적인 목적은 데이터 독립성을 실현하기 위함입니다.
데이터 독립성
데이터 독립성의 목적
지속적으로 증가하는 유지보수 비용을 절감하고 데이터 복잡도를 낮추며 중복된 데이터를 줄이기 위함입니. 데이터베이스에 대한 사용자 뷰와 데이터베이스가 실제 표현되는 뷰를 분리해, 변경 간섭을 줄이는 것이 핵심입니다. 데이터 독립성을 확보하면, 계층별 뷰의 변경이 서로 영향을 받지 않게 됩니다.
논리적 데이터 독립성
개념 스키마가 변경되더라도 외부 스키마가 영향을 받지 않는 것입니다. 그래서 전체 데이터베이스의 논리적인 구조가 변경되어도 관련된 외부/개념 사상 정보만 적절히 수정해주면, 직접 관련이 없는 외부 스키마는 변경할 필요가 없습니다. 예를 들어 개념 스키마에서 연락처 데이터의 이름이 전화번호로 바뀌는 경우, 외부/개념 매핑만 정확히 수정해 주면 됩니다. 이때, 외부 스키마는 ‘연락처’라는 기존 이름을 변경하지 않아도 됩니다.
물리적 데이터 독립성
내부 스키마가 변경되더라도 개념 스키마가 영향을 받지 않는 것이다. 그래서 결과적으로 외부 스키마도 영향을 받지 않습니다. 데이터베이스의 저장 구조가 변경되더라도 개념/내부 매핑 정보만 변경해주면, 직접적으로 연관이 없는 데이터베이스의 논리적 구조는 영향을 받지 않게 됩니다.
참고자료
'CS > 데이터베이스' 카테고리의 다른 글
[DB] SQL 개요 (0) | 2024.01.17 |
---|---|
[DB] Real MySQL 8.0 - 4.1 MySQL 아키텍처 (0) | 2024.01.12 |
[DB] 데이터베이스 기본개념 관련 질문정리 (2) | 2024.01.11 |
[DB] 데이터 모델링 (0) | 2024.01.11 |
[DB] 데이터베이스란? (2) | 2024.01.10 |