맨위로가기

커드의 12 규칙

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

커드의 12 규칙은 에드거 F. 커드가 1970년에 제시하고 1974년에 발전시킨 관계형 데이터베이스 관리 시스템(RDBMS)의 12가지 규칙이다. 이 규칙들은 관계형 데이터베이스의 이상을 제시하며, 특히 1980년대 초 관계형 데이터베이스의 본질이 희석되는 것을 막기 위해 고안되었다. 규칙 0은 기본 규칙으로, RDBMS는 관계형 기능만을 사용하여 데이터베이스를 관리해야 함을 명시한다. 그 외 정보 규칙, 보장된 접근 규칙, 널 값 처리, 동적 카탈로그, 포괄적인 데이터 언어, 뷰 갱신, 고수준 연산 지원, 물리적/논리적 데이터 독립성, 무결성 독립성, 분산 독립성, 전복 방지 규칙 등이 있다. 이 규칙들은 관계형 데이터베이스 시스템의 설계와 구현에 대한 지침을 제공하며, 시스템의 기능과 특징을 정의한다.

2. 역사

커드는 원래 1970년에 이 규칙들을 제시했으며, 1974년 학술 회의 논문에서 이를 더 발전시켰다.[5] 그의 목표는 1980년대 초 데이터베이스 벤더들이 기존 제품을 관계형 겉치레로 포장하려 할 때, 원래 관계형 데이터베이스에 대한 비전이 희석되는 것을 막는 것이었다. 규칙 12는 특히 이러한 입장에 대응하기 위해 고안되었다.

1999년 한 교과서에서는 "요즘 대부분의 RDBMS는 ... 이 시험을 통과한다"고 언급했지만,[5] 2007년 다른 교과서에서는 "어떤 데이터베이스 시스템도 12개 규칙을 모두 준수하지 않는다"고 언급했다.[6] 커드 자신도 저서 "데이터베이스 관리를 위한 관계형 모델: 버전 2"에서, 그의 원래 12개 규칙은 대략적인 구분을 위해 사용될 수 있지만, 그의 관계형 모델 버전 2(RM/V2)의 333가지 기능이 더 세밀한 구분을 위해 필요하다고 인정했다.[7]

3. 규칙

에드거 F. 코드가 관계형 데이터베이스 관리 시스템(RDBMS)이 갖추어야 할 요건으로 제시한 13가지 규칙(규칙 0 포함)은 다음과 같다. 이 규칙들은 1980년대 초, 기존 데이터베이스 벤더들이 제품을 관계형으로 포장하려 할 때, 코드의 원래 비전이 희석되는 것을 막기 위한 목표를 가지고 있었다. 특히 규칙 12는 이러한 상황에 대응하기 위해 고안되었다.

규칙 번호규칙 이름핵심 내용 요약
규칙 0기본 규칙시스템은 오직 관계형 기능만으로 데이터베이스를 관리해야 한다.
규칙 1정보 규칙모든 정보는 테이블 내 값으로 유일하게 표현되어야 한다.
규칙 2보장된 접근 규칙모든 데이터는 테이블명, 기본 키, 열 이름으로 논리적 접근이 보장되어야 한다.
규칙 3널 값의 체계적인 처리정보 없음 또는 적용 불가를 나타내는 널(Null) 값을 체계적으로 지원하고 처리해야 한다.
규칙 4동적 온라인 카탈로그데이터베이스 구조(카탈로그)는 관계형으로 표현되고, 일반 데이터와 동일한 언어로 접근 가능해야 한다.
규칙 5포괄적인 데이터 부분 언어데이터 정의, 조작, 제어 등을 포괄하는 최소 하나의 관계형 언어를 지원해야 한다.
규칙 6뷰 갱신 규칙이론적으로 갱신 가능한 모든 뷰는 시스템에 의해 실제로 갱신 가능해야 한다.
규칙 7고수준 삽입, 갱신, 삭제단일 명령으로 여러 행(집합 단위)에 대한 삽입, 갱신, 삭제가 가능해야 한다.
규칙 8물리적 데이터 독립성데이터의 물리적 저장 방식 변경이 애플리케이션에 영향을 주지 않아야 한다.
규칙 9논리적 데이터 독립성데이터의 논리적 구조 변경이 애플리케이션에 영향을 주지 않아야 한다.
규칙 10무결성 독립성무결성 제약조건은 애플리케이션과 분리되어 정의되고 카탈로그에 저장되어야 한다.
규칙 11분산 독립성데이터베이스가 분산되어 있어도 사용자는 이를 인지하지 못해야 한다.
규칙 12전복 방지 규칙저수준 인터페이스가 고수준 언어로 정의된 무결성 제약 조건을 우회할 수 없어야 한다.



