2014-08-28 4 views
0

나는 테이블 가입, 거주자, 주소가 있습니다. 가입에 대해 더 많은 주소와 점유자를 찾아야합니다. 가입에 대한 빠른 지수테이블에서 여러 레코드를 사용할 수 있는지 여부를 확인하는 방법은 무엇입니까?

내가 가지고있는 다음과 같은 세부

flags index name   st area cnt field name 
      addressoccupant  999  2 + Addressid 
             + Occupantid 

    pu subscription  999  1 + subscriptionid 

주소 테이블 - addressid 차 고유의 점유자 테이블 -Occupantid은 내가 어떤 복수를 찾을 수없는 쿼리 할 때

독특한 primnary입니다 주소 및 점유자에 대한 구독하지만 난 그것이 여러 주소와 점유자에 대한 subscritpion을 가질 수 있는지 확인해야합니다.

이 방법을 알려주십시오.

+0

여러 결과를 반환 할 수 있다고 생각되는 쿼리의 예를 보는 것이 도움이됩니다. 나는 아래의 예에서 어떤 것을 던져 버렸지 만, 그것은 당신이 묻고있는 것이 아닐 수도 있습니다. –

+0

인덱스 정보를 보면 가입이 여러 주소 또는 점유자를 가질 수 있는지 확인할 수 있습니다. – user3715001

답변

0

주어진 인덱스를 사용하면 특정 addressId 또는 점유자 ID에 대해 여러 구독 레코드를 가질 수 있습니다.

"addressoccupant"색인은 고유하지 않으며 addressId와 occupantId 필드의 조합에서만 고유합니다.

중복을 방지하려면 각 필드에 대해 고유 색인을 정의해야합니다. '구독'색인과 유사하지만 '기본'속성이 없습니다.

중복을 방지 할 수는 있지만 실제로는 ("거주자"로 매핑되는) 사람들은 종종 여러 개의 주소를 가지며 주소에는 종종 여러 명이 거주하고 있습니다. addressId와 occupantId의 조합은 상당히 고유 할 수 있지만 개별 필드를 고유하게 만드는 것은 그리 행복하지 않을 수 있습니다. 많은 것은 응용 프로그램과 실제 데이터에 따라 다릅니다.

는 (그런 사람이 있다면 당신은 아마이 시스템의 "데이터 아키텍트 '의 도움을 받아야합니다.)

쿼리가 여러 레코드를 반환하는 경우 당신이 결정하는 모호한 키워드를 사용할 수 있습니다이므로 :

find subscription no-lock where addressid = 34 no-error. /* "34" is just a made up example... */ 
if available subscription then 
    message "found one!". 
else if ambiguous subscription then 
    message "more than 1 :(". 
else 
    message "no records". 
관련 문제