나는 tagging stuff가 여러 번 언급되었지만이 질문에 답할 수는 없다. 설정 태그에이 스레드 Recommended SQL database design for tags or tagging다른 엔티티와 태그를 공유하는 경우 태그 지정을 구현하는 방법은 무엇입니까?
내가 가장 좋은 방법을 볼 수 있습니다에서
은 가능성이Item (item_id, item_content)
Tag (tag_id, tag_title)
TagMapping(map_id, tag_id, item_id)
그러나 나는 두 개의 서로 다른 항목 엔티티 사이의 태그를 공유하려면? 예를 들어, 블로그 게시물 및 기사. (별개의 엔티티인지 아닌지에 대해 논의하지 않겠습니다.) 매우 잘못된 것처럼 보이는 이와 같은 것을합니까? 당신이 (당신의 태그가 비정규 될 MongoDB를 같은 문서 기반 솔루션을 사용 반대)이 스키마에 대한 관계 매핑을 유지하려면
Post (post_id, post_content)
Article (article_id, article_content)
Tag (tag_id, tag_title)
TagMapping(map_id, tag_id, post_id(nullable), article_id(nullable))
각 개체 테이블 (게시/아티클)에 Item 테이블을 참조하는 item_id 열이 있다고 제안 하시겠습니까? –
예, 이것도 기본 키입니다.Post 및 Article 테이블은 기본적으로 Item에 대한 보조 테이블이며 기본 테이블입니다. –
그래서 주어진 패턴과 일치하는 태그가있는 모든 게시물을 원하면 post p, tagmapping tm, tag t에서 distinct p. *를 선택하십시오. 여기서 p.item_id = tm.item_id 및 tm.tag_id = t.tag_id 및 t.label like '% foo %' –