1999년의 한 교과서에서는 대부분의 현대 RDBMS가 이 규칙들을 통과한다고 언급했지만,[5] 2007년의 다른 교과서에서는 어떤 데이터베이스 시스템도 12개 규칙을 모두 완벽하게 준수하지는 못한다고 지적했다.[6] 코드 자신도 그의 저서 "데이터베이스 관리를 위한 관계형 모델: 버전 2"에서 원래의 12개 규칙은 기본적인 구분을 위한 것이며, 더 세밀한 평가를 위해서는 그의 관계형 모델 버전 2(RM/V2)의 333가지 기능이 필요하다고 언급했다.[7]

3. 1. 규칙 0: 기본 규칙

시스템이 관계형 데이터베이스 관리 시스템으로서 자격을 갖추려면, 반드시 관계형 모델의 원칙과 기능만을 사용하여 데이터베이스를 관리해야 한다. 즉, 데이터베이스를 관리하는 모든 작업은 다른 방식이 아닌 오직 관계형 수단을 통해서만 이루어져야 한다.

3. 2. 규칙 1: 정보 규칙

데이터베이스에 저장되는 모든 정보는 단 하나의 방법, 즉 (table) 안에 있는 행(row)의 각 열(column)에 포함된 값으로 표현되어야 한다.

3. 3. 규칙 2: 보장된 접근 규칙

관계형 데이터베이스에 저장된 모든 개별 데이터(원자 값)는 모호함 없이 접근 가능해야 한다. 구체적으로, 특정 데이터 값은 해당 값이 속한 테이블의 이름, 해당 을 식별하는 기본 키 값, 그리고 해당 의 이름을 조합하여 논리적으로 유일하게 찾아낼 수 있도록 보장되어야 한다. 이는 모든 테이블에 기본 키가 필수적으로 요구된다는 것을 의미한다.

3. 4. 규칙 3: 널 값의 체계적인 처리

관계형 DBMS는 열(column)에 값이 없는 경우를 표현하기 위해 '널'(null) 값을 지원해야 한다. 널 값은 단순히 비어있는 상태(예: 빈 문자열)나 숫자 0과는 구별되며, '정보가 없거나 적용할 수 없는 정보'임을 나타내는 특별한 표현이다. DBMS는 이러한 널 값을 체계적으로 처리해야 하며, 이는 특정 자료형에 국한되지 않고 모든 자료형에 대해 일관되게 지원되어야 한다. 즉, 숫자형 데이터의 널 값은 0이나 다른 숫자와 구별되어야 하고, 문자열형 데이터의 널 값은 빈 문자열이나 공백 문자와 구별되어야 한다.

3. 5. 규칙 4: 관계형 모델 기반의 동적 온라인 카탈로그

데이터베이스의 구조 정보, 즉 카탈로그는 관계 모델에 기반하여 온라인 상태로 제공되어야 한다. 이는 '동적 온라인 카탈로그'라고도 불린다. 중요한 점은 이 카탈로그 정보가 일반 데이터와 동일한 방식으로 표현되어야 한다는 것이다. 따라서 권한이 부여된 사용자는 일반 데이터를 조회할 때 사용하는 것과 동일한 관계형 언어(쿼리 언어)를 사용하여 데이터베이스의 구조 정보(카탈로그)에 접근하고 질의할 수 있어야 한다.

3. 6. 규칙 5: 포괄적인 데이터 부분 언어 규칙

시스템은 최소 하나 이상의 관계형 모델 언어를 지원해야 하며, 이 언어는 문자열로 표현 가능한 잘 정의된 선형 문법을 가져야 한다. 또한, 대화형으로 사용하거나 애플리케이션 소프트웨어 내에서 사용할 수 있어야 하며, 다음의 모든 항목을 포괄적으로 지원해야 한다.

# 데이터 정의

# 뷰 정의

# 데이터 조작 (대화형 및 프로그램 방식 모두 포함)

# 무결성 제약조건 정의

# 권한 부여

# 트랜잭션 경계 관리 (시작, 커밋, 롤백)

3. 7. 규칙 6: 뷰 갱신 규칙

이론적으로 갱신 가능한 모든 뷰는 시스템에 의해서 갱신 가능해야 한다.

3. 8. 규칙 7: 고수준 삽입, 갱신, 삭제

시스템은 기본 관계 또는 파생 관계(예: 뷰)를 단일 피연산자로 취급하여 처리할 수 있어야 한다. 이러한 능력은 단순히 데이터를 검색하는 데 그치지 않고, 데이터의 삽입, 갱신, 삭제 작업에도 동일하게 적용되어야 한다. 즉, 시스템은 여러 행이나 여러 테이블에 걸친 데이터를 하나의 집합(set)으로 간주하고, 이 집합 전체에 대해 한 번의 명령으로 삽입, 갱신, 삭제 작업을 수행하는 기능(set-at-a-time)을 지원해야 한다. 이는 개별 행 단위로 작업을 반복 처리하는 저수준 방식과 대비되는 고수준의 데이터 처리 능력을 요구하는 규칙이다.

