DBMS-정규화
기능적 종속성
기능적 종속성 (FD)은 관계에서 두 속성 사이의 제약 조건 집합입니다. 기능적 종속성은 두 개의 튜플이 속성 A1, A2, ..., An에 대해 동일한 값을 갖는 경우 해당 두 튜플이 B1, B2, ..., Bn 속성에 대해 동일한 값을 가져야한다고 말합니다.
기능적 종속성은 화살표 기호 (→), 즉 X → Y로 표시됩니다. 여기서 X는 기능적으로 Y를 결정합니다. 왼쪽 속성은 오른쪽 속성의 값을 결정합니다.
암스트롱의 공리
F가 기능적 종속성의 집합이면 F + 로 표시되는 F의 폐쇄는 F에 의해 논리적으로 암시 된 모든 기능적 종속성의 집합입니다. 암스트롱의 공리는 반복적으로 적용될 때 기능적 종속성의 폐쇄를 생성하는 일련의 규칙입니다. .
Reflexive rule − 알파가 속성 집합이고 베타가 알파의 하위 집합 인 경우 알파는 베타를 보유합니다.
Augmentation rule− a → b가 유지되고 y가 속성 집합이면 ay → by도 유지됩니다. 그것은 종속성에 속성을 추가하는 것이며 기본 종속성을 변경하지 않습니다.
Transitivity rule− a → b가 유지되고 b → c가 유지되면 a → c도 유지됩니다. a → b는 b를 결정하는 기능적으로 호출됩니다.
사소한 기능 종속성
Trivial− 기능적 종속성 (FD) X → Y가 유지되고 Y가 X의 하위 집합 인 경우이를 사소한 FD라고합니다. 사소한 FD는 항상 유지됩니다.
Non-trivial − FD X → Y가 유지되고 Y가 X의 하위 집합이 아닌 경우이를 중요하지 않은 FD라고합니다.
Completely non-trivial − FD X → Y가 유지되고 x가 Y = Φ와 교차하는 경우 완전히 사소하지 않은 FD라고합니다.
표준화
데이터베이스 디자인이 완벽하지 않은 경우 데이터베이스 관리자에게는 나쁜 꿈과 같은 이상이있을 수 있습니다. 이상이있는 데이터베이스를 관리하는 것은 거의 불가능합니다.
Update anomalies− 데이터 항목이 흩어져 있고 서로 제대로 연결되지 않으면 이상한 상황이 발생할 수 있습니다. 예를 들어, 복사본이 여러 곳에 흩어져있는 하나의 데이터 항목을 업데이트하려고하면 몇 개의 인스턴스가 제대로 업데이트되고 다른 몇 개는 이전 값으로 남아 있습니다. 이러한 인스턴스는 데이터베이스를 일관되지 않은 상태로 둡니다.
Deletion anomalies − 기록을 삭제하려고했지만 인식하지 못해 일부가 삭제되지 않은 상태로 남아 있고 데이터도 다른 곳에 저장됩니다.
Insert anomalies − 전혀 존재하지 않는 레코드에 데이터를 삽입하려고했습니다.
정규화는 이러한 모든 이상을 제거하고 데이터베이스를 일관된 상태로 만드는 방법입니다.
첫 번째 정규형
First Normal Form은 관계 (테이블) 자체의 정의에서 정의됩니다. 이 규칙은 관계의 모든 속성이 원자 도메인을 가져야 함을 정의합니다. 원자 영역의 값은 나눌 수없는 단위입니다.
관계식 (테이블)을 아래와 같이 재정렬하여 First Normal Form으로 변환합니다.
각 속성은 사전 정의 된 도메인의 단일 값만 포함해야합니다.
두 번째 정규형
두 번째 정규형에 대해 배우기 전에 다음을 이해해야합니다.
Prime attribute − 후보 키의 일부인 속성을 프라임 속성이라고합니다.
Non-prime attribute − 프라임 키의 일부가 아닌 속성은 프라임이 아닌 속성이라고합니다.
두 번째 정규 형식을 따르면 모든 비 프라임 속성은 프라임 키 속성에 완전히 기능적으로 종속되어야합니다. 즉, X → A가 성립하면 Y → A도 참인 X의 적절한 부분 집합 Y가 없어야합니다.
여기 Student_Project 관계에서 프라임 키 속성이 Stu_ID 및 Proj_ID임을 알 수 있습니다. 규칙에 따라 키가 아닌 속성, 즉 Stu_Name 및 Proj_Name은 개별적으로 프라임 키 속성이 아닌 둘 다에 종속되어야합니다. 그러나 Stu_Name은 Stu_ID로 식별 할 수 있고 Proj_Name은 Proj_ID로 독립적으로 식별 할 수 있습니다. 이것은 ... 불리운다partial dependency, 이는 Second Normal Form에서 허용되지 않습니다.
우리는 위의 그림과 같이 두 가지 관계를 끊었습니다. 따라서 부분적인 종속성이 없습니다.
세 번째 정규형
관계가 세 번째 정규 형식이 되려면 두 번째 정규 형식이어야하며 다음을 충족해야합니다.
- 프라임이 아닌 속성은 프라임 키 속성에 전 이적으로 종속되지 않습니다.
- 사소하지 않은 기능 종속성의 경우 X → A, 다음 중 하나-
- X는 수 퍼키 또는
- A는 주요 속성입니다.
위의 Student_detail 관계에서 Stu_ID가 키이자 유일한 프라임 키 속성임을 알 수 있습니다. 도시는 Zip 자체뿐만 아니라 Stu_ID로 식별 할 수 있습니다. Zip은 수 퍼키도 아니고 City도 주요 속성이 아닙니다. 또한 Stu_ID → Zip → City이므로transitive dependency.
이 관계를 세 번째 정규 형식으로 만들기 위해 다음과 같이 관계를 두 개의 관계로 나눕니다.
Boyce-Codd 정규형
Boyce-Codd Normal Form (BCNF)은 엄격한 용어에 대한 Third Normal Form의 확장입니다. BCNF는 다음과 같이 말합니다.
- 사소하지 않은 기능 종속성의 경우 X → A, X는 수퍼 키 여야합니다.
위의 이미지에서 Stu_ID는 Student_Detail 관계의 슈퍼 키이고 Zip은 ZipCodes 관계의 슈퍼 키입니다. 그래서,
Stu_ID → Stu_Name, Zip
과
우편 번호 → 도시
두 관계가 BCNF에 있음을 확인합니다.