관계 논리
관계 논리(relational calculus)은 관계형 데이터베이스의 관계 모델(관계형 모델)에서 선언적인 방법으로 관계(관계, 테이블, 테이블)로 표현된 데이터 처리, 컴퓨터 과학의 연산 체계이다. 관계 논리에는 쌍 관계 논리(튜플 관계 논리)과 정의역 관계 논리가 있다. 관계로 표현된 데이터에 사용하는 연산 체계로는 관계 대수와 이 항목에서 설명하는 관계 논리(관계 계산)의 두 종류가 알려져 있다. 관계 논리는 선언적으로 데이터를 처리하는 연산 체계이고 관계 대수가 절차적으로 데이터를 취급하는 것과는 대조적이다. 열(row) 관계 논리와 정의 영역 관계 논리 표현 능력은 동등하다.
관계 논리를 구현한 데이터베이스 언어(질의어)로, QUEL 및 SQL, Tutorial D 등이 있다. 그러나 SQL은 관계 논리를 완전한 형태로 구현하지 않는다고 비판하는 의견도 있다.
관계 모델
[편집]관계 논리는 관계 모델을 기반으로 한 관계 데이터베이스의 데이터베이스 언어(질의어)이므로 먼저 관계 모델을 쉽게 정의한다. 관계란 하나의 제목과 0 이상의 동일한 유형의 쌍을 정렬되지 않은 집합으로 구성한 데이터 구조이다. 값으로 관계를 ‘관계값’이라고 한다. 관계값을 값으로 가지는 변수를 ‘관계 변수’(relvar)라고 한다. 관계 변수를 값으로 갖는 관계값은 시간에 따라 변화한다. 관계 변수는 데이터 정의 언어(DDL)를 사용하여 정의할 수 있다. 표제는 특정 속성의 정렬되지 않은 집합이다. 관계 값을 구성하는 열의 집합을 ‘본체’(body)라고 한다. 즉 관계 값은 제목과 본체(body)로 구성되어 있다. 로우(row or tuple)는 0 이상의 속성의 집합으로 구성된 데이터 구조이다. 속성(attribute)이란 속성명과 정의영역 이름 쌍이다. 정의 영역은 데이터 형식과 같은 의미로 생각해도 좋다. 속성은 그 정의 영역에 적용되는 하위의 속성 값을 가진다. 속성 값은 스칼라 값이나 더 복잡한 구조를 가지는 값이다. 관계 값을 구성하는 각각의 쌍은 특정한 하나 이상의 속성 집합으로 식별된다. 이 속성 집합을 후보 키라고 한다. 이러한 관계 모델의 개념은 수학적으로 정의되지만, 기존 데이터베이스의 구현은 이러한 정의를 엄격하게 준수하는 것은 아니다. 테이블은 관계를 시각적으로 표현하고 있다. 쌍은 행의 개념과 유사하다.