2010-12-09 3 views
0

저는 최근에 대부분의 테이블이 기본 키를 통해 서로를 참조하지 않고 추가 합성 필드에 의존하는 응용 프로그램을 사용해야했습니다. 예를 들어 Person (id, name, token) 테이블과 Pet (id, name, personToken) 테이블이 있다고합시다. 한 사람은 애완 동물을 많이 가질 수 있습니다. Pet.personToken은 Person.token을 참조하는 외래 키입니다.참조 테이블에 기본 키 대신 추가 합성 필드 사용

이제 스키마를 작성한 경우 Person.id를 사용하여 해당 레코드를 참조하기 만하면됩니다. 응용 프로그램이 다른 서버 간의 데이터 마이그레이션을 쉽게하기 위해 "토큰"열을 사용한다고 들었습니다.

제 궁금한 점은 상당히 일반적인 것이거나 단순히 이상한 디자인입니까?

+0

기본 키의 데이터 유형, 즉'id'는 무엇이며'tokens' 데이터 유형과 어떻게 비교됩니까? 또한,'id '와 그에 상응하는'토큰 '을 생성하는 논리는 무엇입니까? – InSane

+0

ID는 일반적으로 자동 증가 정수입니다. 토큰은 종종 사용자가 어딘가에 수동으로 입력 한 문자열입니다. –

답변

1

업계 전반에 걸쳐 공통적인지는 말할 수 없지만 과거에 작업 한 많은 응용 프로그램에서 같은 것을 보았습니다.

시스템의 초기 디자인에 충분한 생각이 들어 있지 않기 때문에 이상하게 디자인 된 것 같습니다.

1

이것은 단순히 이상한 디자인 인 것 같습니다.

나는 전에 이와 같은 것을 보지 못했습니다.

이것은 과도한 것으로 보이며 색인/외부 키 구현을 봐야합니다. 또한 ... 토큰 생성기의 구현을보고 싶어하지 않을

내가이 응용 프로그램이 서로 다른 서버간에 쉽게 데이터 마이그레이션을 위해 "토큰"열을 사용하여 말 하였다

.은 복제 용입니까? 아니면 단순히 테스트에서 개발로?

전체적으로 볼 때, 이것은 내가 건너 온 최고의 디자인처럼 보이지 않습니다.

+0

대부분의 경우 토큰은 생성 될 때 각 레코드에 수동으로 할당되는 문자열 (varchar 's)입니다. 필자가 만든 Person.token의 예가 사람의 SSN 또는 임의의 ID와 같은 것일 수 있습니다. 환경이란 개발, 테스트 등을 의미했습니다. –

+0

그럼에도 불구하고 여전히 최상의 접근 방식은 아닌 것 같습니다 ... –

관련 문제