2011-10-18 3 views
0

직원 정보가 들어있는 테이블 중 하나에 기본 키를 할당하는 데 문제가 있습니다. 해당 테이블에는 고유 한 열이 없습니다. 유일한 옵션은 세 개의 열을 기본 키로 결합하는 것입니다.기본 키 제약 조건에 대한 경고 메시지

  1. 그러나 내가이 데이터를 삽입하는 미래에 큰 문제가 될 것이라는 점을 알게 Warning! The maximum key length is 900 bytes. The index 'pk_hrempid' has maximum length of 1530 bytes.For some combination of large values, the insert/update operation will fail으로 경고 메시지를 제공합니다. 이 경고에 대한 해결책이 있습니까?

  2. 다른 질문은 고유 한 ID로 자동 증가 값을 넣을 수 있습니까? 좋습니다. 다른 부서의 직원 정보가 들어있는 많은 테이블이 있으므로 앞으로 문제가 발생하지 않도록하고 싶습니다. 일부 직원은 2 명 이상의 테이블에 출석 할 수 있습니다

도움이 되었습니까?

+0

해당 오류를 발생시킨 열 데이터 형식 정의를 알고 싶습니다. – Widor

+1

우리가 볼 수없는 SQL DDL 코드를 디버그하기는 어렵습니다.) 부끄러워하지 마시고 속성 이름 데이터 유형 및 샘플 데이터를 게시하십시오. 업계 표준 키 또는 다른 신뢰할 수있는 식별자 소스의 방향으로 사용자를 안내 할 수있는 비즈니스 영역에 대한 도메인 지식이있는 사용자를 여기에서 찾을 수 있습니다. – onedaywhen

+0

@ Widor .. 실마리를 가져 주셔서 감사합니다. 모든 데이터 유형에는 열의 데이터가 너무 긴 기본 nvarchar (255) (액세스로부터 크기가 지정되어 있음)가 있으며, 기본 키 열에 대한 유형이 있으면 기본 키에 대한 경고가 표시되지 않습니다. 다른 모든 열 (nvarchar와 비교할 때 작은 데이터도 포함 함)의 데이터 형식을 변경해야합니까? 아니면 그대로 둘 수 있습니까? – user939615

답변

0

"자연 키"를 사용하는 최상의 방법을 시도하는 복합 기본 키에서 소리가 났지만 자동 증가 ID 필드를 사용할 때 '잘못된'것은 없습니다.

제안 된 입력란이 키로 사용하기에는 너무 큰 경우 입력란이 가장 적합하지 않은 것으로 보입니다. 아마도 다른 "자연스러운"키 열을 더 나은 데이터 유형과 함께 추가 할 수 있습니까?

자주 문의 할 테이블에 적합한 인덱스와 적합한 데이터 유형을 선택하여 가능한 최적화를 고려해야합니다.

+0

모범 사례로서의 자연 키, 논쟁의 여지가있는 진술의 비트가 있다고 생각합니다 ... – OTTA

+0

"자연 키에 덧붙여 대리 키를 사용하면 '잘못된 것이 없습니다.' : 나는 동의하지 않을 것이다.)하지만 문제는 DBMS가 자연의 열쇠를 집행 할 수 없다는 것이다. – onedaywhen

+0

@OTTA 나는 "자연 키가 가능하다면"또는 "자연 키가 기본 키가된다면 자격이 있어야한다." 즉, '자연'과 '대리모'가 모두 작고 숫자이며 색인이 가능한 경우 매번 '자연'기호로 이동하십시오. – Widor

0
  1. 이것은 기본 키의 제한 사항입니다. 900 바이트보다 큰 PK는 가질 수 없습니다.

  2. 테이블에 ID 열을 추가하고 기본 키로 설정할 수 있습니다. 전 세계적으로 독특한 Guids를 선호합니다.

+1

1. 확실히 이것은 SQL Server의 제한 사항입니까? 2. 기존 3 열의 중복을 막지 않습니다. – onedaywhen

0

나는 차 키의 자동 증가 형 솔루션과 함께 가고 싶어은 이런 종류의 물건에 대한 개인 정보를 사용에 문제는 기본 키의 기본 요구 사항 인 고유성을 보장 할 수 있다는 것입니다.

관련 문제