Ch.9 데이터베이스 (필기 3과목)
데이터베이스 설계 & ER 모델
설계 없이 테이블을 만들면 어떤 문제가 생길까?
학생-수강-교수 관계를 테이블로 만들어야 하는 상황
관계의 종류에 따라 테이블 변환 방법이 달라집니다
ER 모델은 현실 세계를 DB 구조로 옮기는 첫 단계이며, ER 기호 해석과 스키마 변환은 필기 단골 유형입니다
핵심 내용
데이터베이스 설계 단계: ① 요구 조건 분석 → 사용자 요구사항 파악 ② 개념적 설계 → ER 다이어그램 작성 (DBMS 독립적) ③ 논리적 설계 → 관계 스키마로 변환 (DBMS 종류 고려) ④ 물리적 설계 → 저장 구조·인덱스 설계 (성능 고려)
개념적 설계 = ER 다이어그램 (추상적, DBMS 무관) 논리적 설계 = 릴레이션 스키마 변환 (DBMS 종류에 따라) 물리적 설계 = 인덱스·파일 조직 (성능 최적화) → 시험에서 '개념적 설계의 결과물은?' → ER 다이어그램!
약한 개체(Weak Entity): • 자체적으로 유일하게 식별할 수 없는 개체 (이중 사각형) • 소유 개체(Owner Entity)에 의존하여 존재 • 부분키(Partial Key): 소유 개체 키와 결합해야 유일 식별 • 예: '부양가족' 개체 — '사원' 없이는 존재 불가
참여 제약(Participation Constraint): • 전체 참여(Total): 모든 개체가 반드시 관계에 참여 → 이중 선 예: 모든 학생은 반드시 학과에 소속 • 부분 참여(Partial): 일부 개체만 관계에 참여 → 단일 선 예: 일부 교수만 보직 담당
ER → 관계 스키마 변환 핵심 규칙: • 1:1 관계 → 어느 한쪽에 외래키 추가 (전체 참여 쪽 우선) • 1:N 관계 → N쪽 테이블에 외래키 추가 (최빈출!) • N:M 관계 → 별도의 관계 테이블 생성 (양쪽 PK를 FK로) • 다중값 속성 → 별도 테이블 분리
-- 1:N 관계 변환 예시: 학과(1) — 학생(N)
-- → N쪽(학생)에 외래키 추가
CREATE TABLE 학과 (
학과코드 CHAR(3) PRIMARY KEY,
학과명 VARCHAR(20)
);
CREATE TABLE 학생 (
학번 CHAR(8) PRIMARY KEY,
이름 VARCHAR(10),
학과코드 CHAR(3) REFERENCES 학과(학과코드) -- FK
);
-- N:M 관계 변환 예시: 학생(N) — 과목(M)
-- → 별도 관계 테이블 생성
CREATE TABLE 수강 (
학번 CHAR(8) REFERENCES 학생(학번),
과목코드 CHAR(4) REFERENCES 과목(과목코드),
성적 INT,
PRIMARY KEY (학번, 과목코드)
);약한 개체 → 스키마 변환: 약한 개체의 테이블 PK = 소유 개체의 PK + 부분키 예: 사원(사번) — 부양가족(이름) → 부양가족 테이블 PK = (사번, 이름)
ER 다이어그램에서 개체(Entity)를 나타내는 기호는?
1:N 관계를 관계 스키마로 변환할 때, 외래키를 추가하는 위치는?
약한 개체(Weak Entity)에 대한 설명으로 옳은 것은?
개념적 설계 단계의 결과물로 가장 적절한 것은?
N:M 관계를 관계 스키마로 변환할 때의 방법은?
비교 정리
| 항목 | 기호 | 도형 | 설명 |
|---|---|---|---|
| 개체(Entity) | 사각형 | 독립적으로 존재하는 객체 (학생, 교수) | |
| 속성(Attribute) | 타원형 | 개체의 특성 (이름, 학번) | |
| 관계(Relationship) | 마름모 | 개체 간의 연관 (수강, 지도) | |
| 키 속성 | 밑줄 타원 | 개체를 유일하게 식별 (학번) | |
| 다중값 속성 | 이중 타원 | 여러 값 가능 (취미, 전화번호) | |
| 유도 속성 | 점선 타원 | 다른 속성에서 계산 (나이 ← 생년월일) |
| 항목 | 유형 | 의미 | 예시 |
|---|---|---|---|
| 1:1 | 한 개체가 다른 개체 하나와만 관계 | 국민 — 주민번호 | |
| 1:N | 한 개체가 여러 개체와 관계 | 학과 — 학생 (한 학과에 여러 학생) | |
| N:M | 양쪽 모두 여러 개체와 관계 | 학생 — 과목 (수강 관계) |
핵심 정리
- 11:1 관계 → 전체 참여 쪽에 외래키 추가
- 21:N 관계 → N쪽 테이블에 외래키 추가 (최빈출)
- 3N:M 관계 → 별도 관계 테이블 생성 (양쪽 PK를 FK로)
- 4약한 개체 → 소유 개체 PK + 부분키 = 복합 PK
- 5다중값 속성 → 별도 테이블로 분리
퀴즈와 인터랙션으로 더 깊이 학습하세요
play_circle인터랙티브 레슨 시작