⚙️ 관계 데이터 모델
📌 관계 데이터 모델의 개념
- 릴레이션 : 행과 열로 구성된 테이블
- 관계
- 릴레이션 내 데이터들의 관계
- 릴레이션 간의 관계
- 릴레이션 스키마
- 속성(attribute) : 릴레이션 스키마의 열
- 도메인(domain) : 속성이 가질 수 있는 값의 집합
- 차수(degree) : 속성의 개수
- 스키마의 표현 : 릴레이션 이름(속성1: 도메인1, 속성2: 도메인2 ...)
- 인스턴스 요소
- 튜플(tuple) : 릴레이션의 행
- 카디널리티(cardinality) : 튜플의 수
- 릴레이션 구조와 관련된 용어
릴레이션 용어 | 같은 의미로 통용되는 용어 | 파일 시스템 용어 |
릴레이션(relation) | 테이블(table) | 파일(file) |
스키마(schema) | 내포(intension) | 헤더(header) |
인스턴스(instance) | 외연(extension) | 데이터(data) |
튜플(tuple) | 행(row) | 레코드(record) |
속성(attribute) | 열(column) | 필드(field) |
- 릴레이션의 특징
- 속성은 단일 값을 가진다
- 속성은 서로 다른 이름을 가진다
- 한 속성의 값은 모두 같은 도메인 값을 가진다
- 속성의 순서는 상관없다
- 릴레이션 내의 중복된 투플은 허용하지 않는다
- 투플의 순서는 상관없다
📌 무결성 제약조건
- 키 : 특정 튜플을 식별할 때 사용하는 속성 혹은 속성의 집합, 릴레이션 간의 관계를 맺는 데도 사용됨
- 슈퍼키 : 튜플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합
- 후보키 : 튜플을 유일하게 식별할 수 있는 속성의 최소 집합
- 기본키 : 여러 후보키 중 하나를 선정하여 대표로 삼는 키
- 대리키 : 기본키가 보안을 요하거나, 여러 개의 속성으로 구성되어 복잡하거나, 마땅한 기본키가 없을 때 일련번호 같은 가상의 속성을 만들어 기본키로 삼는 경우, 이러한 키를 대리키 혹은 인조키라고 함
- 대체키 : 기본키로 선정되지 않은 후보키
- 외래키 : 다른 릴레이션의 기본키를 참조하는 속성
- 무결성 제약조건
- 데이터 무결성 : 데이터베이스에 저장된 데이터의 일관성과 정확성을 지키는 것
- 도메인 무결성 제약조건 : 릴레이션에 내의 튜플들이 각 속성의 도메인에 지정된 지정된 값만을 가져야 한다는 조건
- 개체 무결성 제약조건 : 기본키는 NULL값을 가져서는 안 되며 릴레이션 내에 오직 하나의 값만 존재해야 한다는 조건
- 참조 무결성 제약조건 : 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 동일해야 하며, 자식 릴레이션의 값이 변경될 때 부모 릴레이션의 제약을 받는다는 것
- 참조 무결성 제약조건의 옵션
명령어 | 의미 |
RESTRICTED | 자식 릴레이션에서 참고하고 있을 경우 부모 릴레이션의 삭제 작업을 거부함 |
CASCADE | 자식 릴레이션의 관련 튜플을 같이 삭제 처리함 |
DEFAULT | 자식 릴레이션의 관련 튜플을 미리 설정해둔 값으로 변경함 |
NULL | 자식 릴레이션의 관련 튜플을 NULL 값으로 설정함(NULL 값을 허가한 경우) |
📌 관계대수
- 관계대수 : 릴레이션에서 원하는 결과를 얻기 위해 수학의 대수와 같은 연산을 이용하여 질의하는 방법을 기술하는 언어. 어떤 데이터를 어떻게 찾는지에 대한 처리 절차를 명시하는 절차적인 언어이며, DBMS 내부의 처리 언어로 사용됨
- 관계해석 : 어떤 데이터를 찾는지만 명시하는 선언적인 언어로 관계대수와 함께 관계 DBMS의 표준 언어인 SQL의 이론적인 기반을 제공함
- 관계대수 연산자
연산자 종류 |
대상 | 연산자 이름 | 기호 | 설명 | ||
기본 | 단항 | 셀렉션 | σ | 릴레이션에서 조건을 만족하는 튜플을 선택 | ||
기본 | 단항 | 프로젝션 | π | 릴레이션의 속성을 선택 | ||
추가 | 단항 | 개명 | ρ | 릴레이션이나 속성의 이름을 변경 | ||
유도 | 이항 | 디비전 | ÷ | 부모 릴레이션에 포함된 튜플의 값을 모두 갖고 있는 튜플을 분자 릴레이션에서 추출 | ||
기본 | 이항 | 합집합 | ∪ | 두 릴레이션의 합집합 | ||
기본 | 이항 | 차집합 | - | 두 릴레이션의 차집합 | ||
유도 | 이항 | 교집합 | ∩ | 두 릴레이션의 교집합 | ||
기본 | 이항 | 카티션 프로덕트 (cartesian product) |
× | 두 릴레이션에 속한 모든 튜플의 집합 | ||
유도 | 이항 | 조 인 |
세타 | ⋈θ | 두 릴레이션 간의 비교 조건에 만족하는 집합 | |
동등 | ⋈ | 두 릴레이션 간의 같은 값을 가진 집합 | ||||
자연 | ⋈N | 동등 조인에서 중복 속성을 제거 | ||||
세미 | left | ⋉ | 자연 조인 후 오른쪽 속성을 제거 | |||
right | ⋊ | 자연 조인 후 왼쪽 속성을 제거 | ||||
외부 | left | ⟕ | 자연 조인 후 각각 왼쪽(left), 오른쪽(right), 양쪽(full)의 모든 값을 결과로 추출 조인이 실패(또는 값이 없을 경우)한 쪽의 값을 NULL로 채움 |
|||
right | ⟖ | |||||
full | ⟗ |
- 조인 : 두 릴레이션의 공통 속성을 기준으로 속성 값이 같은 투플을 수평으로 결합하는 연산. 조인을 수행하기 위해서는 두 릴레이션의 조인에 참여하는 속성이 서로 동일한 도메인으로 구성되어야 함. 조인 연산의 결과는 공통 속성의 속성 값이 동일한 투플만을 반환
⚙️ ERD(Entity-Relationship Diagram)
📌 ER Diagram
- ER Diagram 예시

