데이터베이스 제2정규형
From IT Wiki
Revision as of 04:46, 14 November 2024 by 핵톤 (talk | contribs) (Created page with "'''Second Normal Form, 2NF''' '''제2정규형'''은 데이터베이스 정규화의 두 번째 단계로, 제1정규형(1NF)을 만족하면서 테이블 내에서 '''부분 함수 종속성(�Partial Functional Dependency)'''을 제거하는 것을 목표로 한다. 제2정규형은 기본 키의 일부에만 종속하는 속성을 제거하여 데이터 중복을 줄이고 데이터 무결성을 향상시킨다. ==제2정규형...")
Second Normal Form, 2NF
제2정규형은 데이터베이스 정규화의 두 번째 단계로, 제1정규형(1NF)을 만족하면서 테이블 내에서 부분 함수 종속성(�Partial Functional Dependency)을 제거하는 것을 목표로 한다. 제2정규형은 기본 키의 일부에만 종속하는 속성을 제거하여 데이터 중복을 줄이고 데이터 무결성을 향상시킨다.
제2정규형의 조건[edit | edit source]
제2정규형을 만족하기 위해서는 다음 조건을 충족해야 한다.
- 테이블이 제1정규형을 만족해야 한다.
- 기본 키의 일부가 아닌 전체에 종속하는 속성만 포함해야 한다. 즉, 기본 키가 두 개 이상의 열로 구성된 경우, 기본 키의 일부가 아닌 전체 키에 종속하는 속성만이 있어야 한다.
제2정규형의 예[edit | edit source]
- 2NF에 맞지 않는 예시
학생, 과목, 담당 교사 정보를 포함한 테이블이 있다고 가정한다. 이 테이블에서 기본 키는 학생ID와 과목의 조합으로 구성된다. 하지만 담당 교사 정보는 특정 과목에만 의존하고, 학생ID와는 관련이 없다.
학생ID | 과목 | 담당 교사 |
---|---|---|
1 | 수학 | 김선생 |
1 | 영어 | 이선생 |
2 | 수학 | 김선생 |
2 | 영어 | 이선생 |
이 구조에서는 담당 교사가 과목에만 종속되어 있으며, 학생ID에는 종속되지 않으므로 부분 함수 종속성이 발생한다. 이는 제2정규형을 위반하는 상태이다.
- 2NF에 맞게 변환된 예시
부분 함수 종속성을 제거하기 위해 담당 교사 정보를 별도의 테이블로 분리한다.
- 학생-과목 테이블
학생ID | 과목 |
---|---|
1 | 수학 |
1 | 영어 |
2 | 수학 |
2 | 영어 |
- 과목-담당 교사 테이블
과목 | 담당 교사 |
---|---|
수학 | 김선생 |
영어 | 이선생 |
- 이렇게 분리함으로써 각 테이블이 제2정규형을 만족하게 되며, 부분 함수 종속성이 제거되어 데이터의 중복이 줄어든다.
제2정규형의 장점[edit | edit source]
제2정규형을 적용하면 다음과 같은 장점을 얻을 수 있다.
- 데이터 중복을 줄여 저장 공간을 절약할 수 있다.
- 데이터 수정 시 불필요한 중복 업데이트를 피할 수 있어 데이터 일관성을 높인다.
- 데이터 무결성을 강화하여 데이터베이스 구조를 더 명확하고 체계적으로 만든다.
한계와 고려 사항[edit | edit source]
제2정규형은 부분 함수 종속성을 제거하여 데이터의 중복을 줄이지만, 아직 이행적 종속성으로 인한 중복을 제거하지는 않는다. 이를 해결하기 위해 제3정규형(3NF)으로의 추가 정규화가 필요할 수 있다.