맨위로가기

제2정규형

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

제2정규형(2NF)은 관계형 데이터베이스 정규화의 한 형태로, 부분 함수 종속성을 제거하여 데이터 중복과 갱신 이상을 방지하는 것을 목표로 한다. 1971년 E.F. 코드에 의해 처음 정의되었으며, 제1정규형을 만족하는 릴레이션에서 후보 키의 일부분에만 종속되는 속성이 없어야 제2정규형을 만족한다. 예를 들어, 종업원 정보 테이블에서 '근무지'가 '종업원'에만 종속되고 '기술'에는 종속되지 않는 경우, 이 테이블은 2NF를 위반한다. 이러한 경우 테이블을 분해하여 갱신 이상을 해결할 수 있다. 그러나 2NF 테이블도 추이 종속성으로 인해 갱신 이상이 발생할 수 있으며, 이는 제3정규형에서 다룬다.

더 읽어볼만한 페이지

  • 데이터베이스 정규화 - 단일 진실 공급원
    단일 진실 공급원(SSOT)은 데이터 중복을 줄이고 일관성을 유지하여 의사 결정 및 운영 효율성을 향상시키기 위해 특정 정보에 대한 단 하나의 신뢰할 수 있는 출처를 만드는 개념이다.
  • 데이터베이스 정규화 - 제3정규형
    제3 정규형은 관계형 데이터베이스 설계 시 데이터 중복을 줄이고 무결성을 유지하기 위한 정규화 단계로, 제2 정규형을 만족하며 기본 키가 아닌 속성에 대한 전이적 종속성을 제거하는 것을 목표로 한다.
제2정규형
개요
데이터베이스 정규화 단계제2정규형
영어Second Normal Form (2NF)
설명데이터베이스 테이블 설계 시 중복을 줄이고 데이터 일관성을 확보하기 위한 정규화 과정의 한 단계이다.
제1정규형을 만족하는 테이블에 대해 완전 함수 종속성을 적용하여 달성된다.
제1정규형 조건
조건모든 속성이 원자값을 가진다. 즉, 복합 속성이나 다중값 속성이 없어야 한다.
테이블의 각 행은 고유한 기본 키(Primary Key)를 가진다.
제2정규형 조건
조건제1정규형을 만족해야 한다.
기본 키가 아닌 모든 속성은 기본 키에 완전 함수 종속적이어야 한다. 즉, 기본 키의 일부가 아닌 전체에 의존해야 한다.
완전 함수 종속
설명속성 B가 속성 A에 완전 함수 종속이라는 것은, A의 어떤 부분 집합도 B를 결정할 수 없다는 의미이다. 다시 말해, B를 결정하기 위해서는 A 전체가 필요하다.
예시
예시 테이블"주문" 테이블이 있다고 가정해보자. 이 테이블은 "주문 ID", "고객 ID", "제품 ID", "제품명", "가격" 속성을 가진다. 여기서 기본 키는 "주문 ID", "고객 ID", "제품 ID"의 조합이다.
문제점"제품명"과 "가격"은 "제품 ID"에만 의존하고, "주문 ID"나 "고객 ID"에는 의존하지 않는다. 이는 부분 함수 종속에 해당하며, 제2정규형을 위반한다.
해결 방법테이블을 두 개로 분리한다.
"주문" 테이블은 "주문 ID", "고객 ID", "제품 ID" 속성을 가지고, "제품" 테이블은 "제품 ID", "제품명", "가격" 속성을 가진다. 이렇게 하면 모든 속성이 기본 키에 완전 함수 종속적이게 된다.
필요성
필요성데이터 중복 감소
데이터 일관성 유지
데이터베이스 무결성 향상
데이터베이스 성능 향상
주의사항
주의사항제2정규형은 제3정규형, BCNF(Boyce-Codd Normal Form) 등으로 이어지는 더 높은 수준의 정규화를 위한 기본 단계이다.

2. 역사

E. F. 코드가 1971년에 제2정규형을 처음 정의했다.[1]

2. 1. E. F. 코드의 정의

E. F. 코드가 1971년에 제2정규형을 처음 정의했다.[1]

3. 제2정규형의 조건 및 판별

어떤 릴레이션(테이블)이 제2정규형을 만족하려면, 먼저 제1정규형을 만족해야 한다. 제2정규형은 후보 키가 아닌 속성값들이 모든 후보 키에 대해 완전 함수 종속을 만족해야 한다. 즉, 후보 키의 일부에만 종속되는 부분 함수 종속성이 없어야 한다. 부분 함수 종속성은 후보 키의 일부 속성만으로도 비(非) 키 속성을 결정할 수 있는 경우를 말하며, 이는 데이터 중복 및 갱신 이상의 원인이 된다.

예를 들어, 종업원들의 기술을 나타내는 다음 테이블을 보자.

