데이터 독립성
이란 데이터베이스의 구조와 데이터의 내용이 서로 영향을 미치지 않는 것을 의미합니다.
데이터 독립성은 논리적 데이터 독립성
과 물리적 데이터 독립성
으로 나눌 수 있습니다.
논리적 데이터 독립성은 데이터베이스의 논리적 구조가 변경되어도 응용 프로그램이나 사용자의 요구에 영향을 주지 않는 것을 말합니다.
예를 들어, 테이블의 속성이나 관계가 추가되거나 삭제되어도 기존의 쿼리나 트랜잭션은 그대로 유지될 수 있습니다.
하지만 논리적 데이터 독립성에는 한계가 있습니다. 컬럼이 삭제된 경우에는 해당 컬럼을 참조하는 쿼리에서 오류가 발생하기 때문에, 논리적 데이터 독립성이 깨질 수 있습니다. 즉, 논리적 데이터 독립성은 주로 데이터베이스 구조의 확장이나 재설계에서 발생하는 변화를 처리하는 데 중점을 두며, 기존 데이터 구조의 손실(예: 컬럼 삭제)에는 영향을 받을 수밖에 없습니다.(2024.08.27 추가)
물리적 데이터 독립성은 데이터베이스의 물리적 구조가 변경되어도 논리적 구조나 데이터의 내용에 영향을 주지 않는 것을 말합니다.
예를 들어, 파일의 저장 방식이나 인덱스의 구성이 바뀌어도 데이터베이스의 스키마나 데이터는 그대로 유지될 수 있습니다.
데이터 독립성
은 데이터베이스의 유지보수와 확장성을 향상시키는 장점을 가집니다.
데이터베이스의 구조가 변경되더라도 응용 프로그램이나 사용자에게 영향을 주지 않으므로, 시스템의 안정성과 신뢰성을 높일 수 있습니다. 또한, 데이터베이스의 성능이나 보안을 개선하기 위해 필요한 조치를 쉽게 적용할 수 있습니다.
데이터 독립성 보장을 위한 데이터베이스 구조에는 3단계 데이터베이스 구조
가 있습니다.
3단계 데이터베이스 구조
를 알아보기 전에 스키마
에 대해 먼저 알아보겠습니다.
스키마
란 데이터베이스의 구조와 제약조건을 정의한 것입니다.
스키마는 데이터베이스의 논리적인 설계를 나타내며, 데이터베이스에서 어떤 데이터가 저장되고 어떻게 관련되어 있는지를 표현합니다.
스키마는 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한 것입니다.
스키마는 데이터베이스를 구성하는 데이터 개체(Entity)
, 개체의 특성을 나타내는 속성(Attribute)
, 개체 사이에 존재하는 관계(Relationship)
및 데이터 조작 시 데이터 값들이 갖는 제약 조건
등에 관하여 기술합니다.
이를 메타데이터(MetaData)라고 부르기도 합니다.
쉽게 말해 DB 내에 데이터가 어떤 구조로 저장되는가를 나타내는 데이터베이스 구조를 스키마
라고 합니다.
스키마는 데이터베이스의 전체적인 모습을 보여주는 외부 스키마
, 데이터베이스의 물리적인 저장 방식을 결정하는 내부 스키마
, 그리고 외부 스키마와 내부 스키마 사이의 관계를 매핑하는 개념 스키마
로 구성됩니다.
이렇게 3단계로 나뉘는 데이터베이스 구조를 3단계 데이터베이스 구조
라고 합니다.
3단계 데이터베이스 구조의 장점은 다음과 같습니다.
외부 스키마는 사용자의 요구에 따라 다양하게 정의될 수 있으므로, 사용자의 관점에서 데이터를 접근하고 조작할 수 있습니다.
사용자나 응용 프로그래머가 개인의 입장에서 필요한 데이터베이스의 논리적 구조를 정의합니다.
하나의 데이터베이스 시스템에는 여러 개의 외부 스키마가 존재할 수 있습니다.
하나의 외부 스키마를 여러개의 응용 프로그램 혹은 사용자가 공유할 수 있습니다.
일반 사용자는 SQL과 같은 질의어를 이용하여 DB를 쉽게 사용할 수 있습니다.
개념 스키마는 데이터베이스의 전체적인 논리적인 구조를 표현하므로, 데이터의 독립성을 보장합니다.
즉, 내부 스키마가 변경되어도 개념 스키마는 유지되므로, 외부 스키마에 영향을 주지 않습니다.
데이터베이스의 전체적인 논리적 구조로, 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로 하나만 존재합니다.
개념 스키마는 개체 간의 관계(Relationship)와 제약 조건을 나타내고 데이터베이스의 접근 권한, 보안 및 무결성 규칙에 관한 명세를 정의합니다.
데이터베이스 파일에 저장되는 데이터의 형태를 나타내는 것으로, 단순히 스키마라고 하면 개념 스키마를 의미합니다.
내부 스키마는 데이터베이스의 물리적인 저장 방식을 결정하므로, 데이터의 효율적인 저장과 검색을 위한 최적화가 가능합니다.
저장 데이터 항목의 표현방법, 내부 레코드의 물리적 순서, 인덱스 유/무 등을 나타냅니다.
3단계 데이터베이스 구조는 데이터베이스의 설계와 관리를 용이하게 하며, 데이터의 일관성과 무결성을 유지할 수 있습니다. 이러한 이유로 3단계 데이터베이스 구조는 현대의 대부분의 데이터베이스 시스템에서 적용되고 있습니다.
https://medium.com/nixis-institute/dbms-three-level-architecture-c96ba7a21f5b
https://code-lab1.tistory.com/
테이블의 컬럼이 삭제가 된다면 어떻게 논리적 데이터 독립성이 유지가 되는건가요?
삭제된 컬럼에 대한 Select문이 있다면 조회가 되지 않으니 논리적 데이터 독립성이 꺠지는 것 아닌가요?