에, 내가 예를 들어 확인 (/ 트리거 O를 승) :고유 제한 문제를 설명하기 위해 "일대 다"관계
tag_bundle 하나의 구성 또는 하나 개 이상의 태그를. 고유 한 태그 조합은 고유 한 tag_bundle에 매핑 할 수 있으며 반대의 경우도 마찬가지입니다.
tag_bundle tag tag_bundle_relation
+---------------+ +--------+ +---------------+--------+
| tag_bundle_id | | tag_id | | tag_bundle_id | tag_id |
+---------------+ +--------+ +---------------+--------+
| 1 | | 100 | | 1 | 100 |
+---------------+ +--------+ +---------------+--------+
| 2 | | 101 | | 1 | 101 |
+---------------+ +--------+ +---------------+--------+
| 102 | | 2 | 101 |
+--------+ +---------------+--------+
| 2 | 102 |
+---------------+--------+
태그 (101) 및 태그 (102)
에서 정확히 동일한 조합을 갖는 다른 tag_bundle 없을 수 101 태그 (100)와 태그로부터 정확히 동일한 조합을 갖는 다른 tag_bundle있을 수 없다 SQL을 실행할 때 이러한 고유 한 제약 조건을 어떻게 보장 할 수 "동시에" !! 이다 는 가 트리거 또는 명시 적 잠금 이외의 다른 해결책이, 동시에 정확히 같은 태그 조합이 작동하지 않는 테이블에 간단한 고유 제한 조건을 추가
두 번들을 추가 방지합니다.
나는이 간단한 방법으로 만 왔습니다 : 태그 조합을 문자열로 만들고, 그것을 고유 한 열로 만듭니다.
tag_bundle (unique on tags) tag tag_bundle_relation
+---------------+-----------+ +--------+ +---------------+--------+
| tag_bundle_id | tags | | tag_id | | tag_bundle_id | tag_id |
+---------------+-----------+ +--------+ +---------------+--------+
| 1 | "100,101" | | 101 | | 1 | 101 |
+---------------+-----------+ +--------+ +---------------+--------+
| 100 | | 1 | 100 |
+--------+ +---------------+--------+
하지만 좋은 방법 :(
tab_id가 둘 이상의 번들에 참여하도록 허용 하시겠습니까? 예를 들어,'tag_bundle_id = 2'는'tags = (100, 200)'입니까? super-sets/subsets는'tag_bundle_id = 3는 태그 (100, 101, 102)를 가졌습니까? ' –
tag_bundle_id = 2 태그 = (100, 200)이 허용되면 tag_bundle_id = 3 태그도 허용됩니다 (100, 101, 102). – elgcom
그래서 하위 세트에 예 또는 아니요? – MkV