차례:
- 이 테이블은 행과 열이 2 차원입니다.
- 기능적 종속성
- 첫 번째 정규 양식을 알고있는 SALES 테이블을 다시보십시오. 각 Customer_ID에 대해 한 행만 허용하도록 항목을 제한하는 한 단일 속성 기본 키가 있으며 테이블은 두 번째 정규 형식입니다. 그러나 테이블에는 여전히 예외가있을 수 있습니다. 예를 들어, 고객 1010이 염소 표백제에 만족하지 못하고 환불을 위해 물품을 반환한다면 어떻게 될까요?
비디오: 파이썬 입문 강좌 | TEAMLAB X Inflearn | 14-3 정규 표현식: Regular Expression 2024
SQL에 수정 변형 원인은 세 가지가 있습니다. 는 제 1, 제 2 및 제 3 999 형태 (1NF, 2NF, 3NF)로 정의된다. 이러한 정상적인 형태는 수정 변형에 대한 해결책으로 작용합니다. 첫 번째 정규형 첫 번째 정규형 (1NF)이 되려면 테이블의 품질이 다음과 같아야합니다.
이 테이블은 행과 열이 2 차원입니다.
각 행에는 사물의 일부 또는 일부와 관련된 데이터가 들어 있습니다.
-
-
각 열에는 설명 대상의 단일 속성에 대한 데이터가 들어 있습니다.
표의 각 셀 (행과 열의 교차점)은 하나의 값만 가져야합니다. -
모든 열의 항목은 모두 같은 종류 여야합니다. 예를 들어 한 열의 한 행에있는 항목에 직원 이름이 포함되어 있으면 다른 모든 행에도 해당 열에 직원 이름이 포함되어야합니다.
-
-
각 열에는 고유 한 이름이 있어야합니다.
두 행이 동일하지 않을 수 있습니다 (즉, 각 행은 고유해야 함). -
열의 순서와 행의 순서는 중요하지 않습니다.
-
첫 번째 정규 형식의 표 (관계)는 몇 가지 변형 변형에 영향을받지 않지만 여전히 다른 대상의 영향을받습니다. SALES 테이블은 첫 x 째 정규 양식이며 테이블은 h 제 및 삽입 이상이 _ 생합니다. 첫 번째 정규형은 일부 애플리케이션에서는 유용 할 수 있지만 다른 애플리케이션에서는 신뢰할 수 없습니다.
-
두 번째 정규 형식
두 번째 정규 형식을 이해하려면 기능 종속성에 대한 아이디어를 이해해야합니다.기능적 종속성
은 속성 들간 또는 속성 들간의 관계이다. 두 번째 속성의 값이 첫 번째 속성의 값을 결정하면 하나의 속성은 다른 속성에 기능적으로 종속됩니다. 두 번째 속성의 값을 알고 있으면 첫 번째 속성의 값을 결정할 수 있습니다. 예를 들어 테이블에 다음 방정식과 관련된 특성 (열) StandardCharge, NumberOfTests 및 TotalCharge가 있다고 가정합니다. TotalCharge = StandardCharge * NumberOfTests
TotalCharge는 StandardCharge 및 NumberOfTests에 기능적으로 종속됩니다. StandardCharge 및 NumberOfTests 값을 알고 있으면 TotalCharge 값을 결정할 수 있습니다.
첫 번째 정규 형식의 모든 테이블에는 고유 한 기본 키가 있어야합니다. 이 키는 하나 이상의 열로 구성 될 수 있습니다. 둘 이상의 열로 구성된 키를
복합 키라고합니다. 두 번째 정규형 (2NF)이 되려면 모든 비 핵심 속성이 전체 키에 의존해야합니다. 따라서 하나의 속성 키를 가진 1NF에있는 모든 관계는 자동으로 두 번째 정규 형식입니다.관계에 복합 키가있는 경우, 키가 아닌 모든 속성은 키의 모든 구성 요소에 의존해야합니다. 키가 아닌 속성이 키의 모든 구성 요소에 종속되지 않는 테이블이있는 경우, 테이블을 두 개 이상의 테이블로 분리하여 - 새 테이블 각각에서 모든 비 핵심 속성이 모든 구성 요소에 종속되도록하십시오 기본 키의.
소리가 혼란 스럽습니까? 문제를 명확히하기 위해 예를보십시오. SALES 테이블을 고려하십시오. 각 고객에 대해 단일 구매를 기록하는 대신 고객이 처음 항목을 구입할 때마다 행을 추가합니다. 추가적인 차이점은 전세 고객 (Customer_ID 값이 1001 ~ 1007 인 고객)이 정상 가격에서 할인을 받는다는 것입니다. Customer_ID가 행을 고유하게 식별하지 않습니다. Customer_ID 열과 Product 열의 조합은 행을 고유하게 식별합니다. 이 두 열은 함께 복합 키입니다. 가격 (비 핵심 속성)이 키의 일부에만 의존하기 때문에 일부 고객이 할인 대상이고 다른 고객은 그렇지 않은 경우 표가 두 번째 정규 형식이 아닐 수 있습니다 (생성물). 일부 고객은 할인 대상이므로 가격은 CustomerID와 Product에 따라 달라지며 테이블은 두 번째 정규 형식입니다.
세 번째 정규 형식
두 번째 정규 형식의 테이블은 특정 유형의 수정 예외, 특히 전 이적 종속성에서 비롯된 테이블의 취약성에 특히 취약합니다.
전이 종속성
은 하나의 속성이 두 번째 속성에 종속 될 때 발생합니다. 두 번째 속성은 세 번째 속성에 따라 다릅니다. 이러한 종속성이있는 테이블에서 삭제하면 원하지 않는 정보가 손실 될 수 있습니다. 세 번째 정규형의 관계는 전이 의존성이없는 두 번째 정규형의 관계입니다.
첫 번째 정규 양식을 알고있는 SALES 테이블을 다시보십시오. 각 Customer_ID에 대해 한 행만 허용하도록 항목을 제한하는 한 단일 속성 기본 키가 있으며 테이블은 두 번째 정규 형식입니다. 그러나 테이블에는 여전히 예외가있을 수 있습니다. 예를 들어, 고객 1010이 염소 표백제에 만족하지 못하고 환불을 위해 물품을 반환한다면 어떻게 될까요?
고객 1010이 염소 표백제를 구입했다는 사실을 기록하는 테이블에서 세 번째 행을 제거하려고합니다. 문제가 있습니다: 그 행을 제거하면 염소 표백제 가격이 $ 4입니다. 이 상황은 전이 종속성의 예입니다. 가격은 제품에 따라 다르며, 차례대로 기본 키 Customer_ID에 따라 다릅니다.
SALES 테이블을 두 개의 테이블로 나누면 전이 종속성 문제가 해결됩니다. 두 테이블은 세 번째 정규 형식의 데이터베이스를 구성합니다.