Pv_log

2. 관계 데이터 모델 본문

Develop Study/Database (ORACLE)

2. 관계 데이터 모델

Priv 2022. 3. 26. 14:51

 


 

 

1. 릴레이션 (Relation)

릴레이션이란, 행과 열로 구성된 테이블을 말한다.

흔히 엑셀에서 볼 수 있는 표를 떠올리면 된다.

이때 릴레이션은 '관계'라고 부르지 않는다.

위의 그림 2-1에서 좌측에 있는 데이터들을 가장 쉽게 저장하는 방법은 우측의 표와 같이 테이블 형태로 구분해 저장하는 것이다.

여기서 테이블은 릴레이션의 시각적인 표현 방법이다.

그림 2-1의 도서 릴레이션은 위와 같이 총 4개의 집합으로 나눠볼 수 있다.

그림 2-1의 1번째 행, (1, 축구의 역사, 굿스포츠, 7000)은 4개의 집합에서 원소를 1개씩을 선택하여 만들어진 것으로, 이 원소들은 서로 관계(Relationship)를 맺고 있다.

즉, 도서 릴레이션은 이러한 관계 5개가 모여서 만들어진 것이라고 말할 수 있다.

 

1.1) 관계 (Relationship)

관계는 아래와 같이 릴레이션(테이블) 내의 관계릴레이션(테이블) 간의 관계로 나눠진다.

릴레이션 내에서 생성되는 관계는 릴레이션 내 데이터들의 관계를 표현한다.

릴레이션 간에 생성되는 관계는 릴레이션 간의 관계를 표현한다.

위 그림 2-2에서 도서 릴레이션, 고객 릴레이션은 주문 릴레이션과 관계를 맺고 있다고 볼 수 있다.

도서 릴레이션의 도서 번호는 주문 릴레이션의 도서 번호를, 고객 릴레이션의 고객 번호는 주문 릴레이션의 고객 번호와 관계를 맺고 있다.

이는 릴레이션 간의 관계이다.

주문 릴레이션 안에 있는 도서 번호와 고객 번호는 주문 릴레이션 안에서 서로 관계를 맺고 있다.

이는 릴레이션 내에서 생성되는 관계이다.

 

1.2) 릴레이션의 구성 요소

릴레이션은 스키마인스턴스로 이루어져 있다.

스키마는 표(테이블)의 최상단에서 각 항목들에 대한 설명을 적는 부분을 의미한다.

인스턴스는 실제로 테이블에 기입되는 각 항목들을 의미한다.

 

1.3) 스키마

관계 데이터베이스의 릴레이션이 어떻게 구성되는지, 어떤 정보를 담고 있는지에 대한 기본적인 구조를 정의한다.

테이블에서 스키마는 테이블의 헤더(Header)를 나타낸다.

각 테이블의 특징을 나타내는 속성(Attribute), 자료 타입 등의 정보를 지닌다.

스키마는 다음과 같은 요소들로 이루어져 있다.

  • 속성(Attribute): 릴레이션 스키마의 열
  • 도메인(Domain): 속성이 가질 수 있는 값의 집합
  • 차수(Degree): 속성의 개수

스키마는 다음과 같이 표현한다.

  • 릴레이션 이름(속성1: 도메인1, 속성2: 도메인2, 속성3: 도메인3 ~) 
  • Ex) 도서(도서번호, 도서이름, 출판사, 가격) 

 

1.4) 인스턴스

인스턴스는 정의된 스키마에 따라 테이블에 실제로 저장되는 데이터의 집합을 의미한다. 

위 그림 2-3의 도서 릴레이션에서 도서번호, 도서이름, 출판사, 가격은 릴레이션의 데이터 구조를 구성하는 스키마이다.

또한 그 하위에 튜플(행)로 구성되어 있는 도서 5권은 해당 릴레이션에 저장된 데이터이다.

