alt

(DB실무) Part0-Precourse-Logical Data Modeling

2026년 11월 8일 공유

관계형 데이터 모델링과 ER 모델의 변환

개요

  • 콘텐츠 유형: 강의
  • 데이터베이스 설계의 흐름은 요구사항 분석 → 개념적 모델링 → 논리적 모델링 → 물리적 모델링으로 이루어진다.
  • 강의에서는 논리적 모델링에 널리 쓰이는 관계형 모델의 기본 용어와 무결성 제약 조건을 살펴보고, ER 다이어그램을 관계형 스키마로 변환하는 방법을 설명한다.
  • 설계가 부실해 발생하는 중복과 이상 현상을 줄이기 위한 정규화와 함수적 종속성도 소개한다.

핵심 개념

  • 관계형 모델: 테이블(릴레이션)의 집합으로 데이터를 표현하는 모델이다.
  • 기본 용어: 테이블의 행은 레코드 또는 튜플, 열은 컬럼·필드 또는 속성(애트리뷰트)이라고 한다.
  • 관계형 데이터베이스의 주요 제약 조건: 도메인 제약, 키 제약, 개체 무결성 제약, 참조 무결성 제약.
  • ER 모델 변환: 엔터티와 관계의 특성에 따라 테이블을 만들고 기본 키와 외래 키를 배치한다.
  • 정규화: 중복과 삽입·갱신·삭제 이상을 줄이도록 테이블 구조를 정리하는 과정이다.

상세 노트

1. 관계형 모델과 용어

  • 일반적으로 사용하는 테이블을 이론적으로 릴레이션이라고 부른다.
  • 행은 레코드 또는 튜플, 열은 컬럼·필드 또는 **속성(애트리뷰트)**이다.
  • 데이터베이스의 테이블은 단순히 값을 표에 넣는 것만으로 충분하지 않다. 데이터의 유형과 테이블 간 관계를 지키도록 제약 조건을 설정해야 한다.

2. 관계형 데이터베이스의 네 가지 제약 조건

  1. 도메인 제약
  • 각 속성은 정해진 값의 범위와 형식에 맞는 값을 가져야 한다.
  • 예를 들어 나이 속성에는 숫자 범위에 맞는 값이 들어가야 하며, 나이에 문자열이 들어가면 위반이다.
  • NULL은 도메인 제약 위반이 아니다. 다만 값이 반드시 있어야 하는 속성에는 별도로 NOT NULL을 설정할 수 있다.
  • 속성값은 원자적이어야 한다. 하나의 속성에 여러 값을 한꺼번에 넣거나, 더 작은 의미 단위로 나눌 수 있는 복합 값을 그대로 저장하는 것은 적절하지 않다. 예를 들어 취미 목록은 별도 구조로 표현해야 한다.
  1. 키 제약
  • 릴레이션의 각 레코드를 서로 구별할 수 있어야 한다.
  • 후보 키는 레코드를 유일하게 식별하는 최소 속성 집합이다.
  • 후보 키 중 하나를 선택한 것이 **기본 키(PK)**다.
  • 유일성은 만족하지만 불필요한 속성까지 포함한 집합은 슈퍼 키가 될 수 있다. 후보 키는 슈퍼 키에서 불필요한 속성을 제거한 최소 집합이다.
  1. 개체 무결성 제약
  • 기본 키 값은 중복될 수 없고 NULL일 수 없다.
  • 즉 기본 키에는 UNIQUE와 NOT NULL 조건이 적용된다.
  1. 참조 무결성 제약
  • **외래 키(FK)**는 다른 테이블의 기본 키 또는 참조 대상 키를 가리킨다.
  • 외래 키 값은 NULL일 수 있다. NULL이 아닌 경우에는 참조 대상 테이블에 해당 값이 실제로 존재해야 한다.
  • 외래 키는 일반적으로 중복될 수 있다.
  • 외래 키를 참조하는 레코드가 남아 있는 상태에서 참조 대상 레코드를 삭제하면 무결성 문제가 발생할 수 있다.

3. ER 다이어그램을 관계형 스키마로 변환하기

강한 엔터티
  • 강한 엔터티마다 테이블을 만든다.
  • 엔터티의 속성을 테이블의 컬럼으로 옮긴다.
  • 복합 속성은 하위 구성 요소만 저장한다. 예를 들어 주소를 시·도와 상세 주소로 나눴다면, 나눈 속성만 사용하고 전체 주소 속성을 중복해 저장하지 않는다.
  • 식별자가 여러 개라면 후보 키로 볼 수 있으며, 그중 하나를 기본 키로 선택한다.
