대학에서 마지막 강의 중 하나 (학생)는 강사가 데이터베이스 (데이터가 필요한 경우 MySQL 서버)와 데이터베이스를 데이터 소스로 사용하는 소형 클라이언트 앱을 개발하도록 요청했습니다.
요구 사항 중 하나는 자격 증명 열 (모든 테이블의 PK)이 순차적이어야한다는 것입니다 (강사 단어별로). 즉, 테이블 행이 삭제되면 후속 삽입에서 PK를 재사용해야합니다. RDBMS, PK 및 ID 열에 대한 평균 지식이 있습니다. 내가 이해 한 바에 따르면, ID 열은 행을 삽입 할 때 DB가 PK를 자동 생성하고 더 이상 아무것도하지 않도록하는 방법 일뿐입니다. 그리고 식별 컬럼 값은 자연 속성이 아닌 한 어떤 식 으로든 행 속성과 관련되어서는 안됩니다.
이 요구 사항 (엄격히 순차적 인 ID 열)은 나에게 의심되었습니다. ID가 순차적이지 않은 경우 (삭제로 인한 간격이있는 경우) 강사에게 무엇이 잘못되었는지 묻려고했지만 "사용자에게 편리하고 데이터베이스를 유지 관리하는 DB 관리자에게 유용합니다"와 같은 매우 추상적 인 답변을 얻었습니다. 구체적인 예가 없습니다. "사용자에게 편리"라는 주장은 비즈니스 영역에서 의미가 없기 때문에 어리석게 들립니다.
따라서 이러한 이유가 진짜인지 궁금합니다. ID 열이 시드되어야하는 경우 (ID 공간이 소진 된 경우) 만 생각할 수 있습니다. 그러나 이것은 식별 열 유형이 잘못 선택되었을 때보 다 디자인 문제입니다. int
대신 간단 하지 bigint
않거나 uniqueidentifier
테이블에 10 억 행이 포함되어 있습니다. ID 열이 클러스터 된 인덱스라고 가정합니다. ID 열의 간격이 인덱스 성능에 영향을 줄 수 있습니까? 어쩌면 내가 알지 못하는 각 삭제 후에 자동 ID 열이 다시 시드되는 다른 실제 이유가 있습니까?
미리 감사드립니다!