여기서 릴레이션에 저장된 도서 5권에 대한 데이터인스턴스라고 부른다.

인스턴스의 요소는 다음과 같다.

  • 튜플(Tuple): 릴레이션의 행을 의미한다. 튜플이 가지는 속성의 개수는 릴레이션의 스키마 차수와 동일하다. 여기서 릴레이션 내의 모든 튜플은 서로 중복되지 않아야 한다.
  • 카디날리티(Cardinality): 튜플의 수를 의미한다.

 

1.5) 릴레이션의 특징

속성은 단일 값을 가진다.

  • 각 속성의 값은 도메인에 정의된 값만 가지며, 그 값은 모두 단일 값이어야 한다.

속성은 서로 다른 이름을 가진다.

  • 속성은 한 릴레이션에서 서로 다른 이름을 가져야 한다.

한 속성의 값은 모두 같은 도메인 값을 가진다.

  • 특정 속성에 속한 열은 모두 해당 속성에서 정의한 동일한 자료형을 가져야 한다.

속성과 튜플의 순서는 상관없다.

  • 속성의 순서가 달라도 릴레이션 스키마는 동일하다. (Ex. 속성 (이름, 주소) == 속성 (주소, 이름))
  • 튜플의 순서가 달라도 릴레이션은 동일하다.
  • 관계 데이터 모델의 튜플은 실제적인 값을 가지고 있으며, 이 값은 시간이 지나면서 삭제/수정/삽입 등의 작업에 따라 순서가 바뀔 수도 있다.

릴레이션 내의 튜플은 중복을 허용하지 않는다.

  • 1개의 릴레이션 인스턴스 내에는 서로 중복된 값을 가질 수 없다. (모든 튜플은 서로 값이 달라야 함)

 

1.6) 관계 데이터 모델

관계 데이터 모델을 컴퓨터 시스템에 구현하면 관계 데이터베이스 시스템이 된다.

관계 데이터베이스 시스템은 관계 데이터 모델에 기초하여 SQL로 구현된다.

관계 데이터 모델은 데이터를 2차원 테이블 형태인 릴레이션으로 표현한다.

관계 데이터 모델은 릴레이션에 대한 제약 조건(Constraints)과 관계 연산을 위한 관계 대수(Relational algebra)를 정의한다.

  • 릴레이션: 도서 정보를 담은 '도서 릴레이션', 고객 정보를 담은 '고객 릴레이션' 등
  • 제약 조건: 릴레이션에 저장된 데이터 값이 가져야 하는 제약 (나이 속성에는 음수 값을 사용할 수 없음)
  • 관계 연산: 릴레이션을 다루는 연산 규칙 (주문 릴레이션과 고객 릴레이션, 도서 릴레이션을 조작하여 특정 고객의 주문 내역을 검색)

 


 

2. 키 (Key)

관계 데이터베이스에서 키는 특정 튜플을 식별할 때 사용하는 속성이나 그 속성의 집합을 의미한다.

릴레이션은 중복된 튜플을 허가하지 않기 때문에 각각의 튜블에 포함된 속성 중 어느 하나(혹은 하나 이상)는 값이 달라야 한다.

즉, 키가 되는 속성(혹은 속성의 집합)은 반드시 값이 달라서 튜플들을 구별할 수 있어야 한다.

키는 릴레이션 간의 관계를 맺는 데도 쓰인다.

위 그림 2-2와 2-3에서 도서 릴레이션의 도서번호는 도서 릴레이션의 키이면서, 주문 릴레이션에 저장되어 어떤 도서를 주문했는지 알 수 있도록 관계를 맺어 주고 있다.

이처럼 키는 각 릴레이션의 튜플을 유일하게 식별하는 장치이며, 동시에 각 릴레이션 간의 관계를 말해주는 연결 고리이다.

 

2.1) 슈퍼 키 (Super Key)

슈퍼 키는 튜플(행)을 유일하게 식별할 수 있는 1개의 속성이나 그 속성의 집합이다.

