가설 구체화
하나의 글에 여러개의 tag를 동시에 넣고 tag 클릭 시 마다 글들을 찾아주려면
DB에 text_id, tag 1:n 매칭관계
지금 글에 tag를 등록하고 생성하자마자 tag의 대소문자가 바뀜.
왜 생성하자마자 바뀌었을까?
POST 요청이 들어오면 글의 정보를 DB에 넣을 텐데 DB에 넣을 때 까지는 대소문자가 유지되어 있었을 것임.
DB에 넣으면서 바꿀 일이 있을까?
글이 업데이트되어 하단에 tag list를 view로 뿌리는 과정에서, 다시 DB에서 text_id의 tag를 로드하겠지?
아닌가 DB까지 굳이 가지 않고 tag list 정보가 남아 있나?
여튼 글 POST가 완료된 후 tag를 눌렀을 때 해당 tag를 갖는 text list를 보여줘야 하므로
1) DB에서 가져온다면
text_id에 연결된 tag를 모두 로드. 이 과정에서 collation이 case-insensitive 하다면 대소문자가 다른 두 개의 태그를 다 불러오지 않고 동일시하여 하나만 불러옴. 이것이 하단의 아이콘에 이름과 url도 붙으므로 가설이 재현 가능한 상황
2) DB에서 굳이 다시 불러온게 아니라 정보가 남아있었다면
대소문자 구별된 string 정보가 그대로 작성된 글 아래에 뿌려졌을 텐데 그게 아님. toupper나 tolower도 아니므로 의도한 상황이 아니고야 설명이 안됨.
extra) 의도한 것이라면?
대소문자 구별된 string list를 갖고, 특정 함수를 불러서 toupper 등을 하여 같은 tag가 있다면 그 tag의 이름과 동기화 시키는 로직을 삽입한 것이라면. 왜 굳이 맨처음 tag와 동기화인가? 글 POST시에는 대소문자가 유지된 tag를 보여주고 링크를 누르면 insensitve 로직으로 해당 tag의 나머지 글들을 찾아주면 될텐데. 어쨌든 이 부분은 빼먹었지만 tag 대소문자 구별없이 통일화가 의도한 것이라면, 심지어 최초에 DB에 저장도 동기화를 하며 저장한다면? case-sensitive collation인데 일부러 동기화를 한 것이라면? 해당 tag명으로 db에서 insensitive하게 검색한 후 나온 tag list의 맨 처음 값으로 전부 동기화 한 것이라면?
잠시만, 만약 collation에 의한 것이라면, 최초가 아니라 collation rule에 따른 winner 가 나와야 할텐데 항상 최초라는건? 가설이 틀렸나?