개인 웹 사이트의 CMS 시스템에서 작업하고 있습니다 (주로 학습 활동으로). Atm 나는 3 개의 테이블을 가지고있다 : 하나는 기사 용이고, 하나는 태그 용이고 다른 하나는 여러 개의 태그를 가질 수있는 조인 테이블이다.고유하지 않은 열이있는 mySQL 테이블에 중복 항목 피하기
세 개의 열로 구성과 내가 문제가 오전 테이블 -
내 문제는 기사가 여러 번 나타날 수 있으며, 태그는 여러 번 나타날 수 있다는 사실에서 유래article_tags: id (auto_increment), article_id, tag_id
, 그러나 두 개의 주어진 조합은 한 번만 나타납니다. 즉, 각 기사는 단일 태그에 대한 하나의 참조 만 가져야합니다. 현재는 INSERT ID가 다른 행을 "복제"할 수 있지만 article_id를하고 tag_id의 조합은 동일합니다 :
id , article_id, tag_id
1 1 1
2 1 2
3 2 1
4 1 1 <- this is wrong
나는이 조합을 포함하는 레코드 PHP 코드 확인,하지만 난 할 수 가능한 경우 SQL에서 수행하는 것을 선호합니다 (그렇지 않은 경우 또는 PHP를 사용하여 바람직하지 않은 경우). ID가 다르며 고유 한 열을 설정할 수 없기 때문에 INSERT IGNORE 및 ON DUPLICATE와 같은 항목이 작동하지 않습니다.
저는 아주 새로운 mySQL입니다. 그래서 바보 같은 짓을하고 있다면 올바른 방향으로 나를 가리켜주세요.
감사
이라고도
매우 간결한 대답입니다. SELECT 쿼리에 오버 헤드가 추가되므로 # 3이 최악이라고 올바르게 이해한다면? 그리고 그것은 # 1과 동일하지만 기존의 auto_increment 형태로 여분의 (불필요한?) 열이 있기 때문에 # 2가 더 나쁩니 까? – ProFishChris
더 간결하게. 내 편집 된 대답을 참조하십시오 –
더 자세한 그래도! 혼란을 가져 미안하지만, 나는 당신이 그들을 구현하는 방법보다는 당신이했던 방식으로 왜 더 많이 관심이 있는지 – ProFishChris