튜플을 유일하게 식별할 수 있다면 어떤 값이든 모두 슈퍼 키가 될 수 있다.

위의 고객 릴레이션을 예로 들어 슈퍼 키가 무엇인지 찾아보자.

고객 번호 (슈퍼 키)

  • 고객 번호는 1인당 고유 번호 1개만 부여된다.
  • 즉, 고객별로 유일한 값이 부여되어 있어 튜플을 식별할 수 있다.

이름

  • 이름은 동명이인이 있을 수 있으므로, 경우에 따라 유일한 값이 아닐 수도 있다.
  • 즉, 이름은 튜플을 식별할 수 없다.

주민 번호 (슈퍼 키)

  • 주민 번호는 1인당 1개만 가지는 고유 값이다.
  • 즉, 주민 번호는 튜플을 식별할 수 있다.

주소

  • 주소는 가족 구성원일 경우, 동일한 값을 가질 수 있다.
  • 즉, 주소는 튜플을 식별할 수 없다.

핸드폰

  • 핸드폰 번호는 1인당 고유 번호를 지닌다.
  • 하지만 핸드폰을 아예 소지하지 않은 사람도 있을 수 있기 때문에 인스턴스(데이터)가 NULL일 수 있다.
  • 즉, 핸드폰은 튜플을 식별할 수 없다.

고객 번호, 주민 번호를 포함한 모든 속성의 집합 (슈퍼 키)

  • 고객 번호와 주민 번호를 포함한 다른 속성과의 조합은 모두 유일하게 식별할 수 있는 값이 된다.
  • Ex) (주민 번호), (고객 번호), (주민 번호, 이름, 주소), (고객 번호, 이름 주민 번호, 주소, 핸드폰) 등
  • 즉, 특정 주민 번호, 특정 이름, 특정 주소를 모두 가지고 있는 튜플은 1개만 존재할 수 있다는 것을 의미한다.

 

2.2) 후보 키 (Candidate Key)

튜플을 유일하게 식별할 수 있는 속성의 최소 집합 (슈퍼 키의 최소 집합)

고객번호

  • 1명의 고객이 여러 권의 도서를 구입할 수 있으므로, 후보 키가 될 수 없다.
  • 고객 번호가 1인 박지성 고객은 3번의 주문 기록이 있으므로, 튜플을 유일하게 식별할 수 없다.
  • 고객 번호 4번인 추신수 선수도 동일한 이유로 튜플을 유일하게 식별할 수 없다.

도서번호

  • 도서번호가 2인 <축구아는 여자>는 2번의 주문 기록이 있으므로, 튜플을 유일하게 식별할 수 없다.

(고객번호, 도서번호) (후보 키)

  • 고객번호와 도서번호의 쌍은 튜플을 유일하게 식별할 수 있다.
  • 위의 주문 릴레이션에서 특정 고객이 특정 도서번호를 주문한 기록(Ex. 1번 고객이 1번 도서를 주문한 기록)은 1개만 존재하기 때문이다.
  • 즉, 주문 릴레이션의 후보 키는 2개의 속성을 합한 (고객번호, 도서번호)가 된다.
  • 이처럼 2개 이상의 속성으로 이루어진 키를 복합 키(Composite Key)라고 부른다.

 

2.3) 기본 키 (Primary Key)

기본 키는 여러 후보 키 중 1개를 선정하여 대표로 삼는 키이다.

후보 키가 1개뿐이라면 그 후보 키를 기본 키로 사용하면 된다.

만약 후보 키가 여러 개라면 릴레이션 특성을 반영하여 1개를 선택하면 된다.

릴레이션 스키마를 표현할 때 기본 키는 밑줄을 그어서 표시해야 한다.

  • 릴레이션 이름(속성1, 속성2, ~)
  • Ex) 고객(고객번호, 이름, 주민번호, 주소, 핸드폰)

