이 예제에서는 여러 소스의 출력을 허용하는 시스템을 빌드하려고하지만이 소스는 아직 빌드되지 않았습니다. 출력 "모듈"은 하나의 구성 요소가 될 것이고, 각 소스는 나중에 빌드되고 확장 될 자체 구성 요소가 될 것입니다. MySQL, 옵션 다중 외래 키 재구성 방법
목표는 쉽게 더 많은 소스가 내장되어 이후로에 확장되는 동안 출력 테이블에서 내 출력 모듈 디스플레이 데이터를 확인하는 것입니다 :
는 여기에 내가 MySQL 워크 벤치에서 설계 예입니다. 또한 새 소스를 추가 할 때 스키마 업데이트를 최소화하려고합니다. 현재 소스마다 새 테이블을 추가 한 다음 출력 테이블에 외래 키를 추가해야합니다.
더 좋은 방법이 있나요? JOIN 쿼리에 IFNULL이 포함되어있을 수 있으므로이 NULL 가능 외래 키에 대해 어떻게 느끼는지 알 수 없습니다.
생각하십니까?
EDIT 1 : 해설
I 출력 테이블의 데이터를 이용하여 그리드를 표시한다. 출력 테이블은 그리드의 모든 항목에 대한 일반 데이터를 포함하고 기본적으로 output_source_X 테이블의 어 그리 게이터 역할을합니다 :
output(id, when_added, is_approved, when_approved, sort_order, ...)
output_source_X 테이블은 소스 고유의 추가 데이터가 포함됩니다. 예를 들어, 출력 소스 테이블 중 하나 페이스 북의 게시물입니다 가정 해 봅시다 때문에,이 표는 페이스 북의 API에 고유 한 열이 포함됩니다 : 열이 트위터에 대해 특정 그래서,
output_source_facebook(id, from, message, place, updated_time, ...)
는 또 다른 트위터 될 수를 :
를output_source_twitter(id, coordinates, favorited, truncated, text, ...)
세 번째 출력 원본 테이블은 Instagram 일 수 있으므로 output_source_instagram 테이블에는 Instagram에 특정한 열이 포함됩니다.
출력 항목이 Facebook, Twitter, Instagram 등의 게시물인지에 따라 출력 테이블과 하나의 output_source_X 테이블 중 하나만 외래 키 관계가 있습니다. 따라서 게시물 NULL 가능 외국 키.
output table
------------
foreign key (source_id_facebook) references output_source_facebook(id)
foreign key (source_id_twitter) references output_source_twitter(id)
foreign key (source_id_instagram) references output_source_instagram(id)
나는 나의 관심사는 내가 많이 스키마를 업데이트 할 필요없이뿐만 아니라 다른 소스를 추가 할 있기 때문에 싶습니다으로이 같은 모듈되지 않는 것입니다 같아요. 현재, 외래 키가 null이 아닌 것을 사용하여 output_source_X를 출력 테이블에 조인해야합니다.
정말 고맙습니다. 제 질문에 맞춰 주셔서 감사합니다. 귀하의 질문에 대한 대답으로 원래의 질문을 편집했습니다. 미리 감사드립니다. –
처리해야 할 부분이 많지만 EAV에 대한 귀하의 제안이 실현 가능할 것으로 생각됩니다. 이전에 비슷한 패턴을 사용 했었지만 (여기서는 그 패턴을 알지 못했습니다), 여기에 적용 할 생각은 없었습니다. 어쨌든 여분의 자원에 감사드립니다. –