세 번째 정규 형식 (3NF)으로 데이터베이스 배치

세 번째 정규 형식 (3NF)은 첫 번째 정규형 (1NF) 및 두 번째 정규형 (2NF)에서 제공하는 데이터베이스 정규화 원칙을 기반으로 데이터 무결성을 지원하는 데이터베이스 원칙입니다.

세 번째 표준 양식 요구 사항

데이터베이스가 세 번째 정규 형식이어야한다는 두 가지 기본 요구 사항이 있습니다.

기본 키 의존성 정보

모든 컬럼이 프라이 머리 키에 의존해야한다는 사실에 대해 더 자세히 살펴 보도록하겠습니다.

열의 값이 기본 키와 테이블의 다른 열에서 파생 될 수 있으면 3NF를 위반합니다. 다음 열이있는 Employees 테이블을 고려하십시오.

LastName과 FirstName은 EmployeeID 값에만 의존합니까? LastName은 FirstName에 의존 할 수 있습니까? LastName에 고유 한 것이 FirstName의 값을 제안하지 않기 때문입니다. FirstName은성에 달려 있습니까? 다시 말하지만, 같은 것이 사실이기 때문에 LastName이 무엇이든 FirstName의 값에 대한 힌트를 제공 할 수 없습니다. 따라서이 표는 3NF 규격입니다.

그러나이 Vehicles 테이블을 고려하십시오.

제조업체와 모델은 VehicleID에서 파생 될 수 있습니다. 그러나 차량 모델이 특정 제조업체에서만 만들어지기 때문에 모델은 제조업체에서 파생 될 수도 있습니다. 이 테이블 디자인은 3NF 규격이 아니므로 데이터 이상이 발생할 수 있습니다. 예를 들어, 모델을 업데이트하지 않고 부정확성을 도입하여 제조업체를 업데이트 할 수 있습니다.

이를 준수하려면 추가 종속 열을 다른 테이블로 이동하고 외래 키를 사용하여 참조해야합니다. 그러면 두 개의 테이블이 생성됩니다.

차량 테이블

아래 표에서 ModelID는 Models 테이블에 대한 외래 키입니다.

모델 테이블

이 새로운 표는 모델을 제조업체에 매핑합니다. 모델에 특정한 차량 정보를 업데이트하려면 차량 테이블이 아닌이 테이블에서 수행하십시오.

3NF 모델의 파생 필드

테이블에는 파생 필드가 포함될 수 있습니다. 파생 필드는 테이블의 다른 열을 기반으로 계산됩니다. 예를 들어 위젯 주문 테이블을 살펴 보겠습니다.

전체는 3NF 준수를 위반합니다. 기본 키에 전적으로 의존하지 않고 단가에 수량을 곱하여 도출 될 수 있기 때문입니다. 우리는 세 번째 표준 형식을 따르기 위해 테이블에서 그것을 제거해야합니다.

사실 파생 된 것이므로 데이터베이스에 저장하지 않는 것이 좋습니다.

데이터베이스 쿼리를 수행 할 때 간단히 "즉시"계산할 수 있습니다. 예를 들어 이전에이 쿼리를 사용하여 주문 번호와 총계를 검색했을 수 있습니다.

SELECT OrderNumber, WidgetOrders의 총계

이제 다음 쿼리를 사용할 수 있습니다.

SELECT OrderNumber, UnitPrice * Quantity AS 총계 WidgetOrders로부터

정규화 규칙을 위반하지 않고 동일한 결과를 얻을 수 있습니다.