기본 키 선정 시 다음과 같은 사항을 고려해야 한다.

  • 릴레이션 내 튜플을 식별할 수 있는 고유 값을 가져야 한다.
  • NULL 값은 허용하지 않는다.
  • 키 값의 변동은 일어나지 않아야 한다.
  • 최대한 적은 수의 속성을 가져야 한다.
  • 향후 키를 사용하는 데 있어서 문제 발생 소지가 없어야 한다.

 

2.4) 대리 키 (Surrogate Key)

기본 키가 보안을 요하거나, 여러 개의 속성으로 구성되어 복잡하거나, 마땅한 기본 키가 없을 때 일련번호 같이 가상의 속성을 만들어서 기본 키로 삼는 경우가 있다.

대리 키는 DBMS, 관련 SW에서 임의로 생성하는 값으로 사용자가 직관적으로 그 값의 의미를 알 수 없다.

 

2.5) 대체 키 (Alternate Key)

기본 키로 선정되지 않은 후보 키를 의미한다.

위의 고객 릴레이션의 경우, 고객번호와 주민번호 중 고객번호를 기본 키로 정하면, 주민번호가 대체 키가 된다.

이때 고객번호와 주민번호 모두 슈퍼 키이다.

즉, 대체 키 또한 슈퍼 키의 조건을 만족해야 한다.

 

2.6) 외래 키 (Foreign Key)

외래 키는 다른 릴레이션의 기본 키를 참조하는 속성을 의미한다.

다른 릴레이션의 기본 키를 참조하여 관계 데이터 모델의 특징인 릴레이션 간의 관계(Relationship)를 표현한다.

지금까지 살펴본 다른 키들과는 달리, 외래 키는 단일 릴레이션이 아닌, 다른 릴레이션 사이의 관계와 연관되어 있다.

외래 키는 다음과 같은 특징을 지닌다.

  • 관계 데이터 모델의 릴레이션 간의 관계를 표현한다.
  • 다른 릴레이션의 기본 키를 참조하는 속성이다.
  • 참조하고(외래 키) 참조되는(기본 키) 양쪽 릴레이션의 도메인은 서로 같아야 한다.
  • 참조되는(기본 키) 값이 변경되면 참조하는(외래 키) 값도 변경된다.
  • NULL 값과 중복 값 등이 허용된다.
  • 자기 자신의 기본 키를 참조하는 외래 키도 존재할 수 있다.
  • 외래 키가 기본 키의 일부가 될 수도 있다.

그림 2-10의 멘토 릴레이션을 보면 김연아 선수의 멘토번호는 장미란 선수, 장미란 선수의 멘토번호는 추신수 선수를 참조한다.

즉, 위의 멘토 릴레이션은 하나의 릴레이션 내부에서 다른 튜플을 참조하는 방식의 외래 키를 가지고 있는 것이다.

 

2.7) 키의 포함 관계

기본 키와 대체 키는 모두 슈퍼 키의 조건을 기본적으로 만족해야 한다.

또한 기본 키와 대체 키는 모두 후보 키에 해당한다.

여기서 기본 키와 대체 키는 '후보키 중에서 선정되었는가'에 대한 여부로 판단된다.

 


 

3. 무결성 제약 조건

데이터 무결성(Integrity)란, 데이터베이스에 저장된 데이터의 일관성정확성을 지키는 것을 의미한다.

도메인 무결성 제약 조건

  • 도메인 제약(Domain Constraint)이라고도 부른다.
  • 릴레이션 내의 튜플들이 각 속성의 도메인에 지정된 값만 가져야 한다는 조건이다.
  • SQL 문에서 데이터 형식(type), NULL, 기본 값(default), 체크(check) 등을 사용해 지정할 수 있다.

개체 무결성 제약 조건

  • 기본 키 제약(Primary Key Constraint)이라고도 부른다.
  • 릴레이션은 기본 키를 지정하고, 그에 따른 무결성 원칙을 따른다.
  • 즉, 기본 키는 NULL이여서는 안 되며, 릴레이션 내에 오직 1개의 값만 존재해야 한다.

