일부 의견에서 이미 언급했듯이 한 가지 해결책은 새로운 기본 키를 사용하는 것입니다
예를 들어 (@onedaywhen의 예에 따라), 책 목록을 저장하는 Books 테이블이 있고 ISBN을 기본 키로 결정하는 데 사용 했다고 가정 해 봅시다 . 그러나 일부 저자는 잘못된 ISBN을 입력했다는 실수를 저질렀으므로 ISBN을 변경하도록 요청했으며 다음 작업이 포함되었습니다.
- Books 테이블에 새 레지스트리를 만듭니다.
- 이전 ISBN에서 새 ISBN으로의 모든 참조를 가리 킵니다. (*)
- 마지막으로, Books 테이블에서 이전 레지스트리를 삭제하십시오.
(*) 외래 키를 사용하는 데이터베이스 모델에 대한 모든 참조를 찾는 것은 쉽지 않지만 일부 모델에는 부족합니다.
Table Books
ISBN is the primary key
NAME is a simple field.
etc.
우리는 그것을 다음과 같이 변경합니다
Table Books
InternalBookId as the primary key
ISBN as a simple field or an indexed field.
NAME is a simple field.
etc.
새 InternalBookId 가 자동 숫자 값이 될 수있는 곳.
그것에 대한 단점 :
더 많은 공간 / 자원을 사용하는 새로운 필드를 추가합니다.
전체 모델을 다시 작성해야 할 수도 있습니다.
새로운 모델은 덜 자기 설명이 될 수 있습니다.
프로
- "기본 키"를 음소거 할 수 있습니다.
- "기본 키"를 삭제하거나 리팩토링 할 수 있습니다. 예를 들어, 도서를 ISBN-13으로 변경하는 것은 이전 열을 삭제하고 새 열을 만드는 것만 큼 간단합니다.
새 테이블 :
Table Books
InternalBookId as the primary key
ISBN13 is a new field.
NAME is a simple field.
etc.