데이터의 무결성 훼손
데이터 무결성(data integrity)이란 데이터베이스에서 관리되는 데이터의 정확 성을 보장하는 것이다. 데이터의 무결성 훼손은 하나의 사실을 표시하는 두 개 이상의 중복된 데이터가 서로 일치하지 않는 경우에도 발생할 수 있다. 그러나 중복이 발생하지 않는 경우에도 부정확한 데이터가 데이터베이스 안에 저장될 수 있다.
데이터베이스 내에 저장된 데이터 값은 일정한 형식의 제약 조건들을 만족해야 할 때가 있다. 예를 들어 수강 파일에서 학생이 한 학기에 신청할 수 있는 강의의 총 학점은 21학점 이하여야 한다는 제약조건이 있다고 생각해 보자. 이러한 제약조건은 데이터의 값으로 표현되기가 매우 어렵다. 이 경우 애플리케이션 개발자는 수강 파일과 관련된 애플리케이션마다 제약조건에 해당하는 프로그래밍 코드(수강 신청된 강의의 학점 총합이 21을 넘는지 확인)를 추가해야 한다. 그러나 새로운 제약조건이 추가되거나 수정될 경우, 관련된 애플리케이션 프로그램을 일일이 변경하기가 매우 번거롭고 복잡하다. 게다가 새로운 제약 조건이 서로 다른 파일 내에 존재하는 복수 개의 데이터 항목에 적용될 때에는 더욱 어려워진다.
데이터베이스 내에서 이러한 문제를 방지하는 작업을 무결성 유지라고 한 다. 무결성을 유지하는 방법에는 여러 가지가 있으나, 일반적으로 자주 사용되는 방법은 중앙통제에 의한 갱신 방법이다. 이 방법은 검증 프로그램을 작성하여 모든 갱신 처리 작업 시 필수적으로 검증을 거치도록 통제를 한다.
동시 접근 이상
시스템의 전체적인 성능을 향상하고 빠른 응답시간을 얻기 위해서, DBMS는 여러 사용자의 요청 작업을 동시에 처리한다. 그런데 DBMS에서 동일한 데이터에 대한 수정 요구가 동시에 발생한 경우 비정상적인 데이터 수정이 일어날 수 있다.
예를 들어 A라는 사용자가 매출 파일에서 매출번호 350번에 해당하는 매출 금액을 현재 1,000원인 상태에서 50원 더하는 연산을 수행하였다면, A 사용자는 결괏값으로 1,050원을 기대할 것이다. 또한 이와 동시에 B라는 사용자 가 같은 350번 데이터 1,000원에 대해 50원을 빼는 연산을 수행하였다면, B 사용자는 A와는 달리 결괏값으로 950원을 기대할 것이다. 이때 동시성이 제어되지 않는 시스템에서는 두 사용자에 의해 요청된 연산에 대한 실제 수행 결과가 1,050원, 950원, 1,000원 등과 같이 예측할 수 없는 잔액이 나타날 수 있다.
이러한 예측 불가능한 값이 발생하는 문제를 막기 위해 시스템은 어떤 형태로든 데이터 접근에 대한 통제를 가해야 한다. 그러나 사전에 협의가 이뤄지지 않은 많은 애플리케이션에 의해 접근되는 파일 처리 시스템의 경우, 데이터 접근을 제어하기가 거의 불가능하다. 반면 DBMS에서는 이를 해결하기 위해 트랜잭션 (transaction)이라는 단위의 개념을 사용함으로써 동시 접근(concurrent access) 기능을 제공한다.
자기 기술성
데이터베이스의 주요 특징 중의 하나는 데이터 자체뿐만 아니라 데이터에 대한 정의나 설명에 대한 부분까지 관리한다는 것이다. 이를 DBMS의 자기 기술성(self-describing)이라고 한다. 데이터베이스 시스템은 데이터베이스에 속하는 각 파일의 구조, 각 데이터 항목의 타입과 저장 형식, 데이터의 다양한 제약조건 등의 메타데이터(meta-data)를 포함한다. 이러한 내용은 시스템 카탈로그(system catalog) 또는 데이터 사전(data dictionary)에 저장된다. 시스템 카탈로그는 특정 데이터베이스에 저장된 파일의 구조를 파악하기 위한 데이터의 타입이나 포맷과 같은 정보를 담고 있다.
파일 처리 시스템에서는 데이터 정의가 애플리케이션 프로그램의 일부로 표현된다. 반면 DBMS는 시스템 카탈로그에서 데이터베이스에 대한 정의를 참조하여 데이터베이스에 접근하므로 다양한 방법으로 데이터에 접근할 수 있다.
프로그램과 데이터의 독립성 및 추상화
파일 처리 시스템에서는 데이터 파일이 애플리케이션 프로그램 내에 종속되는 문제점이 있지만, DBMS에서는 데이터 파일의 구조가 프로그램으로부터 분리되어 시스템 카탈로그에 저장되기 때문에 데이터 종속 문제가 발생하지 않는다. 이러한 특성을 프로그램-데이터 독립성(program-data independency)이 라고 한다.
DBMS는 데이터가 어떻게 저장되었는가에 대한 상세한 정보보다는 사용자에게 데이터에 대한 개념적인 표현(conceptual representation)을 제공함으로써 사용자가 더 쉽게 데이터베이스에 접근할 수 있도록 한다.
이러한 개념은 컴퓨터 분야에서의 데이터 추상화(data abstraction)라는 작업으로, 데이터베이스 시스템에서는 프로그램-데이터 독립성과 프로그램-연산 독립성을 제공하는 성질을 의미한다.
다중 뷰
데이터베이스를 사용하는 사용자들은 필요에 따라 서로 다른 관점으로 데이터를 바라볼 필요가 있다. 이를 위해 데이터베이스 시스템에서는 한 데이터베이스에 대해 필요한 부분만을 추출해서 볼 수 있도록 하는데. 이것을 뷰(view)라고 한다. 예를 들면, 학사 관리 부서에서 사용하는 학생 파일과 성적처리 부서에서 사용하는 성적 파일은 서로 중복되는 데이터가 있으므로, 데이터베이스 시스템에서는 이 데이터를 하나의 파일에 저장한다. 이때 데이터베이스 시스템은 각각의 사용자가 필요로 하는 부분만 볼 수 있도록 뷰를 제공한다. 즉, 뷰를 이용하면 파일은 하나만 관리하지만 학사관리 부서에서는 학사관리 데이터만, 성적처리 부서에서는 성적처리 데이터만 볼 수 있다.
다른 예로, 은행의 현금 자동인출기에서 볼 수 있는 여러 종류의 화면도 뷰라고 할 수 있다. 은행 데이터베이스는 다수의 사용자에 의해 공용으로 사용되지만, DBMS는 각각 사용자가 마치 독자적으로 데이터베이스에 접근하는 것처럼 보일 수 있도록 여러 개의 뷰를 제공한다.
'데이터베이스' 카테고리의 다른 글
데이터 모델링과 데이터 정의 언어 (0) | 2024.03.01 |
---|---|
데이터 모델 (0) | 2024.02.27 |
데이터베이스 관리시스템의 구조 (0) | 2024.02.27 |
데이터의 종속과 중복 (0) | 2024.02.27 |
데이터베이스의 시스템의 개요 (0) | 2024.02.27 |