참조 무결성 제약 조건

  • 외래 키 제약(Foreign Key Constraint)라고도 부른다.
  • 릴레이션 간의 참조 관계를 선언하는 제약 조건이다.
  • 자식 릴레이션의 외래 키는 부모 릴레이션의 기본 키와 도메인이 동일해야 한다.
  • 자식 릴레이션의 값이 변경될 때, 부모 릴레이션의 제약을 받는다.

 

3.1) 개체 무결성 제약 조건

릴레이션 내에 동일한 인스턴스의 튜플이나 NULL 값은 새로 추가할 수 없다.

● 삽입

기본 키 값이 같으면 삽입이 금지된다.

수정

기본키 값이 같거나 NULL로 수정이 금지된다.

삭제

특별한 확인이 불필요하며, 즉시 수행된다.

 

3.2) 참조 무결성 제약 조건

존재하지 않는 릴레이션의 튜플을 참조할 수 없다.

자식 릴레이션의 변경 사항은 부모 릴레이션에게도 영향을 미친다.

부모 릴레이션의 튜플은 자식 릴레이션을 통해 항상 모두 참조를 받아야 한다.

● 삽입

학생(자식 릴레이션)에 새로운 튜플을 삽입하려는 경우, 참조받는 테이블에 외래 키 값이 없으므로 삽입이 금지된다.

단, 학과(부모 릴레이션)에 새로운 튜플을 먼저 삽입한 이후에 작업을 수행하면 정상적으로 진행된다.

● 삭제

학과(부모 릴레이션)에서는 참조하는 테이블을 같이 삭제할 수 있어서 금지 또는 다른 추가 작업이 필요하다.

학생(자식 릴레이션)은 바로 삭제할 수 있다.

부모 릴레이션을 먼저 삭제해버리면, 이를 참조하고 있는 자식 릴레이션의 참조 구조에 NULL 참조 오류가 생겨버린다.

부모 릴레이션에서 튜플 삭제를 시도할 경우, 아래의 사항을 고려해야 한다.

● 수정

삭제, 삽입 명령이 연속으로 수행된다.

부모 릴레이션의 수정이 일어나면 삭제 옵션에 따라 처리된 후, 문제가 없으면 다시 삽입 제약 조건에 따라 처리된다.

 


 

4. 관계대수와 관계해석

관계대수란, 릴레이션에서 원하는 결과를 얻기 위해 수학의 대수와 같은 연산을 이용해 질의하는 방법을 기술하는 언어를 의미한다.

어떤 데이터를 어떻게 찾는지에 대한 처리 절차를 명시하는 절차적 언어이며, DBMS 내부의 처리 언어로 사용된다.

관계해석이란, 어떤 데이터를 찾는지만 명시하는 선언적 언어로, 관계대수와 함께 관계 DBMS 표준 언어인 SQL의 이론적인 기반을 제공한다.

관계대수, 관계해석 모두 관계 데이터 모델의 중요한 언어이며, 실제 동일한 표현 능력을 가진다.

 

4.1) 릴레이션의 수학적 의미

if (A = {2, 4}, B = {1, 3, 5})

AxB = {(2,1), (2,3), (2,5), (4,1), (4,3), (4,5)}

카티전 프로덕트는 'x' 기호를 사용해 표현한다.

여기서 릴레이션 R은 아래와 같이 카티전 프로덕트의 부분 집합으로 정의한다.

R1 = {(2,1), (4,1)}, R2 = {(2, 1), (2, 3), (2, 5)}, R3 = {(2, 3), (2, 5), (4, 3), (4, 5)}

원소 개수가 n인 집합 S의 부분 집합의 개수는 2^n이므로, 카티전 프로덕트 AxB의 부분 집합(릴레이션)의 개수는 2^|A|*|B|이다.

