0

(좋아하는 프레임 워크의 이름) :관련없는 개체를 연결하지 못하도록 복합 기본 키를 사용할 수 있습니까? 나는의 커플 모델이있는 경우

# pseudo-code 
class Fruit 
    primary_key = CompositeKey(tenant_id, object_id) 
    weight = DecimalField() 

class Restaurant 
    primary_key = CompositeKey(tenant_id, object_id) 
    haz_cheeseburger = BooleanField() 
    fruit_available = ForeignKey(Fruit) # <-- important part 

불가능 TenantA에 기본 키 포인트 tenant_id 일부인 Resaturant 삽입 할 수 있도록하는 데이터베이스 제약 조건을 가질 수 있습니다 그리고 누구입니까 fruit_availabletenant_idTenantB을 가리 킵니다. 기본적으로, 다른 임차인에게 속한 물건을 실수로 연관시키는 것을 방지하십시오.

답변

1

올바르게 이해했다면 외래 키를 설정할 수 있습니다. 레스토랑 테이블에서

FOREIGN KEY  (tenant_id, fruit_available) 
    REFERENCES fruit (tenant_id, fruit_available) 

그것은 당신의 DBMS에 부분적으로 의존하고 fruit (tenant_id, fruit_available)에 어떤 종류의 고유 제한 조건이 있는지 여부에 대한 부분이다.

그래도 식당의 기본 키의 일부로 잘못된 tenant_id를 사용하는 것을 막을 수는 없습니다.

+0

내가 궁금해하는 점은 '식당'과 'TenantA'를 'tenant_id'로 연결하고 'TenantB'를 '과일'으로 연결하는 것을 막을 수 있는지 여부입니다. 'tenant_id'. – orokusaki

+0

@orokusaki : 내 대답을 시도 했습니까? 어떻게 된 거예요? –

+0

실제로 현재 코드에서 복합 키를 사용할 수있는 기능이 없기 때문에 추상적 인 방법과 실제 코드 예제 등을 묻는 것입니다. 장고는 (예 : 천천히) 복합 PK를 코어 프레임 워크로 가져옵니다. – orokusaki