2010-02-04 2 views
2

스택 오버플로 및 다른 웹 사이트의 대용 키 대용 키에 대한 열띤 논쟁을 읽었으며 주어진 논점 중 일부에 대해 의아해했지만 각자 장단점을 알고 있습니다.대리 키의 경우 별도의 테이블이 필요합니까?

나는 대리 키로 가고 싶지만 다른 질문이 있습니다. 내 상황을 설명해 줄게. 고유 한 조합을 구성하는 5 개의 정수로 구성된 표가 있으며이 엔티티를 참조하는 여러 테이블이 있습니다. 현재 모든 테이블에는 전체 5 개의 필드가 포함되어 있으며 모든 JOIN 작업에는 5 개의 필드가 모두 조인 기준으로 언급되어 있습니다. 이제 대용 키를 추가했습니다. 하지만 '기본'테이블을 참조하는 대리 외래 키를 사용하여 모든 테이블에서 5 개의 필드를 모두 제거해야합니까?

5 개의 필드가 각각 다른 테이블의 선택 기준으로 자주 사용되므로이 작업을 수행하는 것이 확실하지 않습니다. 특정 자연 순서로 인덱스를 정의하므로 선택 작업이 빠르게 수행됩니다. 5 개의 필드를 모두 별도의 테이블로 마이 그 레이션하면 첫 번째 3 개를 선택하겠습니다. JOIN을 정의하고 선택해야하지만 인덱스는 정의되지 않습니다. JOIN은 생성 된 이후로 JOIN에서 성능 손실을 겪을 것입니다.

아니면 5 키를 포함하여 각 테이블에 대한보기를 정의해야합니까?

나는이 모든 것을 타이핑 한 후에 혼란스럽고 자연스러운 키를 다시 고집하고 싶다. 도움 말 하시겠습니까?

답변

2

5 개의 고유 필드 + 대리자 키 대신 하나의 테이블을 제안합니다. 이 테이블에서 5 개 필드의 각 필드 + 고유 제한 조건에 대한 색인을 작성할 수 있습니다. 그런 다음 다른 테이블에 5 개의 필드가있는 대신 1 개의 열만 있습니다.

+0

흠, 그렇습니다. 그런 다음 다른 테이블과 함께 색인을 만들어 JOIN을 삽입 할 수 있으므로 제 필터도 빠릅니다. 두 방법을 모두 시도해보고 성능을 비교해 보겠습니다. – thomaspaulb

1

대리 키를 도입하기위한 구체적인 목표가 없다면, 나는 그 키가 작동하는 한 혼자만 남겨 둘 수 있습니다.

관련 문제