>데이터 베이스 >MySQL 튜토리얼 >MySQL은 다형성 연관에 대해 조건부 외래 키 제약 조건을 적용할 수 있습니까?

MySQL은 다형성 연관에 대해 조건부 외래 키 제약 조건을 적용할 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-16 11:46:58992검색

Can MySQL Enforce Conditional Foreign Key Constraints for Polymorphic Associations?

MySQL 조건부 외래 키 제약 조건: 과제 및 해결 방법

데이터베이스 설계에서는 데이터 무결성이 매우 중요합니다. 외래 키 제약 조건은 테이블 간의 관계를 유지하는 데 사용되지만 경우에 따라 특정 열 값을 기반으로 제약 조건을 조건부로 적용해야 할 수도 있습니다. 예를 들어, 블로그 게시물, 사용자 사진 등 다양한 엔터티에 대한 댓글을 저장하는 "댓글" 테이블을 디자인합니다.

MySQL은 조건부 외래 키 제약 조건을 지원합니까?

지원되지 않습니다. MySQL의 외래 키 제약 조건은 단일 테이블을 명시적으로 참조해야 하며, 참조 테이블의 모든 행이 참조 테이블의 일치하는 행을 갖도록 보장해야 합니다. 조건부 제약 조건은 관계형 데이터베이스 디자인의 원칙을 위반합니다.

해결책: 다형성 연관 및 "슈퍼 테이블"

이 문제를 해결하려면 "다형성 연관" 기술을 사용하는 것이 좋습니다. 이 기술에는 외래 키가 참조하는 모든 엔터티의 공통 속성을 저장하는 "하이퍼테이블"을 만드는 작업이 포함됩니다. 이 예에서는 "설명 가능한 엔터티" 테이블을 만듭니다.

<code class="language-sql">CREATE TABLE Commentable (
  id SERIAL PRIMARY KEY
);</code>

귀하의 항목(예: "블로그 게시물" 및 "사용자 이미지")은 이 하이퍼테이블의 하위 유형이 됩니다.

<code class="language-sql">CREATE TABLE BlogPosts (
  blogpost_id INT PRIMARY KEY, -- 注意,此 ID 不是自动生成的
  ...
  FOREIGN KEY (blogpost_id) REFERENCES Commentable(id)
);

CREATE TABLE UserPictures (
  userpicture_id INT PRIMARY KEY, -- 注意,此 ID 不是自动生成的
  ...
  FOREIGN KEY (userpicture_id) REFERENCES Commentable(id)
);</code>

구현 세부정보:

  • 새 항목을 하위 유형 테이블에 삽입하기 전에 "설명 가능한 항목" 테이블에 새 행을 삽입하여 고유한 "ID"를 생성합니다.
  • 생성된 "id"를 하위 유형 테이블에 삽입할 때 "외부 키"로 사용합니다.

이 접근 방식은 다양한 엔터티 유형을 수용하고 단일 "설명" 테이블에 설명을 저장할 수 있는 유연성을 유지하면서 참조 무결성을 보장합니다.

위 내용은 MySQL은 다형성 연관에 대해 조건부 외래 키 제약 조건을 적용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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