logo

DBMS의 정규 형식

표준화 최소화하는 과정이다 중복성 관계 또는 관계 집합에서. 관련 중복으로 인해 삽입, 삭제, 업데이트 이상 현상이 발생할 수 있습니다. 따라서 관계의 중복을 최소화하는 데 도움이 됩니다. 일반 형태 데이터베이스 테이블의 중복성을 제거하거나 줄이는 데 사용됩니다.

Ranjan Hero의 DBMS 정규화

데이터베이스 관리 시스템(DBMS)에서 정규 형식은 데이터베이스 설계가 효율적이고 체계적이며 데이터 이상이 없는지 확인하는 데 도움이 되는 일련의 지침입니다. 정규화에는 여러 수준이 있으며 각 수준에는 정규 형식이라고 하는 고유한 지침 세트가 있습니다.



DBMS의 정규형에 관한 중요 사항

  • 첫 번째 정규형(1NF): 이것이 정규화의 가장 기본적인 수준입니다. 1NF에서는 각 테이블 셀에 단일 값만 포함되어야 하며 각 열에는 고유한 이름이 있어야 합니다. 첫 번째 정규형은 중복 데이터를 제거하고 쿼리를 단순화하는 데 도움이 됩니다.
  • 두 번째 정규형(2NF): 2NF는 키가 아닌 각 속성이 기본 키에 종속되도록 요구하여 중복 데이터를 제거합니다. 이는 각 열이 다른 열이 아닌 기본 키와 직접 관련되어야 함을 의미합니다.
  • 제3정규형(3NF): 3NF는 키가 아닌 모든 속성이 서로 독립적이도록 요구하여 2NF를 기반으로 합니다. 즉, 각 열은 동일한 테이블의 다른 열이 아닌 기본 키와 직접 관련되어야 합니다.
  • 보이스-코드 정규형(BCNF): BCNF는 테이블의 각 결정자가 후보 키임을 보장하는 보다 엄격한 형태의 3NF입니다. 즉, BCNF는 키가 아닌 각 속성이 후보 키에만 종속되도록 보장합니다.
  • 네 번째 정규형(4NF): 4NF는 테이블에 다중 값 종속성이 포함되지 않도록 보장하는 BCNF를 더욱 개선한 것입니다.
  • 다섯 번째 정규형(5NF): 5NF는 최고 수준의 정규화이며 테이블을 더 작은 테이블로 분해하여 데이터 중복성을 제거하고 데이터 무결성을 향상시키는 작업을 포함합니다.

일반 형식은 데이터 중복을 줄이고 데이터 일관성을 높이며 데이터베이스 성능을 향상시키는 데 도움이 됩니다. 그러나 정규화 수준이 높을수록 데이터베이스 디자인 및 쿼리가 더 복잡해질 수 있습니다. 데이터베이스를 설계할 때 정규화와 실용성 사이의 균형을 맞추는 것이 중요합니다.

정규형의 장점

  • 데이터 중복성 감소: 정규화는 테이블에서 중복 데이터를 제거하여 필요한 저장 공간을 줄이고 데이터베이스 효율성을 향상시키는 데 도움이 됩니다.
  • 향상된 데이터 일관성: 정규화는 데이터가 일관되고 체계적인 방식으로 저장되도록 보장하여 데이터 불일치 및 오류의 위험을 줄입니다.
  • 단순화된 데이터베이스 설계: 정규화는 테이블 및 데이터 관계 구성에 대한 지침을 제공하여 데이터베이스를 보다 쉽게 ​​설계하고 유지 관리할 수 있도록 해줍니다.
  • 향상된 쿼리 성능: 정규화된 테이블은 일반적으로 데이터를 더 쉽게 검색하고 검색할 수 있으므로 쿼리 성능이 더 빨라집니다.
  • 더 쉬워진 데이터베이스 유지 관리: 정규화는 데이터베이스를 더 작고 관리하기 쉬운 테이블로 분할하여 데이터를 더 쉽게 추가, 수정 및 삭제할 수 있도록 하여 데이터베이스의 복잡성을 줄입니다.

전반적으로 DBMS에서 정규 형식을 사용하면 데이터 품질을 향상하고 데이터베이스 효율성을 높이며 데이터베이스 설계 및 유지 관리를 단순화하는 데 도움이 됩니다.

첫 번째 정규형

관계에 복합 또는 다중 값 속성이 포함된 경우 이는 제1정규형을 위반하거나, 복합 또는 다중 값 속성이 포함되지 않은 경우 관계는 제1정규형에 속합니다. 해당 관계의 모든 속성이 다음과 같은 경우 관계는 제1정규형입니다. 단일 값 속성 .



  • 예시 1 – 테이블 1의 관계 STUDENT는 다중 값 속성 STUD_PHONE으로 인해 1NF에 속하지 않습니다. 1NF로의 분해는 표 2에 나와 있습니다.
