관계 (데이터베이스)
1. 개요
관계 (데이터베이스)는 여러 속성(attribute)으로 구성되며, 각 속성은 특정 도메인 값을 갖는 데이터 구조를 의미한다. 관계형 데이터베이스에서 데이터를 저장하고 조작하는 데 사용되는 기본 구성 요소인 관계 변수는 기본 관계 변수와 파생 관계 변수로 분류된다. 기본 관계 변수는 다른 관계 변수에서 파생되지 않은 독립적인 변수이며, 파생 관계 변수는 하나 이상의 관계 변수에 관계 대수 또는 관계 논리 표현식을 적용하여 생성된다. SQL에서는 CREATE TABLE 문을 사용하여 기본 관계 변수를 정의하고, CREATE VIEW 문을 사용하여 파생 관계 변수를 정의한다.
| 설명 | 데이터베이스 관계는 속성으로 인덱싱된 값의 튜플 집합이다. |
|---|---|
| 정의 | 관계는 수학적 의미로 사용된다. |
| 특징 | 튜플은 속성에 왼쪽에서 오른쪽으로 순서가 없다. |
| 컬럼 수 | 데이터베이스 관계는 50, 100, 심지어 150개의 컬럼을 가질 수 있다. |
-
관계형 모델 -
관계 논리
관계 논리는 관계 모델 기반 데이터베이스 언어로서 관계 대수와 논리적으로 동일하며, 튜플 관계 논리와 도메인 관계 논리로 나뉘어 쿼리 최적화에 사용된다. -
관계형 모델 -
관계형 데이터베이스
관계형 데이터베이스는 데이터를 테이블 형태로 구성하여 관리하며, 1970년 E.F. 코드에 의해 정의되었고, RDBMS를 통해 ACID 트랜잭션, 저장 프로시저, 정규화, 인덱스 등의 기술을 활용하여 다양한 분야에서 사용된다. -
데이터베이스 관리 시스템 -
트랜잭션 처리
트랜잭션 처리는 데이터베이스 시스템에서 데이터의 일관성과 무결성을 보장하기 위한 기술이며, ACID 속성을 통해 데이터 정확성을 유지하고 롤백, 데드락 처리 등의 기술을 활용한다. -
데이터베이스 관리 시스템 -
저장 프로시저
저장 프로시저는 데이터베이스 관리 시스템에서 SQL 문들을 미리 컴파일하여 저장하고, 모듈화, 보안성, 성능 향상, 유지보수 용이성과 같은 특징을 가지며, 데이터베이스 시스템마다 구현 방식과 지원하는 언어가 다를 수 있는 코드 묶음이다. -
데이터 모델링 -
빌딩 정보 모델링
빌딩 정보 모델링(BIM)은 건축물의 전 생애주기 동안 발생하는 정보를 디지털 모델로 통합 관리하는 프로세스이다. -
데이터 모델링 -
저장 프로시저
저장 프로시저는 데이터베이스 관리 시스템에서 SQL 문들을 미리 컴파일하여 저장하고, 모듈화, 보안성, 성능 향상, 유지보수 용이성과 같은 특징을 가지며, 데이터베이스 시스템마다 구현 방식과 지원하는 언어가 다를 수 있는 코드 묶음이다.
2. 예제
관계는 여러 개의 속성(attribute)으로 구성되며, 각 속성은 특정 도메인(domain)에서 정의된 값을 가진다. 예를 들어, 세 개의 속성으로 구성된 관계의 헤더(header)는 다음과 같이 표현할 수 있다.
| 속성명 | 도메인명 |
|---|---|
| ID | 정수 |
| 이름 | 문자열 |
| 주소 | 문자열 |
이 헤더에 따른 관계값, 즉 튜플(tuple)의 집합 예시는 다음과 같다. 이해를 돕기 위해 테이블 형태로 나타낸다.
| ID (정수) | 이름 (문자열) | 주소 (문자열) |
|---|---|---|
| 102 | 홍길동 | 전라남도, 장성군 |
| 202 | 임꺽정 | 경기도, 양주시 |
| 104 | 신사임당 | 강원특별자치도, 원주시 |
| 152 | 주논개 | 전라남도, 장수군 |
관계 이론에서 중요한 점은 헤더를 구성하는 속성들이나 관계를 구성하는 튜플들 모두 정해진 순서를 가지지 않는다는 것이다. 따라서 위 예시에서 '이름' 속성이 'ID' 속성 다음에 위치한다거나 '주소' 속성이 세 번째 속성이라고 단정할 수 없다. 마찬가지로, 특정 튜플을 지칭할 때 '임꺽정의 튜플'이 두 번째라거나 '홍길동의 튜플'이 첫 번째라고 말하는 것은 관계 모델의 정의에 맞지 않다. 이는 특정 순서를 가정하는 SQL 테이블의 행(row)이나 열(column) 개념과는 차이가 있다.
3. 관계 변수
관계 변수(relvar)는 관계형 데이터베이스에서 데이터를 저장하고 조작하는 데 사용되는 기본적인 구성 요소이다. 데이터베이스는 현실 세계의 변화를 반영하기 위해 이러한 명명된 관계 변수들로 구성된다. 관계 변수는 크게 기본 관계 변수(base relation variable)와 파생 관계 변수(derived relation variable)의 두 가지 종류로 나뉜다.
기본 관계 변수는 다른 관계 변수로부터 파생되지 않은 원래의 데이터를 나타내는 변수이다. 반면, 파생 관계 변수는 하나 또는 여러 개의 기존 관계 변수에 관계대수나 관계논리 표현식을 적용하여 유도된 변수이다. 각 관계 변수의 구체적인 정의와 SQL에서의 사용 예시는 하위 섹션에서 자세히 설명한다.
3.1. 기본 관계 변수
관계 변수에는 기본 관계 변수(base relation variable)와 파생 관계 변수(derived relation variable)의 두 가지 종류가 있다.
기본 관계 변수는 다른 관계 변수로부터 파생되지 않은, 원래가 되는 관계 변수를 의미한다. 관계 데이터베이스의 데이터베이스 언어인 SQL에서는 기본 관계 변수와 거의 같은 의미로 기본 테이블(base table)이라는 용어를 사용한다.
기본 관계 변수는 데이터 정의 언어(DDL)를 사용하여 정의할 수 있다. SQL에서는 CREATE TABLE 구문을 사용하여 기본 관계 변수(기본 테이블)를 다음과 같이 정의한다.
CREATE TABLE 인명록 (
ID INTEGER,
성명 CHAR(40),
주소 CHAR(200),
PRIMARY KEY (ID)
)
3.2. 파생 관계 변수
관계 변수는 기본 관계 변수와 파생 관계 변수 두 가지로 나눌 수 있다. 파생 관계 변수는 하나 또는 여러 개의 기존 관계 변수(relvar)에 관계대수나 관계논리 표현식을 적용하여 새로운 관계 변수 값을 파생시킨 것이다. 이는 다른 관계 변수로부터 유도된 관계 변수를 의미한다.
파생 관계 변수는 '가상 관계 변수(virtual relvar)'라고도 불리지만, SQL에서는 일반적으로 뷰(view)라는 용어로 더 잘 알려져 있다. 뷰는 관계 대수 또는 관계적 미적분 연산자를 사용한 표현식으로 정의되는데, 이 표현식은 하나 이상의 관계를 기반으로 평가될 때 새로운 관계를 생성한다.
파생 관계 변수는 데이터 정의 언어(DDL)를 사용하여 정의할 수 있다. SQL에서는 CREATE VIEW 구문을 사용하여 파생 관계 변수, 즉 뷰를 정의한다. 예를 들어, 'List_of_people'이라는 기본 테이블(기본 관계 변수)이 있을 때, 이 테이블에서 특정 조건(예: 주소가 '전라남도'로 끝나는 사람)을 만족하는 데이터만 보여주는 파생 관계 변수(뷰)를 다음과 같이 정의할 수 있다.
CREATE VIEW List_of_Jellanamdo_people AS (
SELECT ID, Name, Address
FROM List_of_people
WHERE Address LIKE '%, 전라남도'
)
이처럼 파생 관계 변수(뷰)는 기본 데이터를 직접 저장하지 않고, 정의된 표현식에 따라 기본 관계 변수로부터 데이터를 유도하여 보여주는 역할을 한다.