inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

김영한의 실전 데이터베이스 - 설계 1편, 현대적 데이터 모델링 완전 정복

BCNF 정규형

제 3 정규형 vs BCNF 정규형 차이점?

4

swdevelop24

작성한 질문수 10

0

강의들을 때는 어렴풋이 알거 같고 근데 강의듣는거 끝내고 실제로 구별해보라고 하면 잘 못하는거 같아서요.

혹시 차이점을 예를들어서 좀 쉽게 설명해주실수 있을까요?

저는 제 3 형 정규형 한거 같은데 또 보면 bcnf인거 같기도 하고 엄청 헷갈리고 있습니다.
도와주세요!

제가 찾은 건 bcnf 가 후보키가 아니라 슈퍼키라고 나와서 더 헷갈리는 거 같아요.
감사합니다.

sql mysql dbms/rdbms 소프트웨어-설계 SQLD

답변 2

0

swdevelop24

제가 찾은 건 후보키가 아니라 슈퍼키라고 나와서 더 헷갈리는 거 같아요.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. swdevelop24님.

데이터베이스 정규화는 데이터 무결성을 유지하고 중복을 최소화하기 위해 중요한 개념 중 하나입니다. 제3정규형(3NF)과 보이스-코드 정규형(BCNF)은 모두 이 과정의 일부지만, 그 차이점은 결정자가 후보 키인지 여부에 있습니다.

제3정규형(3NF)

  • 조건: 제2정규형(2NF)을 만족하고, 비이행적 종속성(즉, 기본 키가 아닌 속성은 기본 키에만 의존해야 함)을 만족해야 합니다.
  • 적용 예시: 만약 테이블이 {StudentID, StudentName, CourseID}라는 구조를 가지고 있고, CourseID가 고유하지 않으며 StudentName은 StudentID에만 종속적이라면 이는 3NF를 만족합니다. 그러나 CourseID가 StudentID와 StudentName의 조합에 종속적이라면 이행적 종속으로 인해 3NF 위반이 발생합니다.

BCNF(보이스-코드 정규형)

  • 조건: 모든 결정자가 반드시 후보 키여야 합니다.
  • 적용 예시: 위의 예에서 StudentID가 아닌 CourseID가 StudentName을 결정하는 경우, 이는 BCNF를 위반한 것입니다. BCNF는 결정자 중 일부가 후보 키가 아닌 경우 생길 수 있는 기능 종속성을 제거합니다.

차이점의 핵심

제3정규형은 기본적으로 모든 속성이 기본 키에만 종속적이어야 하며, 비기본 키에 의한 이행적 종속성을 없애는 데 중점을 둡니다. 그러나 BCNF는 결정자 자체가 후보 키인지 여부에 초점을 맞추므로, 모든 결정자가 후보 키여야 한다는 더 강력한 조건을 갖습니다.

참고할 만한 링크

위 내용을 통해 제3정규형과 BCNF의 차이를 보다 명확히 이해하셨으면 합니다. 추가적인 질문이나 더 궁금한 점이 있으시면 언제든지 말씀해 주세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

BCNF 질문

0

53

2

연관 엔티티 네이밍 규칙

0

41

1

진짜 강의 듣는거 너무 고문

0

115

1

28강 sql 파일 어딨나여?

0

79

1

2NF의 엄밀한 정의

0

66

1

comment 채번을 사용해야 하는 이유에 대한 설명이 필요합니다.

0

106

3

학습중인 수업자료를 받아볼 수 있을까요??

0

94

2

수업자료 pdf파일관련 건의 - 제목 링크위치 개선

0

79

2

서비스 운영 중 잘못된 테이블 설계 발견시 수정 시점에 대한 질문

1

96

2

실무적인 설계로 접근했을 때 제 2정규형 항상 만족?

0

73

1

슈퍼/서브 타입 joined 전략

0

64

2

created_at 관련 구현과 DB ENUM에 대해

0

64

1

M:N 관계의 연관 엔티티 설계 순서

0

68

2

데이터 역사성 훼손 문제

0

61

2

실무팁 - 등록자,수정자 컬럼 관리 관련 질문입니다.

0

79

1

구글이 이메일 변경을 허용하는 이유

0

117

1

order_item 테이블 (order_id, product_id) 유니크 제약조건 누락

0

98

2

BCNF 정규화에 대한 질문

0

118

2

주문, 결제 엔티티의 분류

1

113

1

실무에서의 복수 항목에 대한 관리 방법이 궁금합니다.

0

87

1

역할 및 발생 시점에 따른 엔티티 분류

0

83

1

대리키의 외부 노출에 대한 질문을 하고 싶습니다.

0

105

2

소프트 딜리트 정책에서 유니크 컬럼 중복 방지 전략

0

94

1

대리키 사용과 정규화

1

107

2