예

피트 데이비슨은 몇 살입니까?
  • 예시 2 –
ID Name Courses ------------------ 1 A c1, c2 2 E c3 3 M C2, c3>
  • 위 표에서 Course는 다중 값 속성이므로 1NF가 아닙니다. 아래 테이블은 다중 값 속성이 없으므로 1NF입니다.
ID Name Course ------------------ 1 A c1 1 A c2 2 E c3 3 M c2 3 M c3>

두 번째 정규형

두 번째 정규 형식이 되려면 관계가 첫 번째 정규 형식이어야 하며 관계에는 부분 종속성이 없어야 합니다. 관계가 2NF에 있는 경우 부분 의존성 없음, 즉. , 비프라임 속성(후보 키의 일부가 아닌 속성)은 테이블의 후보 키의 적절한 하위 집합에 종속되지 않습니다. 부분 의존성 – 후보 키의 적절한 하위 집합이 프라임이 아닌 속성을 결정하는 경우 이를 부분 종속성이라고 합니다.

  • 예시 1 – 아래 표-3을 고려해보자.
STUD_NO COURSE_NO COURSE_FEE 1 C1 1000 2 C2 1500 1 C4 2000 4 C3 1000 4 C1 1000 2 C5 2000>
  • {동일한 수강료를 갖는 강좌가 많으므로 참고하세요.} 여기서 COURSE_FEE만으로는 COURSE_NO 또는 STUD_NO의 값을 결정할 수 없습니다. COURSE_FEE는 STUD_NO와 함께 COURSE_NO의 값을 결정할 수 없습니다. COURSE_FEE는 COURSE_NO와 함께 STUD_NO의 값을 결정할 수 없습니다. 따라서 COURSE_FEE는 유일한 후보 키 {STUD_NO, COURSE_NO}에 속하지 않으므로 비프라임 속성이 됩니다. 그러나 COURSE_NO -> COURSE_FEE, 즉 COURSE_FEE는 후보키의 진부분집합인 COURSE_NO에 종속된다. 비프라임 속성 COURSE_FEE는 부분 종속성인 후보 키의 적절한 하위 집합에 종속되므로 이 관계는 2NF가 아닙니다. 위의 관계를 2NF로 변환하려면 테이블을 다음과 같은 두 개의 테이블로 분할해야 합니다. 테이블 1: STUD_NO, COURSE_NO 테이블 2: COURSE_NO, COURSE_FEE
   Table 1     Table 2  STUD_NO COURSE_NO COURSE_NO COURSE_FEE  1 C1 C1 1000 2 C2 C2 1500 1 C4 C3 1000 4 C3 C4 2000 4 C1 C5 2000>
  • 메모: 2NF는 메모리에 저장되는 중복 데이터를 줄이려고 노력합니다. 예를 들어 C1 과정을 수강하는 학생이 100명인 경우 100개 레코드 모두에 대해 수수료를 1000으로 저장할 필요가 없습니다. 대신 C1의 코스 비용이 1000이므로 두 번째 테이블에 저장할 수 있습니다.
  • 예시 2 – 관계 R(A, B, C, D)에서 다음과 같은 기능적 종속성을 고려하십시오.
AB ->C [A와 B가 함께 C를 결정] BC -> D [B와 C가 함께 D를 결정]>

위 관계에서 AB는 유일한 후보 키이며 부분 종속성이 없습니다. 즉, AB의 적절한 하위 집합은 프라임이 아닌 속성을 결정하지 않습니다.



X is a super key. Y is a prime attribute (each element of Y is part of some candidate key).>

예시 1: 표 4의 RELAY STUDENT에서 FD는 다음과 같이 설정된다: {STUD_NO -> STUD_NAME, STUD_NO -> STUD_STATE, STUD_STATE -> STUD_COUNTRY, STUD_NO -> STUD_AGE}

후보 키: {STUD_NO}

표 4의 이 관계에서는 STUD_NO -> STUD_STATE 및 STUD_STATE -> STUD_COUNTRY가 true입니다.

따라서 STUD_COUNTRY는 STUD_NO에 전이적으로 종속됩니다. 이는 세 번째 정규형을 위반합니다.

이를 세 번째 정규 형식으로 변환하기 위해 STUDENT (STUD_NO, STUD_NAME, STUD_PHONE, STUD_STATE, STUD_COUNTRY_STUD_AGE) 관계를 다음과 같이 분해합니다. STUDENT (STUD_NO, STUD_NAME, STUD_PHONE, STUD_STATE, STUD_AGE) STATE_COUNTRY (STATE, COUNTRY)

