2013-06-30 2 views
0

은 하나의 열이있는 데이터베이스 테이블이 있고 그것이 PK라고 가정합니다. 더 구체적인 일을하기 위해서 이것은 장고 프로젝트이고 데이터베이스는 mysql에있다.기존의 열을 함수로 변환하는 것보다 더 많은 열을 추가하는 데이터베이스 설계

모든 고유 값이있는 추가 열이 필요한 경우 고유 한 정수가있는 새로운 UniqueField를 만들거나 해시와 비슷한 함수를 작성하여 기존의 각 행 (모델 인스턴스)에 대한 기존 PK를 새로운 고유 키로 변환해야합니까? 변하기 쉬운. 현재 PK는 varchar/& 문자열입니다.

새로운 열을 만들면 더 많은 메모리를 소비하지만 새로운 기능을 작성하고 필드를 자주 변환하는 것이 단점을 가지고 있다고 생각합니다. 어떤 아이디어?

+0

기본 키는 중복을 가질 수 없습니다. 이는 해당 속성 중 하나입니다. 정확히 무엇을하려고합니까? 행은 모델이 아닙니다 (표는 가장 비슷한 값입니다). 행은 모델의 _ 인스턴스 _이됩니다. 솔루션에 대한 도움을 요청하는 대신 해결하려는 문제를 설명해야합니다. –

+0

현재의 PK는 큰 크기의 문자열입니다. 단지 PK 만 사용하는 것의 비용/이점을 알기를 원합니다. 해시와 유사한 번호로 변환하는 것보다 훨씬 뛰어납니다. –

답변

1

문자열 값이있는 PK는 현대 데이터베이스 시스템에서 문제가되지 않아야합니다. PK는 자동으로 인덱싱되므로 table1.pk = 'long-string-key'과 같은 조건으로 조회를 수행하면 문자열 비교가 아니라 인덱스 조회가됩니다. 따라서 키 값의 길이에 관계없이 문자열 값의 PK를 갖는 것이 좋습니다.

모든 고유 값이있는 추가 열이 필요한 경우에는 새로운 열을 추가해야합니다.

관련 문제