> 데이터 베이스 > MySQL 튜토리얼 > MySQL에서 다형성 연관을 사용하여 참조 무결성을 어떻게 적용할 수 있습니까?

MySQL에서 다형성 연관을 사용하여 참조 무결성을 어떻게 적용할 수 있습니까?

Barbara Streisand
풀어 주다: 2025-01-16 11:42:58
원래의
367명이 탐색했습니다.

How Can I Enforce Referential Integrity with Polymorphic Associations in MySQL?

다형성 연관을 사용하여 MySQL에서 참조 무결성 유지

MySQL의 외래 키 제약 조건은 관계형 데이터베이스 무결성에 매우 중요합니다. 그러나 단일 외래 키가 여러 테이블을 참조하는 다형성 연관을 사용하여 참조 무결성을 관리하는 것은 고유한 과제를 제시합니다.

다형성 관계와 데이터 무결성

Comments 열로 식별되고 다양한 애플리케이션 부분(예: 블로그 게시물, 이미지)과 관련된 댓글이 포함된 model 테이블을 생각해 보세요. 다음과 같이 외래 키 제약 조건을 직접 적용합니다.

<code class="language-sql">FOREIGN KEY (`foreign_id`) REFERENCES blogposts(`id`)</code>
로그인 후 복사

blogposts 열의 값을 무시하고 model에 대해서만 유효성을 검사하므로 충분하지 않습니다. MySQL은 열 값을 기반으로 하는 조건부 외래 키 제약 조건에 대한 기본 지원이 부족합니다.

다형성 연관 처리 전략

다형성 관계에서 데이터 무결성을 유지하려면 다음 대안을 고려하십시오.

1. 슈퍼 테이블 접근 방식:

모든 콘텐츠 유형이 상속되는 Commentable 슈퍼 테이블을 만듭니다. 그런 다음 각 콘텐츠 유형 테이블은 외래 키를 통해 Commentable을 참조합니다.

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

CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, foreign_id INT NOT NULL, FOREIGN KEY (foreign_id) REFERENCES Commentable(id) );

CREATE TABLE BlogPosts ( blogpost_id INT PRIMARY KEY, FOREIGN KEY (blogpost_id) REFERENCES Commentable(id) );

CREATE TABLE UserPictures ( userpicture_id INT PRIMARY KEY, FOREIGN KEY (userpicture_id) REFERENCES Commentable(id) );</code>
로그인 후 복사

2. 복합 기본 키 전략:

foreign_idmodel을 모두 포함하는 복합 기본 키 활용:

<code class="language-sql">CREATE TABLE Comments ( id INT, foreign_id INT, model TEXT, PRIMARY KEY (id, model) );</code>
로그인 후 복사

이는 각 foreign_idmodel 조합의 고유성을 보장하지만 쿼리가 더 복잡해집니다. 쿼리 디자인에 대한 세심한 고려가 필요합니다.

위 내용은 MySQL에서 다형성 연관을 사용하여 참조 무결성을 어떻게 적용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