>데이터 베이스 >MySQL 튜토리얼 >외래 키가 여러 기본 키를 동시에 참조할 수 있나요?

외래 키가 여러 기본 키를 동시에 참조할 수 있나요?

Barbara Streisand
Barbara Streisand원래의
2025-01-11 10:21:43127검색

Can a Foreign Key Reference Multiple Primary Keys Simultaneously?

데이터베이스 설계에서 복잡한 외래 키 관계 처리

시나리오

이 예에서는 단일 테이블이 여러 다른 테이블의 기본 키를 참조해야 하는 외래 키 관계 생성이라는 일반적인 데이터베이스 설계 문제를 살펴봅니다. 특정 시나리오에는 deductionsemployees_ce 테이블 모두에 연결해야 하는 employees_sn 테이블이 포함됩니다.

문제와 해결 방법

문제는 deductions의 외래 키가 employees_ceemployees_sn의 기본 키를 동시에 직접 참조할 수 있는지 여부입니다. 대답은: 표준 관계형 데이터베이스에서는 직접적이지 않다는 것입니다. 단일 외래 키는 단일 기본 키만 참조할 수 있습니다.

제안된 솔루션은 이 문제를 해결하기 위해 잘 구조화된 상속 모델을 활용합니다.

상속 기반 접근 방식

employees, employees_ce, employees_sn 테이블은 상속 계층 구조를 나타냅니다. employees는 기본 테이블이고, employees_ceemployees_sn은 이를 상속받은 특수 테이블입니다.

데이터베이스 구조:

<code class="language-sql">employees (id INT PRIMARY KEY, name VARCHAR(255))
employees_ce (id INT PRIMARY KEY, ce_specific_attribute VARCHAR(255), employee_id INT, FOREIGN KEY (employee_id) REFERENCES employees(id))
employees_sn (id INT PRIMARY KEY, sn_specific_attribute VARCHAR(255), employee_id INT, FOREIGN KEY (employee_id) REFERENCES employees(id))</code>

해결책:

employees_ceemployees_sn에 대한 직접 링크 대신 deductions 테이블은 공통 상위 테이블 employees:

을 참조해야 합니다.
<code class="language-sql">deductions (id INT PRIMARY KEY, employee_id INT, deduction_amount DECIMAL(10,2), ..., FOREIGN KEY (employee_id) REFERENCES employees(id))</code>

이 접근 방식은 참조 무결성을 보장하고 중복을 방지합니다. employee_iddeductions은 해당 직원이 employees 또는 employees_ce에 추가 정보를 가지고 있는지 여부에 관계없이 employees_sn의 직원 기록으로 연결됩니다. 이러한 디자인은 관계를 효율적으로 관리하고 데이터 일관성을 유지합니다.

위 내용은 외래 키가 여러 기본 키를 동시에 참조할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.