모든 엔티티 유형에 공통 기본 유형을 사용할 수 있으며 해당 기본 유형을 통한 관계를 처리 할 수 있습니다. 이는 사실상 모든 ORM 도구가 판별 자 열과 외래 키 관계를 사용하여 수행 할 수있는 작업입니다 (CLSA, 그래도).
이 방법을 사용하면 하나의 관계 테이블 만 남게됩니다.
편집 : 이이 설정 방법은 다음과 같습니다
CREATE TABLE base (
id int(10) unsigned NOT NULL auto_increment,
type enum('type1','type2') NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE type1 (
id int(10) unsigned NOT NULL,
PRIMARY KEY (id),
CONSTRAINT FK_type1_1 FOREIGN KEY (id) REFERENCES base (id)
);
CREATE TABLE type2 (
id int(10) unsigned NOT NULL,
PRIMARY KEY (id),
CONSTRAINT FK_type2_1 FOREIGN KEY (id) REFERENCES base (id)
);
CREATE TABLE x_relations (
from_id int(10) unsigned NOT NULL,
to_id int(10) unsigned NOT NULL,
PRIMARY KEY (from_id,to_id),
KEY FK_x_relations_2 (to_id),
CONSTRAINT FK_x_relations_1 FOREIGN KEY (from_id) REFERENCES base (id),
CONSTRAINT FK_x_relations_2 FOREIGN KEY (to_id) REFERENCES base (id)
ON DELETE CASCADE ON UPDATE CASCADE
);
참고하여 ORM 솔루션 행 (type1
또는 type2
)에 대한 올바른 하위 유형을 찾는 데 도움이됩니다 판별 열 (type
). ORM 문서에는 다형성을 기본 테이블과 매핑하는 방법에 대한 섹션이 있어야합니다.
그리고 여전히 다른 엔티티 테이블을 유지할 수 있습니까? 아니면 어떻게 든 모든 속성을 단일 테이블에 맞출 필요가 있습니까? 여기 조금 혼란 스럽네 ... – Yuval