2017-10-13 1 views
-1

1< 1 - 이미지> 여러 테이블의 기본 키를 참조하는 하나의 외래 키. primary1 테이블 두 열 primary1_id의 INT 을 primary1_id (10)하는 (11) 및 의 first_name VARCHAR을 갖는다여러 테이블의 기본 키를 참조하는 하나의 외래 키

< 1.1>기본 키이다.

< 1.2> 동일 primary1 테이블 표는 두 개의 열 primary2_id 기본 키이다되는 primary2_id INTLAST_NAME의 VARCHAR을 갖는다 primary2있다.

< 1.3> **은 또한 ** foreign1 테이블 가있는 FULL_NAME은 FULL_NAME이 int입니다 foreign_id INT두 개의 열이 존재하는 외국 여러 테이블의 주를 참조한다primary1_idprimary2_id입니다.

2< 2 - 이미지>외래 키, 만이 모두 을 primary1_id 및 primary2_id 열에서 동일한 값들을 삽입 할 수 FULL_NAME. >

< 2.1 그래서 primary1 다섯 개 항목을 입력하면 테이블과 primary2에서 네 개의 항목.

< 2.2>하는 primary1_id의 1 ~ 5 및 primary2_id의 설정 등 1 ~ 4

< 2.3>에 왜이 외래 키 FULL_NAME이 허용 될 때 설정된다 내가 1에서 4 만 입력하면 기본 키의 테이블에서 사용할 수 있습니까?

+1

질문이 명확하지 않습니다. "유용하다"는 의미를 설명하십시오. FK (외래 키)라는 의미에서 "관계"에 대해 "관계"(잘못)를 사용하는 것 같습니다. 이 디자인의 근원은 그들에 대해 무엇을 말합니까? 당신은 무엇을 이해합니까? FK는 값이 PK/UNIQUE로 다른 곳에 나타나야한다고 말합니다. 왜 그걸 알만큼 충분하지 않습니까? [텍스트는 텍스트를 사용하고 이미지/링크는 사용하지 마십시오.] (https://meta.stackoverflow.com/q/285551/3404097). – philipxy

+1

"외래 키 제약 조건은 모든 기본 키 제약 조건 테이블에서 공통적으로 사용할 수있는 기본 ID 만 보여줍니다"는 명확하지 않습니다. 더 명확하게 적어주십시오. 더 많은 단어와 문장을 사용하십시오. 사물을 분명하게 가리켜 라. 한 문장으로 그것을 과장하려고하지 마십시오. translate.google.com을 사용해보세요. 최근 AI를 통해 개선되었습니다. – philipxy

+0

안녕하세요. "왜"라고 말할 때 * FKs *가 full_name 값을 PKs로 표시해야한다는 것을 알고 있으므로 어떤 종류의 * 비즈니스 상황 *이 그런 식의 디자인을 가질 것이라고 생각하십니까? 그러나 실제로는 분명히 말하지 않습니다. (내 마지막 코멘트의 다른 부분도 참고하십시오.) 일상 생활에서 각각의 성은 이름과 성으로 제한되기 때문에이 컬럼 이름을 만들었습니다. 그러나 각 팀원은 선수와 어른 사이에 있어야합니다. 추신 : sqlvogel의 대답이 간결하고 표준적이고 공식적인 방식으로 테이블을 제시하는 방법을 살펴보십시오. – philipxy

답변

2

제 경험상보기 드문 일이지만 "B와 C 모두 있어야 함"과 유사한 의미로 특정 비즈니스 규칙을 구현하는 방법으로 잠재적으로 의미가 있습니다.

가능한 한 가지 예 : 직원이기도하고 할인 대상인 고객을 식별하는 StaffDiscount 테이블. 이러한 테이블에는 Customer 테이블과 Employee 테이블을 모두 참조하는 단일 외래 키가있을 수 있습니다.이는 공통 키가 고객과 직원을 식별하는 데 사용된다고 가정합니다.

CREATE TABLE StaffDiscount 
(CustomerEmployee INT NOT NULL PRIMARY KEY /* Same key identifies customer and employee */, 
    FOREIGN KEY (CustomerEmployee) REFERENCES Customer (CustomerNum), 
    FOREIGN KEY (CustomerEmployee) REFERENCES Employee (EmployeeNum)); 
+0

예제를 얻고 있습니다 .....하지만 간단히 설명 할 수 있습니까? ...... –

+0

몇 가지 예제 SQL 추가 – sqlvogel

0

예 하나 이상의 테이블간에 관계를 생성하려는 경우 가능합니다. 외래 키의 존재는 해당 테이블과 관련된 모든 테이블의 존재를 나타냅니다. 또한 단일 관계형 쿼리에서 해당 환경의 데이터를 검색하는 데 도움이됩니다.

관련 문제