반응형

3정규형(3NF)의 개념


1. 정의

  • 3정규형(3NF, Third Normal Form) 은 다음 두 조건을 모두 만족하는 정규형입니다:

    • 첫째, 2정규형(2NF)을 만족 해야 하며,
    • 둘째, 모든 비프라이머리(Non-primary) 속성(기본키가 아닌 속성)기본키에 대해 이행적 종속(transitive dependency)이 없어야 합니다.
  • 즉, 기본키에 직접적으로만 종속되어야 하며, 다른 속성을 거쳐 간접적으로 종속되어서는 안 됩니다.



2. 용어 설명

  • 기본키(Primary Key) : 행(row)을 고유하게 식별하는 컬럼
  • 비프라이머리 속성(Non-Prime Attribute) : 기본키(Primary Key)가 아닌 컬럼
  • 이행적 종속(Transitive Dependency) : A → B, B → C이면서, A → C 관계가 성립한다. 이때 CA이행적으로 종속됨

2.1 결정자

  • 결정자(Determinant) 는 관계형 데이터베이스에서 다른 속성의 값을 유일하게 결정짓는 속성 또는 속성들의 집합 을 의미합니다.
    • 어떤 속성 A가 속성 B를 함수적으로 결정할 때,
      • A → B 라고 표기하며,
      • 이때 A결정자(Determinant), B종속자(Dependent) 라고 합니다.
  • 즉, 같은 A 값을 가지면 항상 같은 B 값을 갖는다면 A는 B의 결정자입니다.


3. 예시 테이블 (2NF 상태)

  • 다음은 2정규형까지만 적용된 예제입니다.

  • sql

      CREATE TABLE 학생정보 (
          학번 INT PRIMARY KEY,
          이름 VARCHAR(20),
          학과코드 VARCHAR(10),
          학과이름 VARCHAR(50)
      );
    

  • 학번 이름 학과코드 학과이름
    1001 김철수 C101 컴퓨터공학과
    1002 이영희 C102 수학과

  • 학과이름학과코드에 의해 결정되므로, 학번학과코드학과이름 관계가 생깁니다.
  • 이는 이행적 종속 이며, 3NF를 위반합니다.


4. 3정규형으로 분해

  • 3NF를 만족하도록 아래와 같이 두 개의 테이블로 나눕니다.

  • sql

      -- 학생 테이블
      CREATE TABLE 학생 (
          학번 INT PRIMARY KEY,
          이름 VARCHAR(20),
          학과코드 VARCHAR(10)
      );
      
      -- 학과 테이블
      CREATE TABLE 학과 (
          학과코드 VARCHAR(10) PRIMARY KEY,
          학과이름 VARCHAR(50)
      );
    

  • 학생 테이블
    • 학번 이름 학과코드
      1001 김철수 C101
      1002 이영희 C102

  • 학과 테이블
    • 학과코드 학과이름
      C101 컴퓨터공학과
      C102 수학과

  • 이제 학과이름학과코드에만 종속되고, 학번과는 직접적인 종속 관계가 없습니다.
  • 이행적 종속이 제거되어 3NF를 만족합니다.


5. 요약

구분 설명
정규형 단계 3NF (3정규형)
조건 2NF 만족 + 비프라이머리 속성이 기본키에 이행적으로 종속되지 않아야 함
목적 이행적 종속 제거, 이상현상 방지, 데이터 중복 최소화


데이터베이스 정규화 (Database Normalization) 관련글 링크


정규화 정리

  • 정규형 해결하는 문제
    1NF 반복되는 속성 제거
    2NF 부분 함수 종속 제거
    3NF 이행적 함수 종속 제거
    BCNF 후보키가 아닌 결정자 제거
    4NF 다치 종속 제거
    5NF 조인 종속으로 인해 발생하는 중복 제거
    6NF 시간적 속성 이나 변화 이력 관리



  • 도움이 되셨으면 하단의 ❤️ 공감 버튼 부탁 드립니다. 감사합니다! 😄
  • 일부 모바일 환경에서는 ❤️ 버튼이 보이지 않습니다.

728x90
반응형

'SQL' 카테고리의 다른 글

4정규형(4NF, Fourth Normal Form)의 개념  (0) 2025.05.05
BCNF(Boyce-Codd) 정규형의 개념  (0) 2025.05.05
2정규형(2NF)의 개념  (0) 2025.05.03
1정규형(1NF)의 개념  (0) 2025.05.03
Oracle Procedure 오라클 프로시저 프로시져  (0) 2024.11.13

+ Recent posts