의 장점과 단점, 당신은 그들이 자주 변경 것으로 예상하는 경우 태그를 관리 할 수있는 가장 현명한 방법은 무엇입니까?
방법 1 : 태그는 쉼표로 구분되어 다음
table posts +--------+-----------------+ | postId | tags | +--------+-----------------+ | 1 | c++,search,code |
진심으로 비정규 (쉼표로 구분).
장점 : select
쿼리를 사용하여 태그를 한 번에 가져옵니다. 태그를 업데이트하는 것은 간단합니다. 쉽고 저렴하게 업데이트 할 수 있습니다.
단점 : 태그 검색시 추가 구문 분석, 얼마나 많은 게시물에서 어떤 태그를 사용하는지 계산하기 어렵습니다.
(또는 5 개 태그 같은 것을 제한하는 경우)
table posts +--------+-------+-------+-------+-------+-------+ | postId | tag_1 | tag_2 | tag_3 | tag_4 | tag_5 | +--------+-------+-------+-------+-------+-------+ | 1 | c++ |search | code | | |
방법 2 : "약간 정상화"(별도의 테이블, 아니 교차로를)
table posts +--------+-------------------+ | postId | title | +--------+-------------------+ | 1 | How do u tag? | table taggings +--------+---------+ | postId | tagName | +--------+---------+ | 1 | C++ | | 1 | search |
프로 : 쉽게 알 수 태그 수 (count(*) from taggings where tagName='C++'
).
단점 : 태그 이름은 가능성이 많은, 여러 번 반복됩니다.
방법 3 : (교차로 테이블 정규화) 시원한 아이의
table posts +--------+---------------------------------------+ | postId | title | +--------+---------------------------------------+ | 1 | Why is a raven like a writing desk? | table tags +--------+---------+ | tagId | tagName | +--------+---------+ | 1 | C++ | | 2 | search | | 3 | foofle | table taggings +--------+---------+ | postId | tagId | +--------+---------+ | 1 | 1 | | 1 | 2 | | 1 | 3 |
프로 :
- 없음 반복 태그 이름.
- 더 많은 여자를 좋아합니다.
단점 : 방법 # 1보다 태그를 변경하는 더 비싼.
전 태그를 관리해야했던 사람에게 이메일/트위터를 보냅니다. Jeff Atwood 또는 다른 SO 개발자 중 한 명과 같습니다. 그들은 약간의 통찰력을 줄 수있을 것입니다. –
는 방금 질문에 답변 한 것처럼 들려줍니다. 따라서 귀하의 요구 사항에 가장 적합한 것을 선택하십시오. 여자애들이 너를 좋아하길 원한다면 3 번으로 가라. – mdma
더 많은 소녀들이 당신을 좋아할 것입니까? 나는 그 선택을 좋아한다! – Tarka