에드거 F. 코드(Edgar F. Codd)는 데이터베이스 관리를 위한 관계형 모델(Relational Model)을 발명한 영국 출신의 컴퓨터 과학자입니다. IBM 재직 당시 관계형 데이터베이스의 이론적 토대를 마련했으며, 오늘날 널리 사용되는 관계형 데이터베이스 관리 시스템(RDBMS)의 아버지로 불립니다.
코드는 1985년, 하나의 데이터베이스 관리 시스템이 진정한 '관계형'으로 인정받기 위해 충족해야 하는 13개의 규칙(규칙 0~12)을 발표했습니다. 이 규칙들은 오늘날에도 RDBMS의 품질을 평가하는 중요한 기준이 됩니다.
규칙 0: 기본 규칙(Foundation Rule)
어떤 시스템이 관계형 데이터베이스 관리 시스템으로 자격을 갖추려면, 반드시 자체적인 관계형 기능(relational capability)을 이용하여 데이터를 관리해야 합니다.
규칙 1: 정보 규칙(Information Rule)
데이터베이스 내의 모든 정보(메타데이터 포함)는 행(row)과 열(column)로 구성된 테이블 형태로 표현되어야 합니다. 이때 행과 열의 순서는 엄격히 구분되지 않아야(unordered) 합니다.
규칙 2: 보장된 접근 규칙(Guaranteed Access Rule)
데이터베이스의 모든 값은 테이블 이름 + 기본 키(Primary Key) + 열 이름의 조합을 통해 논리적으로 접근 가능해야 합니다. 포인터를 사용해 데이터에 직접 접근하는 방식은 이 규칙 위반으로 간주됩니다.
규칙 3: NULL 값의 체계적 처리(Systematic Treatment of Null Values)
NULL 값은 '데이터의 부재' 또는 '유효하지 않은 정보'를 체계적으로 표현하기 위해 데이터베이스 차원에서 완전히 지원되어야 합니다. NULL은 데이터 타입과 무관하며, NULL이 포함된 모든 연산의 결과는 반드시 NULL이 되어야 합니다.
규칙 4: 동적 온라인 카탈로그(Dynamic Online Catalog)
카탈로그(catalog)는 데이터베이스 구조에 대한 완전한 설명을 담고 있습니다. 이 카탈로그는 온라인 상태로 저장되어야 하며, 데이터베이스에서 사용하는 것과 동일한 쿼리 언어로 조회할 수 있어야 합니다.
규칙 5: 강력하고 잘 구조화된 언어(Powerful and Well-Structured Language)
관계형 데이터베이스는 여러 언어를 지원할 수 있지만, 데이터 정의·조작·제어·트랜잭션 등 모든 작업을 처리할 수 있는 최소 하나의 종합적인 언어를 제공해야 합니다. 대표적인 예가 바로 SQL입니다.
규칙 6: 뷰 갱신 규칙(View Updating Rule)
이론적으로 갱신(update)이 가능한 모든 뷰(View)는 시스템에 의해서도 실제로 갱신될 수 있어야 합니다.
규칙 7: 고수준의 삽입·수정·삭제(High-level Insert, Update, Delete)
데이터의 삽입, 수정, 삭제 연산은 단일 연산자(single operand)를 기준으로 수행될 수 있어야 하며, 이러한 기능은 관계의 모든 수준에서 제공되어야 합니다.
규칙 8: 물리적 데이터 독립성(Physical Data Independence)
저장 장치의 변경, 접근 방식(access method)의 변경 등 시스템의 물리적인 변화가 응용 프로그램이나 기존 시스템 활동에 영향을 주어서는 안 됩니다.
규칙 9: 논리적 데이터 독립성(Logical Data Independence)
테이블 분할, 결합 등 데이터베이스의 논리적 구조에 변화가 생기더라도, 사용자가 보는 응용 프로그램의 관점은 일관성을 유지해야 합니다. 이 규칙은 12가지 규칙 중 가장 충족하기 어려운 것으로 알려져 있습니다.
규칙 10: 무결성 독립성(Integrity Independence)
관계형 데이터베이스에 특화된 무결성 제약조건(integrity constraints)은 별도의 응용 프로그램이 아니라 해당 데이터베이스의 언어로 정의되어 카탈로그에 저장되어야 합니다. 즉, 관계형 DBMS는 프런트엔드(front-end)에 의존하지 않아야 합니다.
규칙 11: 분산 독립성(Distribution Independence)
데이터가 여러 서버나 위치에 분산되어 있더라도, 최종 사용자는 데이터베이스를 하나의 통합된 단일체로 인식해야 합니다. 또한 데이터베이스가 네트워크상에 분산 배치되어 있어도 문제없이 작동해야 합니다.
규칙 12: 비파괴 규칙(Nonsubversion Rule)
만약 시스템이 저수준(low-level) 접근을 허용한다면, 그러한 접근 방식이 무결성 제약조건을 우회하거나 보안 메커니즘을 무시하고 데이터를 변경할 수 없어야 합니다.
마무리
Codd의 12가지 규칙은 단순한 이론에 머물지 않고, 오늘날 Oracle, MySQL, PostgreSQL 등 현대적인 RDBMS 설계의 이론적 기준이 되었다는 점에서 큰 의미를 가집니다. 실제로 모든 규칙을 100% 만족하는 상용 DBMS는 드물지만, 이 규칙들은 데이터베이스 시스템의 완결성과 신뢰성을 평가하는 중요한 척도로 활용되고 있습니다.