집 >데이터 베이스 >MySQL 튜토리얼 >외래 키가 여러 기본 키를 동시에 참조할 수 있나요?
이 예에서는 단일 테이블이 여러 다른 테이블의 기본 키를 참조해야 하는 외래 키 관계 생성이라는 일반적인 데이터베이스 설계 문제를 살펴봅니다. 특정 시나리오에는 deductions
및 employees_ce
테이블 모두에 연결해야 하는 employees_sn
테이블이 포함됩니다.
문제는 deductions
의 외래 키가 employees_ce
및 employees_sn
의 기본 키를 동시에 직접 참조할 수 있는지 여부입니다. 대답은: 표준 관계형 데이터베이스에서는 직접적이지 않다는 것입니다. 단일 외래 키는 단일 기본 키만 참조할 수 있습니다.
제안된 솔루션은 이 문제를 해결하기 위해 잘 구조화된 상속 모델을 활용합니다.
employees
, employees_ce
, employees_sn
테이블은 상속 계층 구조를 나타냅니다. employees
는 기본 테이블이고, employees_ce
과 employees_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_ce
및 employees_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_id
의 deductions
은 해당 직원이 employees
또는 employees_ce
에 추가 정보를 가지고 있는지 여부에 관계없이 employees_sn
의 직원 기록으로 연결됩니다. 이러한 디자인은 관계를 효율적으로 관리하고 데이터 일관성을 유지합니다.
위 내용은 외래 키가 여러 기본 키를 동시에 참조할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!