카티전 프로덕트의 기초 집합 A, B가 각각 가질 수 있는 값의 범위를 도메인(domain)이라고 부른다.

즉, 집합 A의 도메인은 {2, 4}이다.

릴레이션 역시 집합으로 취급한다.

이는 즉, 릴레이션 역시 집합에서 사용할 수 있는 합집합, 교집합, 카티전 프로덕트 등을 적용할 수 있음을 의미한다.

R1 ∪ R2 = {(2, 1), (4, 1), (2, 3), (2, 5)}
R1 ∩ R2 = {(2, 1)}

 

4.2) 릴레이션의 현실 세계 적용

if (학번 = {2, 4}, 과목 = {데이터베이스, 자료구조, 프로그래밍})

학번×과목 = {(2, 데이터베이스), (2, 자료구조), (2, 프로그래밍), (4, 데이터베이스), (4, 자료구조), (4, 프로그래밍)}

학번x과목의 각 원소는 학생이 과목을 수강할 수 있는 모든 경우를 나열한 것이다.

수강 = {(2, 데이터베이스), (2, 자료구조), (4, 프로그래밍)}

위의 수강 항목은 카티전 프로덕트 학번x과목의 부분 집합에 해당한다.

이는 수강 항목이 1개의 릴레이션 인스턴스임을 의미한다.

수강 릴레이션의 튜플은 위에서 나열한 학번x과목의 원소 6개 중 1개로, 아래와 같이 구성된 수강 테이블을 데이터베이스에서 릴레이션이라고 부른다.

즉, 릴레이션이란, 카티전 프로덕트의 부분 집합을 테이블로 표현한 것이다.

 

4.3) 관계대수 연산자

 

4.4) 관계대수식

관계대수란, 릴레이션 간 연산을 통해 결과 릴레이션을 찾는 절차를 기술한 언어이다.

이를 수행하기 위한 식을 관계대수식(Relational Algebra Expression)이라고 부른다.

관계대수식은 대상이 되는 릴레이션연산자로 구성된다.

계산 결과는 릴레이션으로 반환되며, 반환된 릴레이션은 릴레이션의 모든 특징을 따른다.

  • 단항 연산자: 연산자 <조건> 릴레이션
  • 이항 연산자: 릴레이션1 연산자 <조건> 릴레이션2

위 그림 2-17을 기반으로 관계대수식을 사용하면 다음과 같다.

여기서 셀렉션, 프로젝션은 단항 연산자이며, 합집합, 차집합, 조인은 이항 연산자이다.

● 셀렉션 (Selection)

릴레이션의 특정 튜플을 추출하기 위한 단항 연산자이다.

1개의 릴레이션을 대상으로 하는 단항 연산자이며, 찾고자 하는 튜플의 조건(Predicate)을 명시하고 그 조건에 만족하는 튜플을 반환한다.

셀렉션 연산을 거치게 되면 애트리뷰트 == (연산 이전 애트리뷰트), 카디널리티 <= (연산 이전 카디널리티)가 된다.

여러 개의 조건 기호((and), ∨ (or), (not))를 사용해 복합 조건을 표시할 수도 있다.

예를 들어, "가격이 8000원 이하, 도서 번호가 3 이상인 책을 찾아라"는 다음과 같이 표현한다.

프로젝션 (Projection)

릴레이션의 속성을 추출하기 위한 단항 연산자이다.

프로젝션 연산을 거치게 되면 애트리뷰트 <= (연산 이전 애트리뷰트), 카디널리티 <= (연산 이전 카디널리티)가 된다.

합집합

2개의 릴레이션을 합하여 1개의 릴레이션으로 반환하는 이항 연산자이다.

2개의 릴레이션은 서로 같은 속성과 도메인을 가지고 있어야 한다.

합집합 연산 과정에서 중복되는 튜플은 1개로 표현한다.

