먼저 데이터 독립성의 반대말인 데이터 종속성에 대해 알아보겠다.
데이터 종속(Data Dependent)은 응용 프로그램 코드가 데이터 구성과 접근 방법을 기반으로 구현되어 데이터 구성이 변경되면 응용 프로그램을 수정하는 것이 필요하다는 것을 의미한다.
데이터 종속은 다음과 같은 단점이 있다.
1. 응용 프로그램을 수정하지 않고, 레코드 저장 구조나 색인을 변경하는 것이 불가능하다.
2. 같은 데이터를 다른 응용에게 다른 view를 제공하는 것이 가능하지 않다.
그렇다면 데이터 독립성은 무엇일까?
데이터 독립성(Data Independence)은 응용이 저장 레코드의 구조나 접근 기법의 변화에 영향을 받지 않는다는 것이다.
만일, DBMS를 사용한다고 하면 레코드의 저장방식과 응용프로그램의 데이터 타입 간의 변환 처리를 DBMS가 담당하므로 응용 프로그램의 수정이 필요하지 않다.
DBA는 기존 응용을 수정하지 않고서도 새로운 응용의 상이한 데이터 처리 요건에 따라 기존 테이블의 저장 구조나 색인을 포함한 접근 방법을 변경할 수 있는 권한을 갖는다.
데이터베이스 시스템이 기존 파일 처리 방식과 다른 점은 데이터베이스에 관한 메타 데이터, 스키마들을 관리한다는 점이다.
또한, 데이터베이스 시스템은 데이터와 프로그램 간의 분리(insulation)와 데이터 추상화 개념을 지원한다.테이블은 저장 레코드들의 파일을 추상화한 것이다.
그리고 데이터에 대한 복수 개의 다른 view를 지원하는데 이것을 external view라고 한다.
이외에 다중 사용자들에 의한 데이터 공유와 동시적 접근을 지원하는데 transaction처리가 사용된다.
데이터 독립성을 이해하기 위해서는 stored field, stored record, stored file에 대한 개념을 갖는 것이 필요하다.
먼저 stored field는 저장 데이터의 가장 작은 단위로서 테이블의 필드 또는 attribute에 해당된다.
stored record는 테이블의 레코드를 저장하는 파일의 레코드를 지칭한다.
stored file은 테이블의 레코드들을 저장하는 파일에 해당된다.
MySQL 테이블의 행(row)을 논리적 레코드라고 하면 non-DB system에서는 logical record == stored record라고 말할 수 있다.하지만 DB systems에서는 logical record == stored record 조건이 맞을 때도 있고, 맞지 않을 때도 있다.
즉, 저장 레코드 구조는 얼마든지 변경할 수 있는 반면에 논리적 레코드는 변하지 않는다.
저장 레코드를 읽어 논리적 레코드로 변환하여 주는 것을 데이터 materialization이라고 한다.
직접적 데이터 materialization은 논리적 필드에 해당하는 저장 필드가 1:1 대응되는 것을 말한다.
간접적 데이터 materialization은 논리적 필드에 해당하는 1:1 대응 저장 필드가 없는 경우를 말한다.
* 논리적 레코드와 저장 레코드 간에 1:1 대응이 되지않는 경우 *
1) 두개의 저장 레코드타입이 하나의 저장 레코드 타입으로 합쳐질 수 있다.
=> 이 경우, 기존 응용의 논리적 레코드는 합쳐진 저장 레코드의 일부를 가져오도록 view 테이블로 정의할 수 있다.
2) 하나의 저장 레코드 타입이 두개의 저장 레코드 타입으로 분할될 수도 있다.
=> 이때 기존 응용의 논리적 레코드는 분할된 저장 레코드 타입들의 join하는 view 테이블로 처리한다.
마지막으로, 응용 프로그램의 수정은 최소화하는 것이 소프트웨어 유지보수 관리에 매우 중요하다.
반면에 데이터베이스의 저장 구조, 색인 변화, 테이블의 구조 변화는 얼마든지 지원할 수 있어야한다.
데이터 독립성을 요구하는 가장 큰 이유는 응용 변경 없이 데이터베이스가 grow(기존 응용의 변경없이 데이터베이스의 구조 변경, 테이블 증가, 필드의 증가)할 수 있어야 하기 때문이다.
따라서 데이터 독립성이 데이터 모델과 구현을 분리하는 이유가 된다.
참고: 데이터베이스 SQL프로그래밍(MySQL실습), 홍봉희 편저, 부산대학교 출판문화원, 2022
'대학원 공부 > 데이터베이스' 카테고리의 다른 글
[DB] 분산 데이터베이스 처리 (0) | 2022.11.02 |
---|---|
[DB] 데이터베이스 시스템 구조Ⅱ(Database System Architecture Ⅱ) (0) | 2022.11.02 |
[DB] 데이터베이스 시스템 구조(Database System Architecture) (0) | 2022.11.01 |
[DB] 데이터베이스 시스템 (0) | 2022.10.31 |
[DB] 데이터베이스란 (0) | 2022.10.31 |