약한 엔터티
  • 약한 엔터티도 별도의 테이블로 만든다.
  • 약한 엔터티의 속성에 더해, 소유하는 강한 엔터티의 기본 키를 가져온다.
  • 일반적으로 강한 엔터티의 키와 약한 엔터티의 부분 키를 결합해 기본 키로 구성한다.
1:N 관계
  • 관계 자체의 테이블을 따로 만들지 않고, 보통 N 쪽 테이블에 1 쪽의 기본 키를 외래 키로 추가한다.
  • 관계에 속성이 있다면 그 속성도 외래 키와 함께 N 쪽 테이블로 옮긴다.
  • 자기 참조 관계도 같은 원리를 적용해 해당 테이블 안에 외래 키를 둔다.
1:1 관계
  • 한쪽 테이블의 기본 키를 다른 쪽에 외래 키로 넣는 방식으로 구현한다.
  • 어느 쪽에 외래 키를 둘지는 데이터의 의미와 선택적 참여 여부 등을 고려해 결정한다.
  • 관계에 속성이 있다면 외래 키와 함께 저장한다.
M:N 관계
  • 관계를 위한 별도의 테이블을 만든다.
  • 양쪽 엔터티의 기본 키를 가져와 외래 키로 두고, 관계 자체의 속성도 포함한다.
  • 일반적으로 두 외래 키를 결합해 복합 기본 키로 사용한다.
N항 관계
  • 세 개 이상의 엔터티가 참여하는 관계도 별도 테이블로 만든다.
  • 관계의 속성과 참여 엔터티들의 키를 포함한다.
  • 기본 키 구성은 관계의 대응 수와 제약에 따라 정한다. 모든 외래 키가 반드시 기본 키의 일부가 되는 것은 아니다.
다중값 속성
  • 여러 값을 가질 수 있는 속성은 별도 테이블로 분리한다.
  • 새 테이블에는 다중값 속성과 원래 엔터티의 기본 키를 둔다.
  • 두 값을 결합해 기본 키를 구성하면 동일 엔터티의 같은 값이 중복 저장되는 것을 방지할 수 있다.
일반화 관계
  • 상위 엔터티와 하위 엔터티를 별도 테이블로 두는 방식에서는 상위 테이블을 만들고, 하위 테이블에 상위 엔터티의 기본 키를 가져와 기본 키이자 외래 키로 사용한다.
  • 이 방식은 공통 속성을 상위 테이블에서 관리하고, 하위 유형별 속성은 각 하위 테이블에 저장한다.

4. 정규화와 함수적 종속성

  • 설계가 부실한 테이블은 같은 정보가 반복되는 중복을 만들고 다음과 같은 이상 현상을 일으킬 수 있다.
  • 갱신 이상: 같은 사실을 여러 행에서 반복 수정해야 한다.
  • 삽입 이상: 다른 정보를 함께 입력하지 않으면 필요한 정보를 저장하기 어렵다.
  • 삭제 이상: 한 행을 삭제하면서 의도하지 않은 정보까지 잃을 수 있다.
  • ER 모델을 신중하게 설계하고 정해진 변환 규칙을 따르는 것이 중요하다. 이후 테이블 구조를 검토할 때는 정규화를 활용해 누락된 설계 문제를 찾아낼 수 있다.
  • 정규화의 핵심 개념인 함수적 종속성은 한 속성의 값이 정해지면 다른 속성의 값이 하나로 결정되는 관계다.
  • 예: 학번이 정해지면 해당 학생의 이름과 성별이 결정된다.
  • 기본 키가 다른 속성을 결정하는 것은 자연스럽지만, 기본 키가 아닌 속성이 다른 속성을 결정하는 관계가 있으면 테이블 분리를 검토해야 한다.
  • 예를 들어 직원 정보와 부서 정보가 한 테이블에 반복 저장되면 부서명이나 부서장 정보의 변경을 여러 행에 반영해야 한다. 직원과 부서를 분리하고 직원 테이블에서 부서를 외래 키로 참조하면 이런 중복을 줄일 수 있다.
  • 정규형에는 제1·제2·제3 정규형 등이 있으며, 강의에서는 실무와 학계에서 널리 활용되는 제3 정규형을 주요 목표로 소개한다.
관계형 데이터베이스를 설계할 때는 테이블을 임의로 구성하기보다 ER 모델을 정확히 만들고, 변환 규칙과 무결성 제약을 적용한 뒤 정규화로 중복과 이상 현상을 점검해야 한다.
공개 노트 모두 보기