Ch.9 데이터베이스 (필기 3과목)

데이터베이스 설계 & ER 모델

ER 다이어그램의 개체·속성·관계 기호를 해석할 수 있다기수성(1:1, 1:N, N:M)과 참여 제약(전체/부분)을 구분할 수 있다ER 모델을 관계 스키마로 변환하는 규칙을 적용할 수 있다

설계 없이 테이블을 만들면 어떤 문제가 생길까?

학생-수강-교수 관계를 테이블로 만들어야 하는 상황

관계의 종류에 따라 테이블 변환 방법이 달라집니다

ER 모델은 현실 세계를 DB 구조로 옮기는 첫 단계이며, ER 기호 해석과 스키마 변환은 필기 단골 유형입니다


article

핵심 내용

데이터베이스 설계 단계: ① 요구 조건 분석 → 사용자 요구사항 파악 ② 개념적 설계 → 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 관계를 관계 스키마로 변환할 때의 방법은?

compare_arrows

비교 정리

항목기호도형설명
개체(Entity)사각형독립적으로 존재하는 객체 (학생, 교수)
속성(Attribute)타원형개체의 특성 (이름, 학번)
관계(Relationship)마름모개체 간의 연관 (수강, 지도)
키 속성밑줄 타원개체를 유일하게 식별 (학번)
다중값 속성이중 타원여러 값 가능 (취미, 전화번호)
유도 속성점선 타원다른 속성에서 계산 (나이 ← 생년월일)
항목유형의미예시
1:1한 개체가 다른 개체 하나와만 관계국민 — 주민번호
1:N한 개체가 여러 개체와 관계학과 — 학생 (한 학과에 여러 학생)
N:M양쪽 모두 여러 개체와 관계학생 — 과목 (수강 관계)
check_circle

핵심 정리

  • 11:1 관계 → 전체 참여 쪽에 외래키 추가
  • 21:N 관계 → N쪽 테이블에 외래키 추가 (최빈출)
  • 3N:M 관계 → 별도 관계 테이블 생성 (양쪽 PK를 FK로)
  • 4약한 개체 → 소유 개체 PK + 부분키 = 복합 PK
  • 5다중값 속성 → 별도 테이블로 분리

퀴즈와 인터랙션으로 더 깊이 학습하세요

play_circle인터랙티브 레슨 시작