종업원의 기술
종업원기술근무지
JonesTyping114 Main Street
JonesShorthand114 Main Street
JonesWhittling114 Main Street
BravoLight Cleaning73 Industrial Way
EllisAlchemy73 Industrial Way
EllisFlying73 Industrial Way
HarrisonLight Cleaning73 Industrial Way



{종업원}이나 {기술}은 각각 후보 키가 될 수 없다. {종업원}은 다수의 기술을 가질 수 있고, {기술} 또한 다수의 종업원이 보유할 수 있기 때문이다. 따라서 복합 키 {종업원, 기술}만이 후보 키가 된다.

그런데 {근무지}는 후보 키의 일부분인 {종업원}에만 종속된다. 즉, {근무지}는 {종업원, 기술} 전체에 종속되지 않고 {종업원}에만 부분적으로 종속되므로, 이 테이블은 제2정규형을 만족하지 않는다. 이로 인해 Jones의 근무지(114 Main Street)가 3번, Ellis의 근무지(73 Industrial Way)가 2번 중복되는 현상이 발생한다. 이는 갱신 이상을 야기하여, 예를 들어 Jones의 근무지를 변경할 때 일부 레코드만 수정하면 데이터 불일치가 발생할 수 있다.

이러한 디자인은 "종업원" 테이블({종업원}을 후보 키로 가짐)과 "종업원의 기술" 테이블({종업원, 기술}을 후보 키로 가짐)로 분리하여 제2정규형을 만족시킬 수 있다. 이렇게 하면 갱신 이상 문제가 해결된다.

종업원
종업원근무지
Jones114 Main Street
Bravo73 Industrial Way
Ellis73 Industrial Way
Harrison73 Industrial Way



종업원의 기술
종업원기술
JonesTyping
JonesShorthand
JonesWhittling
BravoLight Cleaning
EllisAlchemy
EllisFlying
HarrisonLight Cleaning





하지만 모든 제2정규형 테이블이 갱신 이상으로부터 자유로운 것은 아니다. 다음은 갱신 이상이 발생할 수 있는 제2정규형 테이블의 예시이다.

대회 우승자
대회연도우승자우승자 생년 월일
Des Moines Masters1998Chip Masterson14 March 1977
Indiana Invitational1998Al Fredrickson21 July 1975
Cleveland Open1999Bob Albertson28 September 1968
Des Moines Masters1999Al Fredrickson21 July 1975
Indiana Invitational1999Chip Masterson14 March 1977



위 테이블에서 우승자와 우승자 생년월일은 {대회, 연도} 키에 의해 결정되지만, 데이터 중복으로 인해 갱신 이상이 발생할 수 있다. 이는 우승자 생년월일 속성이 추이 종속성을 가지기 때문이다. 즉, 우승자 생년월일은 우승자에 의해 결정되고, 우승자는 다시 키 {대회, 연도}에 의해 결정된다. 이 문제는 제3정규형에서 다룬다.

4. 제1정규형에서 제2정규형으로의 변환 (분해)

1NF 관계를 2NF 관계로 만들기 위해서는 첫 번째 정규형 관계의 부분적 종속성에 있는 함수적 종속 속성을 제거하고, 해당 부분적 종속 속성이 종속된 결정자가 전체 후보 키가 되는 관계에 배치해야 한다.

== 예제 1: 직원 정보 ==

"종업원의 기술" 테이블은 제2정규형을 만족하지 않는다. 이 테이블의 후보 키는 {종업원, 기술}인데, {근무지}는 후보 키의 일부인 {종업원}에만 종속되기 때문이다.

종업원의 기술
종업원기술근무지
JonesTyping114 Main Street
JonesShorthand114 Main Street
JonesWhittling114 Main Street
BravoLight Cleaning73 Industrial Way
EllisAlchemy73 Industrial Way
EllisFlying73 Industrial Way
HarrisonLight Cleaning73 Industrial Way



이러한 구조는 갱신 이상을 일으킬 수 있다. 예를 들어, Jones의 근무지를 변경할 때, Jones의 모든 기술 레코드({Typing, Shorthand, Whittling})에 대해 근무지를 일일이 변경해야 한다. 만약 하나의 레코드라도 변경하지 않으면, "Jones의 근무지는 어디인가?"라는 질의에 혼동된 답을 얻게 된다.

이 테이블을 제2정규형으로 변환하려면, 데이터를 두 개의 테이블로 분해해야 한다. 하나는 {종업원}을 후보 키로 갖는 "종업원" 테이블이고, 다른 하나는 {종업원, 기술}을 후보 키로 갖는 "종업원의 기술" 테이블이다.

종업원
종업원근무지
Jones114 Main Street
Bravo73 Industrial Way
Ellis73 Industrial Way
Harrison73 Industrial Way



