0

작업 포털 데이터베이스를 계획하고 있습니다. 여기에 일부 알림을 구독하는 일부 후보자가 있습니다. 을 나는 혼란 스러워요은 4 번째 또는 5 번째 정상 형태의 문제인지 (후보 이름이 표시되지 않은 사람과 관련된 더 많은 열을 보유하고 있습니다. ID & 후보가 될 것입니다 물론) 다중 값 종속성 (4NF/5NF)을 사용하여 데이터베이스 정규화

Table preview

! 중복성을 줄이기 위해 도움이 필요합니다.

중복성을 제거 할 수 있도록 IsEnabled 정보를 잃지 않고이 테이블과 같은 것으로 나눌 수 있습니까?

Candidate Table

Notification Table

것이 가능하거나 불가피한 중복되는 경우인가?

답변

4

어떤 각도에서도 정상적인 형태의 문제는 아닙니다.

첫 번째 표를 그대로 유지하려는 경우 (부울 속성 포함) CONSTRAINT입니다. 첫 번째 테이블에서 (후보, 통지 유형) 가능한 모든 조합에 대해 행이 있어야합니다. 그러나 그것은 NF 문제가 아닙니다! 부울 값이 무엇인지, 후보 또는 주어진 알림 유형 만 주어져야 하는지를 어떻게 든 결정할 수 있다면 NF 문제 일 수 있습니다.

이 접근법에서 "중복성"으로 잘못 인식 한 것은 정확하게 해당 제약 조건의 존재와 데이터베이스를 업데이트 할 때 삶을 어렵게 만드는 효과입니다.

부울 속성을 제거하고 첫 번째 테이블에서 "true"가있는 행만 씁니다. 이제는 그 제약 조건이 없어졌으며, 전 세계의 데이터베이스에 수많은 "연결"테이블이있는 것처럼 알림 유형을 지원하도록 후보를 연결하는 규칙적인 "연결"테이블 만 존재합니다.

+0

@BeediKumaraN : 예, 설계에서의 문제는 '('Sasi ','Profile View ')'가있는 행이 테이블에 존재하지 않고'True '가 아니라 거짓인가? –

+0

@ Erwin Smout : 고맙습니다. 확실히 접합점 테이블을 사용하여 해결할 수 있습니다. –