SQL Server 데이터베이스에서 복합 기본 키를 사용할지 여부에 대한 철학적 토론에 어려움을 겪고 있습니다. 저는 항상 과거에 대리 키를 사용했고, 다른 것을 시도하기 위해 편안함 영역을 떠나 자신에게 도전하고 있습니다. 나는 많은 토론을 읽었으나 아직 어떤 종류의 해결책도 찾아 볼 수 없다. 내가 가지고있는 투쟁은 복합 PK로 레코드를 업데이트해야 할 때입니다.복합 기본 키 업데이트
예를 들어, 질문의 기록은 다음과 같이이다 :
이ContactID, RoleID, EffectiveDate, TerminationDT
이 경우에 PK가 (ContactID, RoleID, EffectiveDate)
입니다. TerminationDT
은 null 일 수 있습니다.
내 UI에있는 사용자가 RoleID
을 변경 한 경우 레코드를 업데이트해야합니다. 서로 게이트 키를 사용하면 Update Table Set RoleID = 1 WHERE surrogateID = Z
을 할 수 있습니다. 그러나 합성 키 방식을 사용하면 복합 키의 필드 중 하나가 변경되면 이전 레코드를 참조하여 UI의 어딘가에서 이전 값을 유지하지 않고도이를 업데이트 할 방법이 없습니다.
내 UI에 데이터 소스를 바인딩하지 않습니다. 연결을 열고 데이터를 가져 와서 양동이에 저장 한 다음 연결을 닫습니다. 모든 사람의 의견은 무엇입니까? 감사.
+1. IMO 기본 키는 변경 불가능해야합니다. 일단 할당하면 변경되지 않습니다. 기간. 그것이 변경되면 - 그것은 PK가 아닙니다 –
이 경우 복합 PK 사용에 대한 제 생각이었습니다. 그것을 정당화 해 주셔서 감사합니다 !! – VBCSharp