합집합 연산을 거치게 되면 애트리뷰트 == (연산 이전 애트리뷰트), 카디널리티 > (연산 이전 카디널리티)가 된다.

교집합

합병이 가능한 2개의 릴레이션을 대상으로 하며, 2개의 릴레이션이 공통으로 가지는 튜플을 반환한다.

교집합 연산을 거치게 되면 애트리뷰트 == (연산 이전 애트리뷰트), 카디널리티 <= (연산 이전 카디널리티)가 된다.

차집합

1번째 릴레이션에는 속하지만, 2번째 릴레이션에는 속하지 않는 튜플을 반환한다.

교집합 연산을 거치게 되면 애트리뷰트 == (연산 이전 애트리뷰트), 카디널리티 <= (연산 이전 카디널리티)가 된다.

카티전 프로덕트 (Cartesian Product)

2개의 릴레이션을 1개로 연결하여 합칠 때 사용한다.

결과 릴레이션은 1번째 릴레이션의 오른쪽에 2번째 릴레이션의 모든 튜플을 순서대로 배열하여 반환한다.

결과 릴레이션의 차수는 두 릴레이션 차수의 합이다.

카디날리티는 두 릴레이션 카디날리티의 곱이다.

그림 2-23을 간단하게 표현하자면 다음과 같다.

  • 박지성 + 주문번호 1, 2, 3, 4
  • 김연아 + 주문번호 1, 2, 3, 4
  • 장미란 + 주문번호 1, 2, 3, 4

셀렉션, 프로젝션, 집합 연산 복합 사용

앞에서 살펴본 셀렉션, 프로젝션, 집합 연산들을 다양하게 섞어서 함께 사용할 수도 있다.

수식과 마찬가지로 괄호 안에 있는 연산을 먼저 수행해야 한다.

조인 (Join)

두 릴레이션이 공통 속성을 기준으로 속성 값이 같은 튜플을 수평으로 결합하는 연산이다.

조인 연산을 수행하기 위해서는 두 릴레이션의 조인에 참여하는 속성이 서로 동일한 도메인으로 구성되어야 한다.

조인 연산의 결과는 공통 속성의 속성 값이 동일한 튜플만 반환한다.

세타 조인 (Theta Join)

세타 조인이란, 조인에 참여하는 두 릴레이션의 속성 값을 비교해 조건을 만족하는 튜플만 반환하는 조인 연산이다.

세타 조인의 조건은 { =, !=, <=, >=, <, > } 중 하나가 된다.

동등 조인 (Equi Join)

동등 조인이란, 세타 조인에서 = 연산자를 사용한 조인을 의미한다.

보통 조인 연산이라고 하면 동등 조인을 지칭한다.

위의 고객.고객번호 부분에서 고객. 부분은 생략해도 된다.

자연 조인 (Natural Join)

자연 조인이란, 동등 조인에서 조인에 참여한 속성이 2번 나오지 않도록 2번째 속성을 제거한 결과를 반환한다.

2개의 릴레이션에서 나타나는 같은 이름의 속성이 조인의 조건이 된다.

외부 조인 (Outer Join)

외부 조인이란, 조인 시 조인에 실패한 튜플을 모두 보여주되, 값이 없는 대응 속성에는 NULL 값을 채워서 반환하는 조인 연산이다.

모든 속성을 보여주는 기준 릴레이션 위치에 따라 왼쪽(Left) 외부 조인, 오른쪽(Right) 외부 조인, 완전(Full) 외부 조인으로 나눠진다.

세미 조인 (Semi Join)

세미 조인이란, 조인을 한 후, 2개의 릴레이션 중 한쪽 릴레이션의 결과만 반환한다.

기호에서 닫힌 쪽 릴레이션의 튜플이 반환되는 튜플이다.

디비전 (Division)

릴레이션의 속성 값의 집합으로 연산을 수행한다.

 


 


수고하셨습니다!


0 Comments