관계 R(A, B, C, D, E)를 고려하십시오. A -> BC, CD -> E, B -> D, E -> A 위 관계에서 가능한 모든 후보 키는 {A, E, CD, BC}입니다. 모든 속성은 모든 기능적 종속성의 오른쪽에 있습니다.

자바 샘플 프로그램

예 2: FD가 {BC->D, AC->BE, B->E}로 설정된 관계 R(A,B,C,D,E)의 가장 높은 정규형을 찾습니다.

1 단계: 보시다시피 (AC)+ ={A,C,B,E,D}이지만 그 하위 집합 중 어느 것도 관계의 모든 속성을 결정할 수 없으므로 AC는 후보 키가 됩니다. A 또는 C는 관계의 다른 속성에서 파생될 수 없으므로 후보 키 {AC}는 1개만 있습니다.

2 단계: 프라임 속성은 이 예에서 후보 키 {A, C}의 일부인 속성이고 다른 속성은 이 예에서 프라임이 아닌 {B, D, E}입니다.

3단계: 관계형 DBMS는 다중 값 또는 복합 속성을 허용하지 않으므로 관계 R은 첫 번째 정규 형식입니다. BC->D가 제2정규형(BC는 후보키 AC의 진부분집합이 아님)이고 AC->BE가 제2정규형(AC는 후보키)이고 B->E이기 때문에 관계는 제2정규형이다. 2차 정규형입니다(B는 후보 키 AC의 진부분집합이 아닙니다).

BC->D(BC는 슈퍼 키도 아니고 D도 프라임 속성이 아님) 및 B->E(B도 슈퍼 키도 아니고 E도 프라임 속성이 아님)에서는 관계가 3차 정규 형식이 아니지만 FD의 LHS가 슈퍼 키이거나 RHS가 주요 속성이어야 하므로 3차 법선을 충족해야 합니다. 따라서 관계의 가장 높은 정규형은 2차 정규형이 됩니다.

예를 들어 관계 R(A, B, C) A -> BC, B -> A 및 B는 모두 수퍼 키이므로 위 관계는 BCNF에 있습니다.

제3정규형

프라임이 아닌 속성에 대한 전이적 종속성이 없는 경우 관계는 제3정규형이라고 합니다. 제3정규형의 기본 조건은 관계가 제2정규형이어야 한다는 것입니다.

자바 해시셋

아래에는 중요하지 않은 기능적 종속성 X -> Y에서 유지해야 하는 기본 조건이 나와 있습니다.

  • X는 슈퍼 키입니다.
  • Y는 주요 속성입니다(이는 Y의 요소가 후보 키의 일부임을 의미합니다).

자세한 내용은 다음을 참조하세요. DBMS의 세 번째 정규형.

BCNF

BCNF(Boyce-Codd Normal Form)는 제3정규형(Third Normal Form)의 고급 버전입니다. 여기에는 제3정규형보다 몇 가지 추가 규칙이 있습니다. BCNF에 속하기 위한 모든 관계의 기본 조건은 제3정규형이어야 한다는 것입니다.

BCNF에 대한 몇 가지 기본 규칙에 중점을 두어야 합니다.

1. Table must be in Third Normal Form. 2. In relation X->Y, X는 관계의 슈퍼키여야 합니다.>

자세한 내용은 다음을 참조하세요. DBMS의 BCNF.

행과 열

네 번째 정규형

네 번째 정규형에는 후보 키를 제외하고 중요하지 않은 다중 종속성이 포함되어 있지 않습니다. 제4정규형의 기본 조건은 관계가 BCNF여야 한다는 것입니다.

기본 규칙은 아래에 언급되어 있습니다.

1. It must be in BCNF. 2. It does not have any multi-valued dependency.>

자세한 내용은 다음을 참조하세요. DBMS의 네 번째 정규형.

다섯 번째 정규형

제5정규형은 투영정규형이라고도 합니다. 제5정규형의 기본 조건은 다음과 같습니다.

파싱트 자바
Relation must be in Fourth Normal Form. The relation must not be further non loss decomposed.>

자세한 내용은 다음을 참조하세요. DBMS의 다섯 번째 정규형.

