면접 중에 일부 면접관들이 데이터베이스 패러다임에 대해 묻기도 하는데, 저는 대학 때 데이터베이스를 공부한 적이 있지만 패러다임에 대해 들어본 적이 없거나 선생님이 언급한 적이 없어서 주의를 기울이지 않았다고 하더군요?
현재 관계형 데이터베이스에는 여섯 가지 패러다임이 있습니다: 첫 번째 패러다임(1NF), 두 번째 패러다임(2NF), 세 번째 패러다임(3NF), 배스-코드 패러다임(BCNF), 네 번째 패러다임(4NF), 그리고 다섯 번째 패러다임(5NF, 완전 패러다임으로도 알려짐)입니다.
보통 우리는 첫 번째 패러다임(1NF), 두 번째 패러다임(2NF), 그리고 세 번째 패러다임(3NF)을 사용하는데, 이 세 번째 패러다임은 이 글에서 다룰 "세 가지 패러다임"입니다.
첫 번째 패러다임 (1NF): 데이터베이스 테이블의 각 열이 분할 불가능한 원자 데이터 항목이어야 함을 요구합니다.
설명:
위 표에서 "가족 정보"와 "학교 정보" 열은 원자성 요건을 충족하지 못해 첫 번째 패러다임을 충족하지 못하며, 다음과 같이 조정됩니다:
각 조정된 열은 나눌 수 없으므로 첫 번째 패러다임(1NF)을 만족한다;
패러다임 2 (2NF): 1NF를 기반으로 비코드 속성은 후보 코드에 완전히 의존해야 합니다(1NF 기준으로 마스터 코드에 대한 비기본 속성의 부분 기능 의존성을 제거함)
두 번째 패러다임은 데이터베이스 테이블의 모든 열이 기본 키의 일부만 있는 것이 아니라 기본 키와 관련되어 있어야 합니다(주로 연합 주요 키의 경우).
설명:
위 도표의 경우, 같은 주문에도 다른 상품이 포함될 수 있으므로, 기본 키는 '주문 번호'와 '제품 번호'의 조합이어야 합니다.
하지만 제품 수량, 할인 가격, 제품 가격은 모두 "주문 번호"와 "제품 번호"와 관련이 있지만, 주문 금액과 주문 시간은 "주문 번호"에만 해당되며 "제품 번호"와는 무관하다는 것을 알 수 있습니다.
이는 두 번째 패러다임의 요구사항을 충족하지 못하며, 다음과 같이 조정되며, 두 개의 표로 나누어야 합니다:
세 번째 패러다임(3NF): 2NF를 기반으로 비주요 속성은 다른 주요 속성에 의존하지 않는다(2NF를 기반으로 전송 의존성을 제거함)
세 번째 패러다임은 데이터 테이블의 각 데이터 열이 간접적으로 연관되지 않고 기본 키와 직접 관련되도록 보장해야 합니다.
설명:
위 표에서 모든 속성은 학생 수에 전적으로 의존하므로 두 번째 패러다임은 충족되지만, "담임 선생님 성별"과 "담임 선생님 나이"는 "담임 선생님 이름"에 직접 의존합니다.
주요 키인 "학생 번호" 대신에 다음과 같은 조정이 필요합니다:
이렇게 하면 세 번째 패러다임의 요구사항이 충족됩니다.
ps:如果把上表中的班主任姓名改成班主任教工号可能更确切,更符合实际情况,不过只要能理解就行。
BCNF (보브체 코드 정상형 바커스 패러다임)
세 번째 수정 패러다임은 기본 키의 한 열이 다른 열에 의존하지 않도록 방지하는 것입니다. 3NF가 주요 속성 코드에 대한 일부 함수 의존성과 전달 함수 의존성을 제거하면 이를 BCNF라고 부릅니다.
특성:
1. 모든 주요 속성은 각 코드에 완전히 함수적으로 의존합니다
2. 모든 주요 속성은 해당 코드를 포함하지 않는 각 코드에 완전히 함수 의존적입니다
3. 완전히 기능적이며 비코드 속성 집합에 의존하는 속성은 없습니다
예를 들어, 재고 테이블(창고 이름, 관리자 이름, 제품명, 수량)의 기본 키는 (창고 이름, 관리자 이름, 제품명)로, 앞선 세 가지 패러다임을 만족하지만 창고 이름과 관리자 이름 사이에 의존성이 있어 창고를 삭제하면 관리자가 삭제되므로 BCNF가 만족되지 않습니다.
4NF 제4 패러다임
비기본 속성은 여러 값을 가지면 안 됩니다. 만약 다중 값이 존재한다면, 이는 네 번째 패러다임을 위반합니다. 4NF는 속성 간에 비자명하거나 함수에 의존하지 않는 다중 값 의존성을 허용하지 않는 제한 관계 패턴입니다.
예를 들어, 사용자 연락처 정보 테이블(사용자 ID, 유선전화, 휴대전화)에서는 사용자 ID가 기본 키로 BCNF를 만족하지만, 사용자가 여러 개의 유선 전화나 여러 휴대전화를 가질 수 있다면 이 설계는 비합리적이며 (사용자 ID, 연락처 유형, 전화번호)로 변경해야 합니다.
참고: 함수 의존성만 고려할 경우, 관계 패턴의 정규화가 가장 높은 패러다임은 BCNF입니다. 다중 값 의존성을 고려하면 4NF입니다.
5NF 제5패러다임
다섯 번째 패러다임은 최종 패러다임으로, 4NF의 연결 의존성을 제거하며, 다섯 번째 패러다임은 다음 요구사항을 충족해야 합니다:
1. 네 번째 패러다임을 충족해야 한다
2. 테이블은 논리적으로 원래 테이블과 동일한 기본 키를 가진 경우를 제외하고, 더 작은 테이블로 분해될 수 있어야 합니다.
일반적인 실용적 응용에서는 다섯 번째 패러다임을 고려할 필요가 없습니다.
전근 출처:하이퍼링크 로그인이 보입니다. 참조:하이퍼링크 로그인이 보입니다.
|