종업원의 기술
종업원기술
JonesTyping
JonesShorthand
JonesWhittling
BravoLight Cleaning
EllisAlchemy
EllisFlying
HarrisonLight Cleaning





분해된 테이블들은 더 이상 갱신 이상이 발생하지 않는다.

== 예제 2: 전동 칫솔 모델 ==

다음은 제2정규형을 만족하지 않는 "전동 칫솔 모델" 테이블의 예시이다.

전동 칫솔 모델
제조사모델제조사 국가
ForteX-Prime이탈리아
ForteUltraclean이탈리아
Dent-o-FreshEZbrush미국
BrushmasterSuperBrush미국
KobayashiST-60고바야시/小林일본어
HochToothmaster독일
HochX-Prime독일



{제조사, 모델}은 후보 키이지만, {제조사 국가}는 {제조사}에만 종속된다. 따라서 이 관계는 2NF를 위반한다.

다음은 분해된 테이블들이다.

전동 칫솔 모델
제조사모델
ForteX-Prime
ForteUltraclean
Dent-o-FreshEZbrush
BrushmasterSuperBrush
KobayashiST-60
HochToothmaster
HochX-Prime



전동 칫솔 제조사
제조사제조사 국가
Forte이탈리아
Dent-o-Fresh미국
Brushmaster미국
Kobayashi일본/日本일본어
Hoch독일



"전동 칫솔 모델" 테이블의 후보 키는 {제조사, 모델}이고, "전동 칫솔 제조사" 테이블의 후보 키는 {제조사}이다.

4. 1. 예제 1: 직원 정보

"종업원의 기술" 테이블은 제2정규형을 만족하지 않는다. 이 테이블의 후보 키는 {종업원, 기술}인데, {근무지}는 후보 키의 일부인 {종업원}에만 종속되기 때문이다.

종업원의 기술
종업원기술근무지
JonesTyping114 Main Street
JonesShorthand114 Main Street
JonesWhittling114 Main Street
BravoLight Cleaning73 Industrial Way
EllisAlchemy73 Industrial Way
EllisFlying73 Industrial Way
HarrisonLight Cleaning73 Industrial Way



이러한 구조는 갱신 이상을 일으킬 수 있다. 예를 들어, Jones의 근무지를 변경할 때, Jones의 모든 기술 레코드({Typing, Shorthand, Whittling})에 대해 근무지를 일일이 변경해야 한다. 만약 하나의 레코드라도 변경하지 않으면, "Jones의 근무지는 어디인가?"라는 질의에 혼동된 답을 얻게 된다.

이 테이블을 제2정규형으로 변환하려면, 데이터를 두 개의 테이블로 분해해야 한다. 하나는 {종업원}을 후보 키로 갖는 "종업원" 테이블이고, 다른 하나는 {종업원, 기술}을 후보 키로 갖는 "종업원의 기술" 테이블이다.

종업원
종업원근무지
Jones114 Main Street
Bravo73 Industrial Way
Ellis73 Industrial Way
Harrison73 Industrial Way



종업원의 기술
종업원기술
JonesTyping
JonesShorthand
JonesWhittling
BravoLight Cleaning
EllisAlchemy
EllisFlying
HarrisonLight Cleaning





분해된 테이블들은 더 이상 갱신 이상이 발생하지 않는다.

4. 2. 예제 2: 전동 칫솔 모델

다음은 제2정규형을 만족하지 않는 "전동 칫솔 모델" 테이블의 예시이다.

전동 칫솔 모델
제조사모델제조사 국가
ForteX-Prime이탈리아
ForteUltraclean이탈리아
Dent-o-FreshEZbrush미국
BrushmasterSuperBrush미국
KobayashiST-60일본
HochToothmaster독일
HochX-Prime독일



{제조사, 모델}은 후보 키이지만, {제조사 국가}는 {제조사}에만 종속된다. 따라서 이 관계는 2NF를 위반한다.

다음은 분해된 테이블들이다.

전동 칫솔 모델
제조사모델
ForteX-Prime
ForteUltraclean
Dent-o-FreshEZbrush
BrushmasterSuperBrush
KobayashiST-60
HochToothmaster
HochX-Prime



전동 칫솔 제조사
제조사제조사 국가
Forte이탈리아
Dent-o-Fresh미국
Brushmaster미국
Kobayashi일본
Hoch독일



"전동 칫솔 모델" 테이블의 후보 키는 {제조사, 모델}이고, "전동 칫솔 제조사" 테이블의 후보 키는 {제조사}이다.

5. 제2정규형과 갱신 이상

참조

[1] 논문 "Further Normalization of the Data Base Relational Model" IBM Research Report RJ909 1971-08-31
[2] 논문 "Further Normalization of the Data Base Relational Model" IBM Research Report RJ909 1971-08-31



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com