DBMS의 정규형 적용

  • 데이터 일관성: 정규 형식은 데이터의 일관성을 보장하고 중복된 정보를 포함하지 않습니다. 이는 데이터베이스의 불일치와 오류를 방지하는 데 도움이 됩니다.
  • 데이터 중복성: 일반 형식은 데이터를 고유한 데이터만 포함하는 테이블로 구성하여 데이터 중복을 최소화합니다. 이렇게 하면 데이터베이스에 필요한 저장 공간이 줄어들고 관리가 더 쉬워집니다.
  • 응답 시간: 일반 형식은 데이터를 검색하는 데 필요한 조인 수를 줄여 쿼리 성능을 향상시킬 수 있습니다. 이는 쿼리 처리 속도를 높이고 전반적인 시스템 성능을 향상시키는 데 도움이 됩니다.
  • 데이터베이스 유지 관리: 일반 형식을 사용하면 업데이트, 삭제 또는 수정해야 하는 중복 데이터의 양을 줄여 데이터베이스를 더 쉽게 유지 관리할 수 있습니다. 이는 데이터베이스 관리를 개선하고 오류나 불일치의 위험을 줄이는 데 도움이 됩니다.
  • 데이터베이스 설계: 일반 형식은 효율적이고 유연하며 확장 가능한 데이터베이스를 설계하기 위한 지침을 제공합니다. 이는 필요에 따라 데이터베이스를 쉽게 수정, 업데이트 또는 확장할 수 있도록 하는 데 도움이 됩니다.

정규형에 대한 몇 가지 중요한 사항

  • BCNF는 기능적 종속성으로 인한 중복이 없습니다.
  • 관계가 BCNF에 있으면 3NF도 충족됩니다.
  • 관계의 모든 속성이 주요 속성이면 관계는 항상 3NF입니다.
  • 관계형 데이터베이스의 관계는 항상 최소한 1NF 형식입니다.
  • 모든 이진 관계(속성이 2개만 있는 관계)는 항상 BCNF에 있습니다.
  • 관계에 단일 후보 키만 있는 경우(즉, 모든 후보 키가 1개의 속성으로만 구성됨) 관계는 항상 2NF(부분 기능 종속성이 불가능하므로)입니다.
  • 때때로 BCNF 형식을 사용하면 기능적 종속성이 유지되지 않을 수 있습니다. 이 경우 손실된 FD가 필요하지 않은 경우에만 BCNF로 이동하고, 그렇지 않으면 3NF까지만 정규화합니다.
  • 4NF 등과 같이 BCNF 이후에 더 많은 정규 형식이 존재합니다. 그러나 실제 데이터베이스 시스템에서는 일반적으로 BCNF를 넘어서는 것이 필요하지 않습니다.

결론

결론적으로, 관계형 데이터베이스는 정규 형식이라는 일련의 규칙에 따라 배열될 수 있습니다. 데이터 베이스 데이터 중복성을 줄이고 데이터 무결성을 보존하는 관리(1NF, 2NF, 3NF, BCNF, 4NF 및 5NF)입니다. 다양한 종류의 데이터 이상 및 종속성을 해결함으로써 각 후속 정규 형식은 이전 정규 형식을 확장합니다. 저장되는 데이터의 특정 요구 사항과 속성에 따라 사용해야 하는 정규 형식이 결정됩니다. 더 높은 정규형은 더 엄격한 데이터 무결성을 제공하지만 데이터베이스 구조가 더 복잡해질 수도 있습니다.

전년도 질문 링크

  • GATE CS 2012, 질문 2
  • GATE CS 2013, 질문 54
  • GATE CS 2013, 질문 55
  • GATE CS 2005, 질문 29
  • GATE CS 2002, 질문 23
  • GATE CS 2002, 질문 50
  • GATE CS 2001, 질문 48
  • GATE CS 1999, 질문 32
  • GATE IT 2005, 질문 22
  • GATE IT 2008, 질문 60
  • GATE CS 2016(세트 1), 질문 31

일반 형식에 대한 FAQ

Q.1: DBMS에서 정규화가 중요한 이유는 무엇입니까?

답변:

정규화는 데이터베이스의 이상 현상을 방지하여 궁극적으로 데이터베이스의 일관성을 보장하고 데이터베이스를 쉽게 유지 관리하는 데 도움이 됩니다.

Q.2: 데이터베이스를 과도하게 정규화하는 것이 가능합니까?

답변:

예, 과도한 정규화는 쿼리가 복잡해지고 성능도 저하됩니다. 이는 표준화와 실용성 사이의 균형을 유지합니다.

Q.3: 데이터베이스를 BCNF 또는 4NF와 같은 최고 정규 형식으로 정규화해야 합니까?

답변:

데이터베이스 정규화에는 특정 필수 조건이 없습니다. 특정 성능과 단순성을 위해서는 낮은 형식으로도 충분할 때가 많습니다.