다형성 연관을 사용하여 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_id
및 model
을 모두 포함하는 복합 기본 키 활용:
<code class="language-sql">CREATE TABLE Comments ( id INT, foreign_id INT, model TEXT, PRIMARY KEY (id, model) );</code>
이는 각 foreign_id
및 model
조합의 고유성을 보장하지만 쿼리가 더 복잡해집니다. 쿼리 디자인에 대한 세심한 고려가 필요합니다.
위 내용은 MySQL에서 다형성 연관을 사용하여 참조 무결성을 어떻게 적용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!