🗄️ 데이터베이스 (5과목)
🏗️ 3단계 스키마와 데이터 독립성
외부 스키마 (External) — 사용자·응용 프로그램이 보는 뷰
↕ 논리적 데이터 독립성
개념 스키마 (Conceptual) — 조직 전체의 논리적 구조 (DB에 하나)
↕ 물리적 데이터 독립성
내부 스키마 (Internal) — 실제 저장 구조·인덱스
논리적 독립성 = 개념 스키마가 바뀌어도 응용 프로그램은 그대로
물리적 독립성 = 저장 구조가 바뀌어도 개념 스키마는 그대로
개념 스키마는 데이터베이스당 오직 하나라는 점이 자주 출제된다.
물리적 독립성 = 저장 구조가 바뀌어도 개념 스키마는 그대로
개념 스키마는 데이터베이스당 오직 하나라는 점이 자주 출제된다.
📊 관계형 모델 용어
| 용어 | 의미 | 일반 용어 |
|---|---|---|
| 릴레이션 | 2차원 표 | 테이블 |
| 튜플 (Tuple) | 릴레이션의 행(row) | 레코드 |
| 속성 (Attribute) | 릴레이션의 열(column) | 필드 |
| 도메인 | 속성이 가질 수 있는 값의 범위 | 자료형 |
| 차수 (Degree) | 속성(열)의 개수 | — |
| 카디널리티 (Cardinality) | 튜플(행)의 개수 | — |
⚠ 최다 함정 — 차수 = 열(속성) 수, 카디널리티 = 행(튜플) 수. 둘을 바꿔 놓은 보기가 반드시 나온다.
속성 5개·튜플 100개인 릴레이션이면 차수 5, 카디널리티 100.
🔑 키(Key)의 종류
| 키 | 정의 |
|---|---|
| 슈퍼키 | 유일성만 만족 (최소성은 없어도 됨) |
| 후보키 | 유일성 + 최소성 을 모두 만족 |
| 기본키 (PK) | 후보키 중 선택된 하나. NULL 불가, 중복 불가 |
| 대체키 | 후보키 중 기본키로 선택되지 않은 나머지 |
| 외래키 (FK) | 다른 릴레이션의 기본키를 참조하는 속성. 참조 무결성의 근거 |
| 무결성 제약 | 내용 |
|---|---|
| 개체 무결성 | 기본키는 NULL이거나 중복될 수 없다 |
| 참조 무결성 | 외래키 값은 참조 대상의 기본키에 존재하거나 NULL이어야 한다 |
| 도메인 무결성 | 속성 값은 정의된 도메인 범위 안이어야 한다 |
🧹 정규화 (Normalization)
비정규 릴레이션
↓ 도메인이 원자값만 갖도록 → 1NF
↓ 부분 함수 종속 제거 → 2NF
↓ 이행 함수 종속 제거 → 3NF
↓ 결정자이면서 후보키가 아닌 것 제거 → BCNF
↓ 다치 종속 제거 → 4NF ↓ 조인 종속 제거 → 5NF
암기 문장 — "원 부 이 결 다 조" (원자값 → 부분종속 → 이행종속 → 결정자 → 다치종속 → 조인종속).
정규화의 목적은 이상 현상(Anomaly) 제거 — 삽입 이상·삭제 이상·갱신 이상 세 가지다.
📝 SQL 분류
| 구분 | 명령어 | 용도 |
|---|---|---|
| DDL 정의어 | CREATE · ALTER · DROP · TRUNCATE | 스키마·테이블 구조 정의 |
| DML 조작어 | SELECT · INSERT · UPDATE · DELETE | 데이터 검색·조작 |
| DCL 제어어 | GRANT · REVOKE · COMMIT · ROLLBACK | 권한·트랜잭션 제어 |
⚠ 자주 틀리는 것 — DROP(구조 삭제)은 DDL, DELETE(행 삭제)는 DML이다.
GRANT/REVOKE는 DCL이며 DDL이 아니다.
🔐 트랜잭션 — ACID
| 특성 | 내용 |
|---|---|
| 원자성 Atomicity | 전부 반영되거나 전부 취소. 중간은 없다 |
| 일관성 Consistency | 실행 전후로 DB가 일관된 상태를 유지 |
| 격리성 Isolation | 수행 중인 트랜잭션에 다른 트랜잭션이 끼어들 수 없음 |
| 지속성 Durability | 성공한 결과는 영구히 반영 |
➗ 관계 대수
| 연산 | 기호 | 의미 |
|---|---|---|
| SELECT | σ (시그마) | 조건에 맞는 행(튜플) 추출 — 수평 연산 |
| PROJECT | π (파이) | 지정한 열(속성) 추출 — 수직 연산 |
| JOIN | ⋈ | 공통 속성으로 두 릴레이션 결합 |
| DIVISION | ÷ | 나누는 릴레이션의 모든 값을 갖는 튜플 추출 |
⚠ 함정 — SQL의 SELECT문과 관계대수의 SELECT는 다르다.
관계대수 SELECT(σ)는 행 선택, PROJECT(π)가 열 선택이다.
📝 시험 포인트
• 3단계 스키마 = 외부·개념·내부, 개념 스키마는 하나뿐
• 차수 = 속성(열) 수 / 카디널리티 = 튜플(행) 수
• 후보키 = 유일성 + 최소성, 기본키는 NULL 불가
• 정규화 원-부-이-결, 목적은 이상 현상 제거
• DDL(CREATE/ALTER/DROP) · DML(SELECT/INSERT/UPDATE/DELETE) · DCL(GRANT/REVOKE)
• ACID = 원자성·일관성·격리성·지속성
• 관계대수 σ = 행, π = 열
• 3단계 스키마 = 외부·개념·내부, 개념 스키마는 하나뿐
• 차수 = 속성(열) 수 / 카디널리티 = 튜플(행) 수
• 후보키 = 유일성 + 최소성, 기본키는 NULL 불가
• 정규화 원-부-이-결, 목적은 이상 현상 제거
• DDL(CREATE/ALTER/DROP) · DML(SELECT/INSERT/UPDATE/DELETE) · DCL(GRANT/REVOKE)
• ACID = 원자성·일관성·격리성·지속성
• 관계대수 σ = 행, π = 열