*은 개인적으로 외우는 방식으로 개인적 의견입니다.
정리 혹은 급한 경우에 참고하세요.
제목에 ⭐이 있으면 해당 내용 꼭 외우세요 시험에 잘나옵니다.
1. 릴레이션 구조 (Relation)
개념
- 릴레이션은 데이터를 원자값으로 갖는 2차원의 표(테이블)이며, 릴레이션 스키마(구조)와 릴레이션 인스턴스(실제 값)로 구성된다.
<학생>
| 학번 | 주민번호 | 이름 | 학년 | 학과 |
| 400 | 030315-3****** | 이순신 | 4 | 컴퓨터공학과 |
| 422 | 030721-4****** | 유관순 | 4 | 물리학과 |
| 301 | 041102-3****** | 강감찬 | 3 | 수학과 |
| 320 | 050505-3****** | 홍길동 | 3 | 체육과 |
| 용어 | 개념 |
| 튜플 (Tuple) | 릴레이션을 구성하는 각각의 행. 튜플의 수를 카디널리티(Cardinality) 또는 기수, 대응수라고 한다. |
| 속성 (Attribute) | 데이터베이스를 구성하는 가장 작은 논리적 단위로 릴레이션의 열. 속성의 수를 차수(Degree)라고 한다. |
| 도메인 (Domain) | 하나의 속성이 취할 수 있는 같은 타입의 원자값들의 집합. 예) 학년 속성의 도메인은 {1, 2, 3, 4} |
| 릴레이션 스키마 | 릴레이션의 구조. 릴레이션 이름과 속성 이름으로 정의한다. 예) 학생(학번, 주민번호, 이름, 학년, 학과) |
| 릴레이션 인스턴스 | 어느 한 시점에 릴레이션에 실제로 들어 있는 튜플들의 집합 |
예시) <학생> 릴레이션의 차수와 카디널리티
→ 속성이 학번, 주민번호, 이름, 학년, 학과로 5개이므로 차수 = 5
→ 튜플(행)이 4개이므로 카디널리티 = 4
* 카디널리티는 "카운트(행 개수 세기)"로 외우면 차수랑 안 헷갈립니다. 차수는 열, 카디널리티는 행.
릴레이션의 특징
- 한 릴레이션에 똑같은 튜플이 포함될 수 없다. (튜플은 모두 다름)
- 튜플 사이에는 순서가 없다.
- 속성 사이에도 순서가 없다.
- 속성 값은 더 이상 쪼갤 수 없는 원자값만 저장한다.
- 속성 이름은 유일해야 하지만, 속성 값은 같은 값이 여러 번 나올 수 있다.
2. 키 (Key) ⭐
개념
- 키는 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때, 튜플들을 서로 구분할 수 있는 기준이 되는 속성이다.
키의 조건
- 유일성 (Uniqueness) : 키 값 하나로 튜플 하나만 유일하게 식별할 수 있어야 한다.
- 최소성 (Minimality) : 키를 구성하는 속성 중 하나라도 빼면 유일하게 식별할 수 없도록, 꼭 필요한 최소한의 속성으로만 구성되어야 한다.
<수강>
| 학번 | 과목번호 | 성적 |
| 400 | C123 | A |
| 400 | C312 | B |
| 422 | C123 | A |
| 301 | E412 | C |
키의 종류
| 종류 | 개념 | 예시 |
| 후보키 (Candidate Key) |
튜플을 유일하게 식별할 수 있는 속성들의 부분집합. 유일성과 최소성을 모두 만족한다. | 학번, 주민번호 |
| 기본키 (Primary Key) |
후보키 중에서 특별히 선정된 주키(Main Key). 중복 값과 NULL 값을 가질 수 없다. | 학번 |
| 대체키 (Alternate Key) |
후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키. 보조키라고도 한다. | 주민번호 |
| 슈퍼키 (Super Key) |
속성들의 집합으로 구성된 키. 모든 튜플을 유일하게 식별할 수 있지만(유일성 O) 최소성은 만족하지 못한다. | (학번, 이름) (주민번호, 학과) |
| 외래키 (Foreign Key) |
다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합. 참조하는 기본키에 없는 값은 넣을 수 없다. (NULL은 가능) | <수강>의 학번 → <학생>의 학번 참조 |
- 이름은 동명이인이 생길 수 있어서 후보키가 될 수 없다.
- 외래키는 원래 NULL이 가능하지만, <수강>의 학번처럼 기본키의 일부이기도 하면 개체 무결성 때문에 NULL이 될 수 없다.
- <수강>은 학번만으로는 400이 두 번 나와서 구분이 안 된다. (학번, 과목번호)를 합쳐야 유일하므로 기본키는 (학번, 과목번호)이다.
유일성 / 최소성 정리
| 구분 | 유일성 | 최소성 |
| 후보키 | O | O |
| 기본키 | O | O |
| 대체키 | O | O |
| 슈퍼키 | O | X |
※ 엄밀히 말하면 후보키도 슈퍼키에 포함되지만(최소성까지 갖춘 슈퍼키 = 후보키), 시험에서는 "유일성은 만족, 최소성은 불만족"으로 구분해서 물어봅니다.
* 키는 반장 선거로 외웁니다.
반장 선거에 나온 후보들이 후보키, 그중 뽑힌 반장이 기본키, 떨어진 후보는 대체키.
후보 한 명이 친구들을 우르르 데리고 다니면 그 무리가 슈퍼키. 무리 안에 후보가 있으니 누군지는 알아볼 수 있지만(유일성 O), 쓸데없이 많다(최소성 X).
다른 반 반장 명찰을 빌려 단 학생이 외래키. (다른 릴레이션의 기본키를 참조)
문제) 다음 설명에 해당하는 키를 쓰시오.
"릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만, 최소성은 만족하지 못하는 키"
→ 정답 : 슈퍼키 (Super Key)
문제) <학생> 릴레이션에서 학번을 기본키로 정했을 때, 주민번호는 어떤 키인지 쓰시오.
→ 정답 : 대체키 (Alternate Key) - 후보키 중 기본키로 뽑히지 않은 나머지
3. 무결성 (Integrity) ⭐
개념
- 무결성은 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제 값이 일치하는 정확성을 의미한다.
- 무결성 제약 조건은 부정확한 자료가 저장되는 것을 막아 데이터의 정확성을 보장하기 위한 규칙이다.
무결성의 종류
| 종류 | 개념 |
| 개체 무결성 ⭐ (Entity Integrity) |
기본 테이블의 기본키를 구성하는 어떤 속성도 NULL 값이나 중복 값을 가질 수 없다. |
| 참조 무결성 ⭐ (Referential Integrity) |
외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 같아야 한다. 즉, 릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다. |
| 도메인 무결성 ⭐ (Domain Integrity) |
주어진 속성 값은 정의된 도메인에 속한 값이어야 한다. |
| 사용자 정의 무결성 | 속성 값들이 사용자가 정의한 제약 조건을 만족해야 한다. |
| NULL 무결성 | 릴레이션의 특정 속성 값은 NULL이 될 수 없도록 하는 규정 |
| 고유 무결성 | 특정 속성에 대해 각 튜플이 갖는 속성 값들이 서로 달라야 한다는 규정 |
| 키 무결성 | 하나의 릴레이션에는 적어도 하나의 키가 존재해야 한다는 규정 |
| 관계 무결성 | 튜플의 삽입 가능 여부, 또는 한 릴레이션과 다른 릴레이션의 튜플들 사이의 관계가 적절한지를 지정한 규정 |
예시 - 위반되는 경우
| 예시 | 설명 |
| <학생>에 학번이 NULL인 튜플 삽입 | 기본키는 NULL일 수 없다 → 개체 무결성 위반 |
| <학생>에 학번 400인 튜플을 하나 더 삽입 | 기본키 값이 중복된다 → 개체 무결성 위반 |
| <수강>에 학번 999인 튜플 삽입 | <학생>에 999번 학생이 없다 → 참조 무결성 위반 |
| <학생>에서 학번 400 삭제 | <수강>에 400을 참조하는 튜플이 남는다 → 참조 무결성 위반 (아래 옵션에 따라 거부되거나 같이 삭제) |
| <수강>의 성적에 Z 입력 | 성적 도메인이 {A, B, C, D, F}라면 → 도메인 무결성 위반 |
참조 무결성 옵션 (SQL의 ON DELETE / ON UPDATE와 같이 나옴)
| 옵션 | 개념 |
| 제한 (RESTRICT / NO ACTION) | 참조하는 튜플이 있으면 삭제·변경을 거부 |
| 연쇄 (CASCADE) | 참조되는 튜플을 삭제·변경하면 참조하는 튜플도 함께 삭제·변경 |
| 널 값 (SET NULL) | 참조되는 튜플이 삭제·변경되면 참조하는 튜플의 외래키 값을 NULL로 변경 |
| 기본값 (SET DEFAULT) | 참조되는 튜플이 삭제·변경되면 참조하는 튜플의 외래키 값을 기본값으로 변경 |
* 개기참외 → 개체 무결성은 기본키, 참조 무결성은 외래키. "개기는 참외"로 외우면 안 섞여요.
문제) 다음 설명에 해당하는 무결성 제약 조건을 쓰시오.
"릴레이션은 참조할 수 없는 외래키 값을 가질 수 없다."
→ 정답 : 참조 무결성
4. 관계대수 (Relational Algebra) ⭐
개념
- 관계대수는 관계형 데이터베이스에서 원하는 정보와 그 정보를 어떻게 유도하는지를 기술하는 절차적인 언어이다.
- 피연산자도 릴레이션이고, 연산 결과도 릴레이션이다.
- 순수 관계 연산자와 일반 집합 연산자로 나뉜다.
순수 관계 연산자
| 연산자 | 기호 | 개념 |
| Select | σ (시그마) |
릴레이션에서 조건을 만족하는 튜플(행)들의 부분집합을 구한다. 행을 고르므로 수평 연산이라고도 한다. 표기 : σ조건(R) |
| Project | π (파이) |
릴레이션에서 주어진 속성(열)만 추출한다. 열을 고르므로 수직 연산이라고도 하며, 결과에 중복이 생기면 제거한다. 표기 : π속성리스트(R) |
| Join | ⋈ | 공통 속성을 기준으로 두 릴레이션을 합쳐 새로운 릴레이션을 만든다. Join 결과는 교차곱(×)을 한 뒤 Select를 한 것과 같다. 표기 : R ⋈키 S |
| Division | ÷ | R(X)와 S(Y)에서 X ⊃ Y일 때, R의 튜플 중 S의 속성값을 모두 가진 튜플에서 S의 속성을 제외한 속성만 구한다. 표기 : R ÷ S |
- Join 종류 : 세타 조인(=, ≠, <, ≤, >, ≥ 조건으로 조인), 동일 조인(= 조건, 공통 속성이 중복으로 남음), 자연 조인(동일 조인에서 중복 속성을 제거, ⋈N)
예시) 위의 <학생>, <수강> 릴레이션으로 연산하기
① σ학년=4(학생) : 학년이 4인 튜플(행)만 고른다.
| 학번 | 주민번호 | 이름 | 학년 | 학과 |
| 400 | 030315-3****** | 이순신 | 4 | 컴퓨터공학과 |
| 422 | 030721-4****** | 유관순 | 4 | 물리학과 |
② π이름, 학과(학생) : 이름, 학과 속성(열)만 뽑는다.
| 이름 | 학과 |
| 이순신 | 컴퓨터공학과 |
| 유관순 | 물리학과 |
| 강감찬 | 수학과 |
| 홍길동 | 체육과 |
③ π이름, 과목번호, 성적(학생 ⋈학번 수강) : 학번으로 조인한 뒤 필요한 열만 뽑는다.
| 이름 | 과목번호 | 성적 |
| 이순신 | C123 | A |
| 이순신 | C312 | B |
| 유관순 | C123 | A |
| 강감찬 | E412 | C |
→ 홍길동(320)은 <수강>에 튜플이 없어서 결과에 나오지 않는다.
④ R ÷ S : 필수과목을 모두 들은 학생 찾기
<수강과목 (R)>
| 학번 | 과목번호 |
| 400 | C123 |
| 400 | C312 |
| 400 | E412 |
| 422 | C123 |
| 301 | C312 |
<필수과목 (S)>
| 과목번호 |
| C123 |
| C312 |
<R ÷ S>
| 학번 |
| 400 |
→ C123과 C312를 둘 다 들은 학생은 400뿐이다. 422는 C123만, 301은 C312만 들었다.
일반 집합 연산자
| 연산자 | 기호 | 개념 | 카디널리티 |
| 합집합 (Union) |
∪ | 두 릴레이션의 튜플을 합친다. 중복 튜플은 제거 | |R ∪ S| ≤ |R| + |S| |
| 교집합 (Intersection) |
∩ | 두 릴레이션에 공통으로 있는 튜플 | |R ∩ S| ≤ MIN(|R|, |S|) |
| 차집합 (Difference) |
− | R에는 있지만 S에는 없는 튜플 | |R − S| ≤ |R| |
| 교차곱 (Cartesian Product) |
× | 두 릴레이션의 튜플들을 모두 짝지어 연결 | |R × S| = |R| × |S| 차수 = R 차수 + S 차수 |
- 합집합·교집합·차집합은 두 릴레이션이 합병 가능(Union-compatible)해야 한다. 즉 차수가 같고, 대응하는 속성의 도메인이 같아야 한다.
* 시그마는 셀렉트(ㅅ↔ㅅ), 파이는 프로젝트(ㅍ↔ㅍ). 초성이 같아요.
* σ는 가로(행)로 자르고 π는 세로(열)로 자른다 → Select는 수평, Project는 수직. ⋈는 나비넥타이처럼 두 테이블을 묶는 Join.
문제) 차수가 3, 카디널리티가 4인 릴레이션 R과 차수가 2, 카디널리티가 5인 릴레이션 S가 있다. R × S의 차수와 카디널리티를 쓰시오.
→ 정답 : 차수 5 (3 + 2), 카디널리티 20 (4 × 5)
문제) 다음 SQL문과 같은 결과를 내는 관계대수식을 쓰시오.
SELECT 이름 FROM 학생 WHERE 학년 = 3;
→ 정답 : π이름(σ학년=3(학생)) (결과 : 강감찬, 홍길동)
5. 관계해석 (Relational Calculus)
개념
- 관계해석은 원하는 정보가 무엇인지만 정의하는 비절차적 특성을 가진 언어이다.
- 코드(E. F. Codd)가 수학의 술어 해석(Predicate Calculus)을 바탕으로 관계 데이터베이스를 위해 제안했다.
- 튜플 관계해석과 도메인 관계해석이 있으며, 관계대수와 관계해석은 표현할 수 있는 능력 면에서 동등하다.
| 구분 | 관계대수 | 관계해석 |
| 특징 | 절차적 언어 (어떻게 구할지 순서를 기술) | 비절차적 언어 (무엇을 원하는지만 기술) |
| 기반 | 집합 연산 | 술어 해석 (Predicate Calculus) |
관계해석 기호
| 구분 | 기호 | 의미 |
| 연산자 | ∨ | OR |
| 연산자 | ∧ | AND |
| 연산자 | ¬ | NOT |
| 정량자 | ∀ | 전칭 정량자 : 모든 것에 대하여 (for all) |
| 정량자 | ∃ | 존재 정량자 : 어느 것 하나라도 존재한다 (there exists) |
* 대수는 "어떻게(절차)", 해석은 "무엇을(비절차)". ∀는 All의 A를 뒤집은 모양, ∃는 Exist의 E를 뒤집은 모양.
- 정리 -
| 개념 | 핵심 |
| 릴레이션 | 튜플 = 행 (카디널리티) / 속성 = 열 (차수) / 도메인 = 속성이 가질 수 있는 원자값 집합 |
| 키 | 후보키(유일성 O, 최소성 O) / 기본키(NULL·중복 X) / 대체키 / 슈퍼키(유일성 O, 최소성 X) / 외래키(참조) |
| 무결성 | 개체(기본키 NULL·중복 X) / 참조(외래키는 NULL 또는 참조 기본키 값) / 도메인(허용된 값만) |
| 관계대수 | σ Select(행) / π Project(열) / ⋈ Join / ÷ Division / ∪ ∩ − × |
| 관계해석 | 비절차적 / ∀ 전칭 정량자 / ∃ 존재 정량자 |
같이 보면 좋은 글
'자격증' 카테고리의 다른 글
| 정보처리기사 5과목 정보시스템 구축 관리 암기 총정리 | 두문자·용어 설명·그림으로 한 번에 (0) | 2026.09.29 |
|---|---|
| 정보처리기사 4과목 프로그래밍 언어 활용 암기 총정리 | 두문자·용어 설명·그림으로 한 번에 (0) | 2026.09.29 |
| 정보처리기사 3과목 데이터베이스 구축 암기 총정리 | 두문자·용어 설명·그림으로 한 번에 (0) | 2026.09.29 |
| 정보처리기사 2과목 소프트웨어 개발 암기 총정리 | 두문자·용어 설명·그림으로 한 번에 (0) | 2026.09.29 |
| 정보처리기사 1과목 소프트웨어 설계 암기 총정리 | 두문자·용어 설명·그림으로 한 번에 (0) | 2026.09.29 |
댓글