1) 관계 데이터 모델의 개념
관계(relation)
: 행과 열로 구성된 테이블 (자식 ➔ 부모)

- 구성
- 행과 열
- 속성
: 릴레이션의 열 = 애트리뷰트 (=field) - 튜플
: 릴레이션의 행 (=record)
- 속성
- 스키마와 인스턴스
- 릴레이션 스키마
: 릴레이션의 논리적 구조 - 자주 변하지 않는다.
➔ 정적
ex) 속성(열), 도메인(속성이 가질 수 있는 값의 집합), 차수(속성의 개수) - 릴레이션 인스턴스
: 스키마에 실제로 저장된 데이터 집합 - 삽입/추가/삭제/수정이 자주 발생한다.
➔ 동적
ex) 튜플(행), 카디날리티(튜플의 수)
- 릴레이션 스키마
- 행과 열
- 릴레이션 구조와 관련된 용어 (동일한 의미를 가진다.)
| 릴레이션 | 테이블 | 파일 |
| 스키마 | 내포 | 헤더 |
| 인스턴스 | 외연 | 데이터 |
| 튜플 | 행 | 레코드 |
| 속성 | 열 | 필드 |
- 특징
- 속성의 원자성
: 속성은 원자값(단일값)만 가진다. - 속성의 무순서성
: 속성 사이의 순서 무의미 - 속성의 동일성
: 속성은 정의된 도메인에 속하는 동일한 유형의 값만 가진다. - 튜플의 유일성
: 하나의 릴레이션에서 동일한 튜플 존재 X - 튜플의 무순서성
: 튜플 사이의 순서 무의미
- 속성의 원자성
관계 데이터 모델
: 데이터를 2차원 형태인 릴레이션으로 표현한 것
➔ 릴레이션, 제약조건 , 관계대수를 정의한다.
관계 데이터 시스템(RDB)
: 관계 데이터 모델을 SQL 기반으로 컴퓨터 시스템에 구현한 것
2) 무결성 제약조건
키(key)
: 릴레이션에서 특정 튜플들을 유일하게 구별하는 속성/속성들의 집합
- 특성
- 유일성: 모든 튜플 서로 다른 키 값을 가진다.
- 최소성: 최소한의 속성들로 구성한다.
- 종류(6개)
- 슈퍼키(super key)
➔ 유일성 만족, 속성/속성들의 집합 - 후보키(candidate key)
= 슈퍼키 中 불필요한 속성 제거
➔ 유일성 + 최소성 만족, 속성/속성들의 집합 - 기본키(primary key)
= 후보 키 中 기본으로 사용하기 위해 선택한 키
➔ NULL 허용 X, 밑줄을 그어 표시한다. - 대체키(alternate key)
= 기본키 선택X인 후보키(후보키 -기본키) - 대리키(surrogate key, artificial key)
= DBMS나 관련 소프트웨어가 임의로 생성한 가상 속성키
➔ 기본키 = 보안을 필요로 / 여러 개의 속성으로 구성되어 복잡, 마땅한 기본키X
➔ ex) 주민번호, 주문번호 - 외래키(foreign key = FK)
= 다른 릴레이션의 기본키 참조
➔ NULL or 중복값 가능, 같 릴레이션 O, 기본키의 일부가 될 수 O
ex) 참조하는 (외래키 가진 R) ➔ 참조되는 (기본키 가진 R)
- 슈퍼키(super key)
🎇 외래키 속성 - 참조되는 기본키 속성
이름 ➔ 달라도 된다. / 도메인 ➔ 같아야 한다!
🎇 릴레이션 참조 관계
외래키 가진 릴레이션 = 자식 릴레이션
외래키가 참조하는 대상릴레이션 = 부모 릴레이션
(같은 릴레이션 안에서도 참조 O = 같은 릴레이션의 기본키 참조 O)
➔ 참조되는(기본키) 값이 변경되면, 참조하는(외래키) 값도 변경된다.
무결성
: 데이터 결함 X인 상태
➔ 데이터가 정확+유효하게 유지된 상태 (= 일관성, 정확성)
- 데이터의 무결성(data integrity)
: 데이터의 무결성을 보장하고 일관+정확한 상태로 유지하기 위한 규칙
➔ 튜플의 삽입/삭제/수정 시 데이터의 제약조건 준수 여부를 확인해야 한다. - 무결성 제약조건
- 도메인 무결성 제약조건
: 튜플이 속성 도메인에 지정된 값만 가져야 - 개체 무결성 제약조건 - 기본키
: 기본키는 NULL값 안됨, 릴레이션 내 하나의 값만 존재 - 참조 무결성 제약조건 - 외래키
: 자식-부모 도메인 같아야, 부모에 없는 값 참조 X
- 도메인 무결성 제약조건
🎇 부모 릴레이션 튜플 삭제 시, 명령어 옵션
RESTRICTED = 자식 릴레이션에서 참조 시, 부모 삭제 거부
CASCADE = 자식 릴레이션의 관련 튜플 같이 삭제
DEFEAT = 자식 튜플값을 미리 설정해 둔 값으로 변경
NULL = 자식 릴레이션의 관련 튜플값을 NULL값으로 설정
3) 관계대수
관계대수
: 릴레이션에서 원하는 결과 얻기 위해, 릴레이션의 처리 과정을 순서대로 기술하는 절차적 언어
일반 집합 연산자
📍 조건
: 두 릴레이션이 합병 가능해야 한다.
➔ 두 릴레이션의 차수 같고, 서로 대응되는 속성의 도메인 같아야 한다.
- 합집합 - 교환, 결합o
- 차수 동일, 카디널리티 <= R+S
- 차집합 - 교환, 결합x
- 차수 동일, 카디널리티 <= R or S
- 교집합 - 교환, 결합o
- 차수 동일, 카디널리티(A-B인 경우) <= A
- 카티션 프로덕트(R ⨉ S) - 교환, 결합o
- 차수 = R+S, 카디널리티 = RxS
📍 카티션 프로덕트 ➔ 조인으로 대체해 사용하는 것을 추천한다.
순수 관계 연산자
- 셀렉션(selection) - 셀렉트( σ ): 조건 만족 튜플 반환
➔ 행 추출 (가로로 자른다)- 표현: σ조건(R) = R where 조건
- 비교연산자, 논리연산자(∨, ∧, ¬) 사용, 교환법칙o
- 프로젝션(projection) - 프로젝트( π ): 해당 속성 값으로만 구성된 튜플 반환
➔ 열 추출 (세로로 자른다)- 표현: π속성리스트(R) = R[속성리스트] ← 동일 튜플은 결과에서 1번만 반환
- 조인(join) - 조인( ⋈ ): R과 S의 튜플을 수평 결합
- 표현: R⋈S (= σ(RxS))
- 기본조인
➔ 공통조건 해당되거나(겹쳐야) 살아남는다.- 세타(⋈θ): 비교연산자로 속성값 비교(중복 있음)
- 동등(⋈R=S): 세타조인 中 = 연산자 사용한 조인(중복 있음)
- 자연(⋈N): 동등조인 中 중복값 없이 값 1개씩 반환
- 외부조인: 자연조인 연산 확장 ver.1
➔ ~쪽 기준으로 안 겹친 건 NULL값으로 처리한다.- 왼쪽(=⋈) , 오른쪽, 완전(양쪽, 왼쪽+오른쪽)
: ~쪽에 있는 릴레이션에 존재하는 모든 튜플을 결과 릴레이션에 포함시킴
➔ ~쪽 기준 관련된 정보를 싹 가져온다고 생각하기. 없으면 NULL
- 왼쪽(=⋈) , 오른쪽, 완전(양쪽, 왼쪽+오른쪽)
- 세미조인(⋉): 자연조인 연산 확장 ver.2
➔ 한쪽 테이블 행만 반환(= 다른 테이블의 속성 X)- 표현: R⋉S
➔ S 있는 R만 추출. (ex. 주문한 적 있는 고객 ➔ 주문=S, 고객=R)
- 표현: R⋉S
🥎 외부조인 예시
고객 =⋈(고객.고객번호, 주문.고객번호) 주문
➔ (고객 릴레이션의 고객번호 = 주문 릴레이션의 고객번호) 기준으로 왼쪽 외부조인
- 디비전(Division): S의 모든 튜플과 관련 있는 R의 튜플 반환, R ÷ S
➔ 다른 연산과 달리, 릴레이션 속성값의 집합으로 연산 수행한다.
➔ 특정 조건을 모두 충족하는 대상을 찾을 때 사용한다.
관련 노션 링크:
https://eastern-albatross-55e.notion.site/2-32071eb963f080d8add1cf08619acd64?source=copy_link
[목차여기]
'[CODE] > Database' 카테고리의 다른 글
| [DB] 4. SQL 고급(2) - 뷰, 인덱스 (0) | 2026.04.09 |
|---|---|
| [DB] 4. SQL 고급(1) - 내장함수, NULL, 비교문, 부속질의 (0) | 2026.04.03 |
| [DB] 3. SQL 기초(2) - 부속질의, 데이터 정의어, 데이터 조작어 (0) | 2026.03.26 |
| [DB] 3. SQL 기초(1) - SQL 개요, 데이터 조작어 (0) | 2026.03.26 |
| [DB] 1. 데이터베이스 시스템 (0) | 2026.03.25 |