데이터베이스 관리 시스템(DBMS)은 상호 연관되고 지속적으로 유지되는 데이터를 접근, 관리, 갱신할 수 있도록 지원하는 포괄적인 응용 프로그램 집합입니다. 다른 모든 관리 시스템과 마찬가지로 DBMS의 목표는 데이터베이스에 정보를 효율적이고 편리하게 저장하고 검색할 수 있는 환경을 제공하는 것입니다. 데이터베이스는 대량의 정보를 저장하고 관리하는 데 활용됩니다.
이를 실현하기 위해 반드시 갖추어야 할 핵심 요소는 다음과 같습니다.
- 데이터 모델링 — 정보를 저장하기 위한 구조를 정의하는 작업입니다.
- 질의 처리 메커니즘 — 처리된 데이터를 조작하고 파일 및 시스템 구조를 수정하려면 질의 처리 메커니즘이 필요합니다.
- 장애 복구 및 보안 — 데이터 불일치를 방지하고 보안을 보장하기 위한 장애 복구와 보안 메커니즘은 필수입니다.
- 동시성 제어 — 여러 사용자가 시스템을 공유하는 환경에서는 동시성 제어가 반드시 요구됩니다.
데이터베이스의 아버지, 에드거 F. 코드(Edgar F. Codd)
E.F. 코드 박사는 '데이터베이스 관리 시스템의 아버지'로 불리는 인물로, 사실상 13개에 해당하는 '12가지 규칙'을 제시했습니다. 이 규칙들은 0부터 12까지 번호가 매겨져 있습니다. 그에 따르면, 이 12가지 규칙을 모두 준수하는 DBMS만이 완전한 관계형(relational) 데이터베이스라고 할 수 있습니다. 하지만 지금까지 모든 규칙을 충족하는 데이터베이스는 극소수에 불과합니다. 이 규칙들은 애칭으로 'E.F. 코드의 12계명'이라고도 불립니다. 그의 기념비적인 연구 논문 『대규모 공유 데이터 뱅크를 위한 데이터의 관계형 모델(A Relational Model of Data for Large Shared Data Banks)』은 오늘날에도 여러 번 읽을 가치가 있는 고전입니다.
관계형 데이터베이스 관리 시스템(RDBMS)
데이터베이스 관리 시스템 업계에는 문서화되지 않은 하나의 암묵적인 기준이 있습니다. E.F. 코드의 규칙을 모두 충족하는 데이터베이스가 드물기 때문에, 이 기준은 점차 널리 받아들여지고 있습니다.
- 코드가 제안한 규칙 중 5~6개를 준수하는 관리 시스템 또는 소프트웨어는 DBMS(데이터베이스 관리 시스템)로 분류됩니다.
- 7~9개의 규칙을 준수하면 준관계형 DBMS(semi-RDBMS)로 분류됩니다.
- 9~12개의 규칙을 준수하면 완전한 RDBMS(관계형 데이터베이스 관리 시스템)로 인정받습니다.
E.F. 코드의 12계명 상세 설명
아래에서 E.F. 코드의 12가지 규칙을 하나씩 살펴보겠습니다.
규칙 0 — 기초 규칙(Foundation Rule)
RDBMS로 주장되거나 권고되는 모든 관계형 데이터베이스 관리 시스템은 자체적인 관계형 기능만으로 저장된 데이터 전체를 관리할 수 있어야 합니다.
규칙 1 — 정보 규칙(Rule of Information)
관계형 데이터베이스는 데이터를 릴레이션(relation), 즉 테이블 형태로 저장해야 합니다. 사용자가 정의한 데이터든 메타데이터든, 모든 값은 테이블의 셀 안에 하나의实体(entity)로 저장되어야 합니다.
규칙 2 — 보장된 접근 규칙(Rule of Guaranteed Access)
논리적으로 데이터에 접근하기 위해 포인터를 사용하는 것은 엄격히 금지됩니다. 원자성(atomic)을 가진 모든 데이터는 테이블 이름, 특정 행 값을 나타내는 기본 키(primary key), 속성 값을 나타내는 열(column) 이름의 올바른 조합을 통해 논리적으로 접근 가능해야 합니다.
규칙 3 — 널(Null) 값의 체계적 지원 규칙
관계형 데이터베이스는 널(null) 값을 완전하게 지원해야 합니다. 널 값은 일관되게 '누락된 정보(missing information)'로 취급되어야 하며, 어떤 데이터 타입에도 종속되지 않습니다. 널 값은 공백(blank), 숫자 0, 빈 문자열과 혼동해서는 안 되며, '적용 불가능한 데이터' 또는 '알 수 없는 정보'로 해석될 수도 있습니다.
규칙 4 — 동적 온라인 카탈로그 규칙(Active Online Catalog)
DBMS 용어에서 '메타데이터(metadata)'란 데이터베이스에 대한 데이터, 즉 '데이터에 대한 데이터'를 의미합니다. 이 메타데이터를 저장하는 동적 온라인 카탈로그를 '데이터 사전(Data Dictionary)'이라고 부릅니다. 데이터 사전은 필요한 권한을 가진 인가된 사용자만 접근할 수 있으며, 데이터베이스에 접근하는 데 사용되는 것과 동일한 질의 언어로 접근해야 합니다.
규칙 5 — 포괄적 데이터 서브언어 규칙(Comprehensive Data Sub-language)
하나의 강력한 언어가 무결성 제약조건, 뷰(view), 데이터 조작, 트랜잭션, 권한 부여를 모두 정의할 수 있어야 합니다. 만약 데이터베이스가 이러한 기능들을 서로 다른 경로로 접근하도록 허용한다면 이 규칙을 위반하는 것입니다.
규칙 6 — 뷰 갱신 규칙(Rule of Updating Views)
뷰는 해당 기본 테이블(base table)의 갱신 내용을 반영해야 하며, 그 반대도 마찬가지입니다. 뷰는 제한된 데이터를 보여주는 논리적 테이블로서, 일반적으로 데이터를 읽기 쉽게 만들지만 수정은 불가능하게 합니다. 뷰는 데이터 추상화(data abstraction)에도 도움을 줍니다.
규칙 7 — 집합 수준 삽입·갱신·삭제 규칙(Set-level Operations)
데이터의 검색, 삽입, 갱신, 삭제가 단일 연산으로 수행될 수 있어야 합니다.
규칙 8 — 물리적 데이터 독립성 규칙(Physical Data Independence)
배치(batch) 작업 및 최종 사용자의 작업은 물리적 저장소와 접근 방식으로부터 논리적으로 분리되어야 합니다.
규칙 9 — 논리적 데이터 독립성 규칙(Logical Data Independence)
배치 작업과 최종 사용자는 데이터베이스 스키마를 변경하더라도 스키마나 그 위에 구축된 응용 프로그램을 다시 만들 필요 없이 변경할 수 있어야 합니다.
규칙 10 — 무결성 독립성 규칙(Integrity Independence)
무결성 제약조건은 응용 프로그램 내부가 아니라 데이터 사전에 메타데이터로 저장되고 관리되어야 합니다.
규칙 11 — 분산 독립성 규칙(Distribution Independence)
관계형 시스템의 데이터 조작 언어(DML)는 물리적 데이터 저장 위치와 무관해야 하며, 데이터가 중앙 집중식이든 분산식이든 별도의 변경 없이 동작해야 합니다.
규칙 12 — 비우회 규칙(Non-Subversion)
모든 행(row)은 부과된 보안 및 무결성 제약조건을 준수해야 하며, 이를 우회할 수 있는 특별한 권한은 존재하지 않습니다.
주요 DBMS의 규칙 준수 현황
현재 출시된 거의 모든 대형 DBMS는 RDBMS입니다. 오라클(Oracle)은 11개 이상의 규칙을 구현하고 있으며, 사이베이스(Sybase) 역시 마찬가지입니다. SQL Server도 11개 이상의 규칙을 충족하는 반면, 폭스프로(FoxPro)는 7개 이상의 규칙을 구현하는 수준입니다.