3. 9. 규칙 8: 물리적 데이터 독립성

데이터베이스를 물리적으로 저장하는 방식이나 하드웨어, 데이터 접근 방식 등이 변경되더라도, 이를 이용하는 애플리케이션 프로그램이나 터미널 활동은 논리적으로 영향을 받지 않고 그대로 작동할 수 있어야 한다. 예를 들어, 데이터가 배열에 저장되든 링크드 리스트에 저장되든, 물리적인 저장 구조나 표현 방식이 바뀌어도 애플리케이션은 수정 없이 동작해야 함을 의미한다.

3. 10. 규칙 9: 논리적 데이터 독립성

"논리적 데이터 독립성"은 데이터베이스의 논리적 구조, 예를 들어 테이블, 열, 행 등이 변경되더라도, 해당 데이터베이스를 사용하는 애플리케이션 프로그램이나 사용자의 작업(터미널 활동)이 영향을 받지 않고 그대로 유지되어야 한다는 원칙이다. 즉, 데이터베이스의 기본 테이블 구조에 정보는 보존하면서 변경(예: 테이블 분할, 통합, 새로운 열 추가 등)이 이루어져도, 기존에 만들어진 프로그램들은 수정 없이 계속 작동할 수 있어야 한다. 이러한 독립성은 뷰 등을 활용하여 달성할 수 있으며, 물리적 데이터 독립성보다 일반적으로 구현하기 더 어려운 것으로 알려져 있다.

3. 11. 규칙 10: 무결성 독립성

특정 관계형 데이터베이스에 고유한 무결성 제약조건은 애플리케이션 프로그램이 아닌 관계형 데이터 부분 언어에서 정의하고 데이터베이스 카탈로그에 저장할 수 있어야 한다.[1][2][3] 또한, 기존의 애플리케이션에 영향을 주지 않고 필요에 따라 무결성 제약조건들을 변경하는 것이 가능해야 한다.[1][3]

3. 12. 규칙 11: 분산 독립성

데이터베이스가 여러 위치에 분산되어 저장되더라도, 최종 사용자는 이러한 분산 사실을 인지하지 못해야 한다. 사용자는 항상 데이터가 마치 한 곳에만 존재하는 것처럼 느낄 수 있어야 한다.

데이터베이스를 여러 위치에 분할하여 분산 환경으로 구성하더라도, 사용자는 분산 여부를 의식하지 않고 데이터베이스를 이용할 수 있어야 한다. 또한, 다음과 같은 상황에서도 기존에 작동하던 애플리케이션은 영향을 받지 않고 그대로 동작해야 한다:

  • 분산을 지원하는 DBMS를 처음 도입하거나 기존의 중앙 집중형 DBMS에서 분산 DBMS로 변경하는 경우
  • 분산되어 저장된 데이터를 시스템 내에서 다른 위치로 재배치하는 경우

3. 13. 규칙 12: 전복 방지 규칙

만약 시스템레코드 단위로 데이터를 처리하는 저수준 인터페이스(한 번에 하나의 레코드만 처리하는 방식 등)를 제공하더라도, 이 인터페이스를 통해 무결성 규칙이나 보안 제약 조건 등 고수준 관계형 언어로 설정된 제약을 우회하는 것을 허용해서는 안 된다. 다시 말해, 저수준 접근 방식이 고수준 언어(한 번에 여러 레코드 처리)로 정의된 제약을 무력화해서는 안 된다. 이는 시스템의 안정성과 데이터의 일관성을 보장하기 위한 중요한 규칙이다.

참조

[1] 웹사이트 Codd's 12 Rules https://reldb.org/c/[...] RelDB.org 2019-06-30
[2] 간행물 Is Your DBMS Really Relational? 1985-10-14
[3] 간행물 Does Your DBMS Run By the Rules 1985-10-21
[4] 서적 Man vs Big Data: Everyday data explained https://books.google[...] 2022-01-22
[5] 서적 Transact-SQL Programming: Covers Microsoft SQL Server 6.5 /7.0 and Sybase Adaptive Server 11.5 https://books.google[...] 2022-01-22
[6] 서적 Microsoft Office Access 2007: The L Line, The Express Line to Learning https://books.google[...] 2022-01-22
[7] 서적 The Relational Model for Database Management: Version 2 https://books.google[...] Addison-Wesley Longman Publishing Co., Inc.
[8] 뉴스 Is Your DBMS Really Relational? ComputerWorld 1985-10-14
[9] 뉴스 Does Your DBMS Run By the Rules? ComputerWorld 1985-10-21



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com