- ER Diagram의 구성요소



⚙️ 관계 데이터 모델
📌 관계 데이터 모델의 개념
- 릴레이션 : 행과 열로 구성된 테이블
- 관계
- 릴레이션 내 데이터들의 관계
- 릴레이션 간의 관계
- 릴레이션 스키마
- 속성(attribute) : 릴레이션 스키마의 열
- 도메인(domain) : 속성이 가질 수 있는 값의 집합
- 차수(degree) : 속성의 개수
- 스키마의 표현 : 릴레이션 이름(속성1: 도메인1, 속성2: 도메인2 ...)
- 인스턴스 요소
- 튜플(tuple) : 릴레이션의 행
- 카디널리티(cardinality) : 튜플의 수
- 릴레이션 구조와 관련된 용어
릴레이션 용어 | 같은 의미로 통용되는 용어 | 파일 시스템 용어 |
릴레이션(relation) | 테이블(table) | 파일(file) |
스키마(schema) | 내포(intension) | 헤더(header) |
인스턴스(instance) | 외연(extension) | 데이터(data) |
튜플(tuple) | 행(row) | 레코드(record) |
속성(attribute) | 열(column) | 필드(field) |
- 릴레이션의 특징
- 속성은 단일 값을 가진다
- 속성은 서로 다른 이름을 가진다
- 한 속성의 값은 모두 같은 도메인 값을 가진다
- 속성의 순서는 상관없다
- 릴레이션 내의 중복된 투플은 허용하지 않는다
- 투플의 순서는 상관없다
📌 무결성 제약조건
- 키 : 특정 튜플을 식별할 때 사용하는 속성 혹은 속성의 집합, 릴레이션 간의 관계를 맺는 데도 사용됨
- 슈퍼키 : 튜플을 유일하게 식별할 수 있는 하나의 속성 혹은 속성의 집합
- 후보키 : 튜플을 유일하게 식별할 수 있는 속성의 최소 집합
- 기본키 : 여러 후보키 중 하나를 선정하여 대표로 삼는 키
- 대리키 : 기본키가 보안을 요하거나, 여러 개의 속성으로 구성되어 복잡하거나, 마땅한 기본키가 없을 때 일련번호 같은 가상의 속성을 만들어 기본키로 삼는 경우, 이러한 키를 대리키 혹은 인조키라고 함
- 대체키 : 기본키로 선정되지 않은 후보키
- 외래키 : 다른 릴레이션의 기본키를 참조하는 속성
- 무결성 제약조건
- 데이터 무결성 : 데이터베이스에 저장된 데이터의 일관성과 정확성을 지키는 것
- 도메인 무결성 제약조건 : 릴레이션에 내의 튜플들이 각 속성의 도메인에 지정된 지정된 값만을 가져야 한다는 조건
- 개체 무결성 제약조건 : 기본키는 NULL값을 가져서는 안 되며 릴레이션 내에 오직 하나의 값만 존재해야 한다는 조건
- 참조 무결성 제약조건 : 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 동일해야 하며, 자식 릴레이션의 값이 변경될 때 부모 릴레이션의 제약을 받는다는 것
- 참조 무결성 제약조건의 옵션
명령어 | 의미 |
RESTRICTED | 자식 릴레이션에서 참고하고 있을 경우 부모 릴레이션의 삭제 작업을 거부함 |
CASCADE | 자식 릴레이션의 관련 튜플을 같이 삭제 처리함 |
DEFAULT | 자식 릴레이션의 관련 튜플을 미리 설정해둔 값으로 변경함 |
NULL | 자식 릴레이션의 관련 튜플을 NULL 값으로 설정함(NULL 값을 허가한 경우) |
📌 관계대수
- 관계대수 : 릴레이션에서 원하는 결과를 얻기 위해 수학의 대수와 같은 연산을 이용하여 질의하는 방법을 기술하는 언어. 어떤 데이터를 어떻게 찾는지에 대한 처리 절차를 명시하는 절차적인 언어이며, DBMS 내부의 처리 언어로 사용됨
- 관계해석 : 어떤 데이터를 찾는지만 명시하는 선언적인 언어로 관계대수와 함께 관계 DBMS의 표준 언어인 SQL의 이론적인 기반을 제공함
- 관계대수 연산자
연산자 종류 |
대상 | 연산자 이름 | 기호 | 설명 | ||
기본 | 단항 | 셀렉션 | σ | 릴레이션에서 조건을 만족하는 튜플을 선택 | ||
기본 | 단항 | 프로젝션 | π | 릴레이션의 속성을 선택 | ||
추가 | 단항 | 개명 | ρ | 릴레이션이나 속성의 이름을 변경 | ||
유도 | 이항 | 디비전 | ÷ | 부모 릴레이션에 포함된 튜플의 값을 모두 갖고 있는 튜플을 분자 릴레이션에서 추출 | ||
기본 | 이항 | 합집합 | ∪ | 두 릴레이션의 합집합 | ||
기본 | 이항 | 차집합 | - | 두 릴레이션의 차집합 | ||
유도 | 이항 | 교집합 | ∩ | 두 릴레이션의 교집합 | ||
기본 | 이항 | 카티션 프로덕트 (cartesian product) |
× | 두 릴레이션에 속한 모든 튜플의 집합 | ||
유도 | 이항 | 조 인 |
세타 | ⋈θ | 두 릴레이션 간의 비교 조건에 만족하는 집합 | |
동등 | ⋈ | 두 릴레이션 간의 같은 값을 가진 집합 | ||||
자연 | ⋈N | 동등 조인에서 중복 속성을 제거 | ||||
세미 | left | ⋉ | 자연 조인 후 오른쪽 속성을 제거 | |||
right | ⋊ | 자연 조인 후 왼쪽 속성을 제거 | ||||
외부 | left | ⟕ | 자연 조인 후 각각 왼쪽(left), 오른쪽(right), 양쪽(full)의 모든 값을 결과로 추출 조인이 실패(또는 값이 없을 경우)한 쪽의 값을 NULL로 채움 |
|||
right | ⟖ | |||||
full | ⟗ |
- 조인 : 두 릴레이션의 공통 속성을 기준으로 속성 값이 같은 투플을 수평으로 결합하는 연산. 조인을 수행하기 위해서는 두 릴레이션의 조인에 참여하는 속성이 서로 동일한 도메인으로 구성되어야 함. 조인 연산의 결과는 공통 속성의 속성 값이 동일한 투플만을 반환
⚙️ ERD(Entity-Relationship Diagram)
📌 ER Diagram
- ER Diagram 예시

- ER Diagram의 구성요소


