> 데이터 베이스 > MySQL 튜토리얼 > 다른 정상 형태 (1NF, 2NF, 3NF, BCNF)를 설명하십시오.

다른 정상 형태 (1NF, 2NF, 3NF, BCNF)를 설명하십시오.

Karen Carpenter
풀어 주다: 2025-03-19 13:15:26
원래의
979명이 탐색했습니다.

다른 정상 형태 (1NF, 2NF, 3NF, BCNF)를 설명하십시오.

정규화는 데이터 중복성을 줄이고 데이터 무결성 향상을 목표로하는 데이터베이스 설계 기술입니다. 다른 수준의 정규화를 정의하는 몇 가지 정상 형태가 있습니다. 자세히 살펴 보겠습니다.

1. 첫 번째 정상 형태 (1NF) :
데이터베이스를 정규화하는 첫 번째 단계는 데이터베이스가 첫 번째 정상 형태인지 확인하는 것입니다. 테이블은 다음 조건을 만족하면 1NF입니다.

  • 테이블의 각 열에는 원자 (불가분의) 값이 포함되어야합니다.
  • 행의 각 열에는 동일한 유형의 값이 포함되어야합니다.
  • 각 열에는 고유 한 이름이 있어야합니다.
  • 데이터가 저장된 순서는 중요하지 않습니다.

2. 두 번째 정상 형태 (2NF) :
테이블은 1NF에 있고 모든 비 키 열이 테이블의 기본 키에 완전히 의존하는 경우 테이블이 2NF입니다. 즉, 테이블의 기본 키가 여러 열로 구성되면 비 키 열이 키의 일부가 아니라 전체 키에만 의존하지 않아야합니다.

3. 세 번째 정상 형태 (3NF) :
테이블은 2NF에 있고 전이 의존성이없는 경우 3NF입니다. 이는 비 키 열이 다른 비 키 열에 의존하는 경우 별도의 테이블로 이동해야 함을 의미합니다. 다시 말해, 모든 비 키 열은 키, 전체 키 및 키에 대한 사실을 제공해야합니다.

4. Boyce-Codd 정상 형태 (BCNF) :
BCNF는 3NF의보다 엄격한 버전입니다. 테이블은 3NF에있는 경우 BCNF에 있으며 사소한 기능 의존성 x-> y, x는 슈퍼 키입니다. BCNF는 특정 유형의 기능적 종속성으로 인해 3NF 테이블에서 여전히 발생할 수있는 이상의 가능성을 제거하도록 설계되었습니다.

1NF와 2NF의 주요 차이점은 무엇입니까?

1NF와 2NF의 주요 차이점은 테이블 내 종속성의 특성에 있습니다.

  • 1NF는 데이터 구조에 중점을 두어 각 셀에 원자 값이 포함되어 있고 데이터 순서가 중요하지 않도록합니다. 데이터 항목 간의 관계를 다루지 않습니다.
  • 반면에 2NF 는 부분 종속성을 제거하여 1NF를 구축합니다. 비 키 열이 복합 (다중 열) 기본 키가있는 테이블의 기본 키의 일부에만 의존 할 때 부분 의존성이 발생합니다. 2NF에서는 모든 비 키 열이 전체 기본 키에 완전히 의존해야합니다.

예를 들어, 복합 기본 키가있는 1NF의 테이블을 고려하십시오. 비 키 열이 기본 키의 일부에만 의존하는 경우 2NF를 위반합니다. 예를 들어, 테이블 추적 주문에 Composite 기본 키 (OrderId, ProductID)가 있고 ProductID에만 의존하는 ProductPrice의 열이있는 경우 ProductPrice를 별도의 테이블로 옮기면 원래 테이블을 2NF로 가져옵니다.

3NF는 데이터 중복성을 줄이는 데 어떻게 도움이됩니까?

세 번째 정상 형태 (3NF)는 전이 의존성을 제거하여 데이터 중복성을 줄이는 데 중요한 역할을합니다. 전이 의존성은 비 키 열이 다른 비 키 열에 의존 할 때 발생하며, 이는 차례로 기본 키에 의존합니다.

예를 들어, EmployeeID (1 차 키), DepartmentID 및 DepartmentName의 열을 포함하는 2NF의 테이블을 고려하십시오. DepartmentName이 DepartmentID에 의존하는 경우, 직원에 의존하는 경우 DepartmentName은 DepartmentID를 통해 EmployeeID에 대한 전이 의존성을 갖습니다. 동일한 부서 이름이 테이블에서 여러 번 반복 될 수 있으므로이 설정은 데이터 중복으로 이어질 수 있습니다.

이를 해결하기 위해 3NF는 부서 이름을 별도의 부서 테이블 (DepartmentID와 함께)으로 이동해야하며 전이 의존성을 제거해야합니다. 이 정규화 단계는 DepartmentName이 한 번만 저장되어 중복성을 줄이고 데이터 무결성을 향상시킵니다. 업데이트가 필요한 경우 한 곳에서만 이루어져서 불일치의 위험을 최소화해야합니다.

BCNF가 3NF보다 선호되는시기의 예를 제공 할 수 있습니까?

Boyce-Codd 정상 형태 (BCNF)는 결정 요인 (종속성의 왼쪽)이 슈퍼 키가 아닌 기능적 종속성이있을 때 세 번째 정상 형태 (3NF)보다 선호됩니다. BCNF는 3NF 테이블에서 지속될 수있는 이상을 제거하기위한보다 엄격한 기준을 제공합니다.

대학 과정 등록 시스템과 관련된 예를 고려하십시오.

표 : Courseergentration

  • 칼럼 : StudentId, CourseId, InstructorId
  • 기능적 의존성 :

    • (StudentId, CourseId) -> InstructorId (기본 키)
    • Instructorid-> CourseId (강사는 하나의 코스 만 가르칩니다)

이 시나리오에서는 전이 의존성이 없기 때문에 테이블은 3NF입니다. 그러나 instructorid-> courseid는 슈퍼 키가 아닌 강사가 다른 비 키 열인 코스를 결정한다는 것을 의미하기 때문에 BCNF를 위반합니다.

BCNF를 만족 시키려면 테이블을 두 가지로 분할해야합니다.

표 1 : Courseergatration

  • 칼럼 : StudentId, CourseId, InstructorId
  • 기본 키 : (StudentId, CourseId)

표 2 : 강사

  • 열 : Instructorid, CourseId
  • 기본 키 : InstructorId

이를 통해 기능적 종속성의 모든 결정 요인이 슈퍼 키임을 보장하므로 BCNF 기준을 충족시킵니다. 이 분리는 테이블이 3NF로 유지 된 경우 발생할 수있는 삽입, 삭제 및 업데이트 이상과 같은 잠재적 이상을 제거합니다.

위 내용은 다른 정상 형태 (1NF, 2NF, 3NF, BCNF)를 설명하십시오.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