도구스개발

함수 종속성 후보키 계산기

속성과 함수 종속을 넣으면 속성 폐포와 후보키를 모두 구하고 2NF·3NF·BCNF를 판정합니다. 어떤 종속이 정규형을 깨는지도 함께 보여 줍니다.

한 줄에 하나씩. AB -> C처럼 씁니다. 영문은 붙여 쓰면 글자별로 나뉘고, 여러 글자 이름은 쉼표로 나눠 적으세요.

만족하는 가장 높은 정규형

3NF

후보키 3개 · 속성 4개 · FD 3개

후보키{B, A} {B, C} {B, D}
주요 속성A, B, C, D
비주요 속성없음
모든 후보키에 들어가는 속성B
이행 종속은 없지만 왼쪽이 슈퍼키가 아닌 FD가 있어 BCNF는 아닙니다.
BCNF를 깨는 FD (왼쪽이 슈퍼키가 아님)C -> D, D -> A
{A}⁺{A}
슈퍼키인가아니오
속성 폐포는 «더 늘지 않을 때까지» 돌려야 합니다. 새로 들어온 속성 덕분에 아까는 못 쓰던 FD를 쓸 수 있게 되기 때문입니다. A→B, B→C, C→D에서 A의 폐포는 ABCD입니다. 한 번만 훑고 멈추는 것이 손으로 풀 때 가장 흔한 실수입니다.
슈퍼키와 후보키는 다릅니다. 폐포가 전체 속성이 되면 슈퍼키이고, 그중 «어느 하나를 빼도 더는 슈퍼키가 아닌» 극소인 것만 후보키입니다. {A}가 후보키면 {A, B}도 슈퍼키지만 후보키는 아닙니다.
어떤 FD의 오른쪽에도 나오지 않는 속성은 무엇으로도 결정되지 않으므로 «모든» 후보키에 반드시 들어갑니다. 이 성질로 찾는 범위를 크게 줄일 수 있어, 이 계산기도 그 속성들을 먼저 잡고 나머지를 크기 순으로 붙여 봅니다.
정규형 판정에서 주요 속성은 «어느 후보키엔가 들어 있는» 속성입니다. 이 정의를 빠뜨리면 3NF 판정이 통째로 어긋납니다. 자명한 FD(오른쪽이 왼쪽에 이미 들어 있는 것)는 어떤 정규형도 깨지 않으므로 판정에서 뺍니다.

사용 방법

  1. 1관계의 속성을 쉼표로 나열합니다.
  2. 2함수 종속을 한 줄에 하나씩 A B -> C 형태로 적습니다.
  3. 3후보키와 정규형 판정을 확인하고, 궁금한 속성 집합의 폐포를 따로 구해 봅니다.

자주 묻는 질문

시작 집합에서 출발해 왼쪽이 이미 포함된 함수 종속의 오른쪽을 계속 더합니다. 더 이상 늘어나지 않을 때까지 반복해야 하며, 한 번만 훑고 멈추는 것이 가장 흔한 실수입니다. 새로 들어온 속성 덕분에 아까는 쓸 수 없던 종속을 쓸 수 있게 되기 때문입니다.

폐포가 전체 속성이 되면 슈퍼키이고, 그중 어느 하나를 빼도 더는 슈퍼키가 아닌 극소인 것만 후보키입니다. A가 후보키라면 AB도 슈퍼키지만 B를 빼도 되므로 후보키는 아닙니다.

어떤 함수 종속의 오른쪽에도 나오지 않는 속성은 무엇으로도 결정되지 않으므로 모든 후보키에 반드시 들어갑니다. 그 속성들을 먼저 고정하고 나머지만 조합하면 찾는 범위가 크게 줄어듭니다.

3NF는 모든 함수 종속에서 왼쪽이 슈퍼키이거나 오른쪽이 주요 속성이면 만족합니다. BCNF는 예외 없이 왼쪽이 슈퍼키여야 합니다. 그래서 오른쪽이 주요 속성인 종속이 있으면 3NF이지만 BCNF는 아닌 경우가 생깁니다.

어느 후보키엔가 들어 있는 속성입니다. 후보키가 여러 개면 그 모두를 합쳐서 봐야 하며, 이 정의를 빠뜨리면 3NF 판정이 통째로 어긋납니다.

전송되지 않습니다. 모든 계산은 브라우저 안에서 이뤄지고, 입력값은 이 기기에만 남습니다.

알아두면 좋은 점

  • 영문 속성을 붙여 쓰면 글자별로 나눕니다(AB → A, B). 교과서 표기를 따른 것이며, 여러 글자로 된 영문 이름을 쓰려면 쉼표로 나눠 적으세요. 한글처럼 다른 글자가 섞인 이름은 쪼개지 않고 하나로 봅니다.
  • 자명한 함수 종속(오른쪽이 왼쪽에 이미 들어 있는 것)은 어떤 정규형도 깨지 않으므로 판정에서 뺍니다.
  • 후보키는 필수 속성을 먼저 고정하고 나머지를 크기 순으로 붙여 찾습니다. 그래도 조합이 지수로 늘어나 속성은 16개까지만 계산합니다.
  • 4NF·5NF와 다치 종속은 다루지 않습니다. 함수 종속만으로 판정할 수 있는 2NF·3NF·BCNF까지가 범위입니다.
  • 정규화 «분해»는 하지 않습니다. 어떤 종속이 어느 정규형을 깨는지까지만 알려 주며, 분해 방법은 여러 가지라 설계자가 정할 몫입니다.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 4일 · 결과는 참고용 추정치입니다.