전에는 단순 해 보였지만 다시는 내 머리를 긁적 거리게했습니다.MySQL : 다른 테이블을 참조하는 한 테이블의 외래 키 두 개
user_id (PK) | username| email | something
... 한 사용자가 다른 사용자를 볼 경우에 "전망"에 대한 테이블 :
view_id (PK) | viewer_id | viewed_id | view_date
은 "viewer_id"와 "viewed_id"모두를 나는 사용자를위한 테이블이 user_ids를 사용하면 사용자가 뷰어이거나 인스턴스를 볼 때 인스턴스를 개별적으로 검색 할 수 있습니다.
처음에는이 두 열 모두 외래 키일 것이라고 생각했지만 내 schema.yml 파일 (Doctrine 1.2 사용)에 테이블을 만들고 두 개의 별도 외부 관계 (각 열에 하나씩)를 지정 했으므로 Doctrine은이 두 테이블 (user_id> viewer_id) 사이에 처음 나열된 외부 관계 만 고려한다고 생각합니다.
이것이 올바른 MySQL 동작인지, Doctrine의 문제인지, 또는 내가 접근하고있는 방식의 문제인지 걱정할 필요가 없는지 이제 혼란스러워집니다! 한 테이블의 다른 외래 키가 다른 테이블의 같은 열로 매핑 될 수 있습니까? JOIN이 여전히 user_id를 통해 "보기"에 대한 액세스 권한을 제공한다는 점을 감안할 때 논리적입니까? 내가 틀렸어?
감사합니다.
편집 - 스키마 파일 :
User:
relations:
View: {class: View, local: user_id, foreign: viewer_id, type: many, foreignType: one, alias: View, foreignAlias: User}
View: {class: View, local: user_id, foreign: viewed_id, type: many, foreignType: one, alias: View, foreignAlias: User}
... only difference is viewer_id/viewed_id
스키마 파일의이 부분을 표시 할 수 있습니까? 어쩌면 제대로 설정하지 않은 것일 수 있습니다. –
스키마 파일이 추가되었습니다. – Tom