2012-10-08 2 views
0

현재 테이블에 IDENTITY 필드가 있습니다. 이 필드는 INT 형식으로 선언되었습니다. 문제는 몇 가지 새로운 고유 값이 있지만 이는 INT이 아님을 나타냅니다. 그들은 영숫자이므로 INT 필드에 입력 할 수 없습니다. 다른 열을 만들고이를 새 NON-IDENTITY 열에 고정하는 유일한 방법입니까 아니면 대안이 있습니까? 위의 예는 두 가지 ID 형식에 대한 것입니다.하지만 더 많이 얻으려면 어떻게해야합니까? 형식화 된 알파 (숫자)의 모든 유형에 대해 열을 생성하지 않아도됩니다.테이블에 다른 유형의 고유 식별자를 적용하는 방법은 무엇입니까?

답변

0

테이블에 고유해야하는 열이 두 개 이상있는 것은 흔한 일입니다. 실제 질문은 정상화의 수준이 당신이 여기에서 총격을 가하고 열 지원을 추가하거나 관계 정상화의 목표 수준을 벗어나거나 수용 가능한 것으로 생각하는 것입니다.

예를 들어 세 번째 일반 및/또는 유명한 "모든 비 핵심 속성"은 키, 전체 키 및 키에 대한 사실을 나타냅니다. so help me Codd ".

추가 할 새 고유 값이 키로 식별 된 행에 대한 사실을 추가합니까?

기본 키는 일반적으로 클러스터 된 인덱스이지만 반드시 그렇게 할 필요는 없습니다. 동일한 테이블에 다른 고유 인덱스를 설정할 수도 있습니다. 이는 컨텍스트 내에서 '무엇을 성취하려고합니까?'라고 간주되어 최적화됩니다.

+0

아니요, 값을 부가하지 않습니다. 한 사용자는 우리가 만든 숫자를 사용하고 다른 사용자는 고유 한 값을 제공합니다.이 값은 영숫자 값입니다. – Xaisoft

+0

분명히 한 사용자가 의존 한 사실을 추가하는 것이지 다른 한 사용자는 의존하지 않는 것이 사실입니다. 따라서 사용자와의 비즈니스 규칙 및 계약에 따라 여전히 괜찮을 수 있습니다. 데이터베이스 디자인과 관련하여 ... '오케이 (OK)'는 귀하의 상황과 합의 된 서비스 수준에 대해 수용 가능한 것으로 정의합니다. – RThomas

+0

실제로 실제적인 싸움은 동일한 식별자를 사용하여 데이터와 관련된 유지 관리 및 두통을 줄 이도록 유도 할 수 있습니다. – RThomas

0

대안은에 있습니다 :

  1. 가 기존 테이블
  2. 복사로 동일한 방식에 임시 테이블을 만들고 새로운 임시 테이블
  3. 드롭 이전 테이블에 테이블의 값
  4. 이전 테이블의 구성표를 기반으로하지만 텍스트 ID를 사용하여 새 테이블을 만듭니다.
  5. 임시 테이블에서 텍스트 ID가 새로 생성 된 테이블로 데이터 복사
  6. 임시 테이블 삭제

물론이 프로세스와 관련된 잠재적 인 작업에주의해야합니다.

+0

나는 정수 ID와 텍스트 ID가 모두 필요합니다. – Xaisoft

+0

그런 다음 정수 ID는 ID 여야하고 다른 ID는 고유 제약 조건을 가져야합니다. –

+0

또는 두 필드가 포함될 기본 키 제약 조건을 정의 할 수 있지만 각 필드의 고유성을 보장하려면 고유 한 제약 조건이 필요합니다. –

관련 문제