2017-12-15 1 views
1

부모 테이블이 테이블의 필드에 의해 정의되는 유연한 외래 키를 사용할 수 있다면 관심이 있습니다 -이 테이블을 광범위하게 검색 할 수 있지만 올바른 용어를 찾았는지 확실하지 않습니다. 대답을 찾으려면 도와주세요! 다음 예제는 문제를 충분히 설명하기를 바랍니다. SQL Server 2016에서 참조 용으로 작업하고 있습니다.SQL Server 유연한 외래 키

감사합니다.

예 : 동일한 계층 구조에서 3 개의 테이블 (A, B 및 C라고 부름)이 있습니다. 그런 다음 처음 세 테이블 중 하나와 관련된 데이터가 포함 된 네 번째 테이블 (D)이 있습니다. A, B 또는 C 중 하나에 외래 키 관계가있는 테이블 D의 3 가지 버전을 갖는 대신 외래 키를 가질 수 있습니다. D에서 외래 키를 사용하여 하나의 필드가 대상 테이블 (A, B 또는 C)을 정의한 다음 관련 테이블의 id 값을 포함하는 두 번째 필드.

그래서 테이블 D는 다음과 같이 보일 것이다 :

id ForeignTableName ForeignTableID DataPoint1 
1  A    3    xxx 
2  C    6    xxx 
3  B    2    xxx 
4  B    5    xxx 
5  A    10    xxx 
+0

SQL Server는 이러한 제약 조건 생성을 지원하지 않습니다. – Sami

+0

필자가 작성하고자하는 SQL에 대해 궁금 할 것입니다. 'FROM a inner join d. a.id = d.ForeignTableID와 d.ForeignTableName = 'A''는'FROM a inner join a.id = d.aid'보다 훨씬 좋고, 그 중 하나만을 보장합니다. 필드가 채워 졌습니까? –

답변

1

외래 키 제약 조건이 작업을 수행 할 수 없습니다. 이러한 종류의 RI는 함수를 호출하는 CHECK CONSTRAINT 또는 트리거를 사용하여 시행 할 수 있습니다.