>데이터 베이스 >MySQL 튜토리얼 >외래 키가 서로 다른 테이블의 여러 기본 키를 참조할 수 있습니까? 가장 좋은 대안은 무엇입니까?

외래 키가 서로 다른 테이블의 여러 기본 키를 참조할 수 있습니까? 가장 좋은 대안은 무엇입니까?

DDD
DDD원래의
2025-01-11 08:16:41310검색

Can a Foreign Key Reference Multiple Primary Keys in Different Tables, and What's the Best Alternative?

교차 테이블 외래 키 참조

이 기사에서는 여러 다른 테이블의 기본 키를 참조하기 위해 한 테이블에 외래 키를 생성할 수 있는 가능성을 살펴봅니다. 특히, 질문자가 제시한 시나리오를 중심으로 진행됩니다.

장면해석

질문자는 두 개의 테이블, employees_ceemployees_sn을 갖고 있으며 각 테이블에는 자체 기본 키 열이 있습니다. 또한 deductionsemployees_ce의 기본 키를 참조하기 위해 외래 키가 필요한 employees_sn라는 세 번째 테이블도 있습니다. 제공된 예는 이러한 상황을 더욱 잘 보여줍니다.

<code>employees_ce
--------------
empid   name
khce1   prince

employees_sn
----------------
empid   name
khsn1   princess</code>
<code>deductions
--------------
id      name
khce1   gold
khsn1   silver</code>

솔루션

질문자의 목표는 기술적으로 달성 가능하지만 데이터베이스 설계에 있어 모범 사례는 아닙니다. 권장되는 방법은 두 테이블을 연결하는 중간 테이블을 정의하는 것입니다. 예를 들면 다음과 같습니다.

<code>employees
----------------
empid   name

employees_types
---------------
empid   type
khce1   ce
khsn1   sn</code>

이 설정을 사용하면 deductions 테이블에 employees 테이블의 empid 열을 참조하는 외래 키가 있어 세 테이블 간의 간단한 관계가 생성됩니다.

<code>deductions
--------------
id      name
khce1   gold
khsn1   silver</code>

중간표 방식의 장점

중간 테이블 방식은 다음과 같은 장점을 제공합니다.

  • 참조 직원에게 단일 참조 지점을 제공하여 데이터 관리를 단순화합니다.
  • 외래 키가 여러 기본 키를 참조하여 불일치와 데이터 무결성 문제를 일으킬 수 있는 문제를 방지합니다.
  • deductions 테이블을 변경하지 않고도 다른 직원 유형을 추가할 수 있어 유연성과 확장성이 가능합니다.

위 내용은 외래 키가 서로 다른 테이블의 여러 기본 키를 참조할 수 있습니까? 가장 좋은 대안은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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