• 사용자는 시리즈를 여러개 가질 수 있다.
  • 시리즈는 오직 한 명의 사용자만 가질 수 있다.
  • 사용자 1 - N 시리즈


  • 시리즈는 포스트를 여러개 가질 수 있다.
  • 포스트는 오직 하나의 시리즈만 가질 수 있다.
  • 시리즈 1 - N 포스트


원래는 위 관계가 정석인데 내가 무슨 생각으로 시리즈와 포스트의 관계를 다대다로 만들어 버렸다. 포스트에다 시리즈를 외래키로 넣었으면 끝날일을... 구현하다가 문득 "엇... 뭔가 잘못됐다" 라는 것을 느꼈다. 그래서 일단 구현을 멈추고 진지하게 개선할 방법을 찾아야했다. 시리즈와 포스트의 이 독특한 관계를 개선할 방법을 말이다.

  • 시리즈는 포스트를 여러개 가질 수 있다.
  • 포스트는 시리즈를 여러개 가질 수 있다.

이미 이러한 관계는 '태그'라는 존재가 진행하고 있다. 하지만 문득 생각해보면 시리즈도 여러개면 좋은 경우가 더럿있을 수 있다. 예를들어 한 작가가 BLEX에서 소설 A를 집필하고 외전을 냈다.

  • 소설 A 1권
  • 소설 A 2권
  • 소설 A 외전

그리고 소설 B를 집필하셨다.

  • 소설 B 1권
  • 소설 B 2권
  • 소설 B 3권
  • 소설 B 외전

그런데 사람들이 외전을 좋아하면 작가는 '외전 시리즈'를 만들어 사람들에게 제공해 줄 필요가 있다. 이렇게 하려면 어떠한 추가정보가 필요한가?

  • 소설 A 외전
    • 소설 A 시리즈
    • 외전 시리즈

소설 A 외전은 아래와 같이 두가지의 시리즈를 가지고 있을 것이다. 사용자가 소설 A 외전에 접근 했을때 사용자가 진정으로 원하는 시리즈는 무엇일까? 1권에 접근했으면 당연히 A 시리즈를 보고 싶은거겠지만 외전에 먼저 접근했다면 외전 시리즈를 보기 위함으로 생각된다.

  • 접근한 게시물의 시리즈가 2개일 때
    • 시리즈의 가장 최상위 게시물이 접근한 게시물인 시리즈를 연결한다.

하지만 위와같이 설정한 경우 문제가 있겠다. 소설 A 외전 이후 소설 A 3권을 집필 하셨다면 문제가 커진다.

소설 A 1권 -> 소설 A 2권 -> 소설 A 외전 -> ?

만일 위 알고리즘으로 구성한 경우 다음 추천 시리즈가 소설 B 외전으로 바뀌게 된다. 이를 해결하는 방법은?

  • 접근한 게시물의 시리즈가 2개일 때
    • 시리즈의 가장 최상위 게시물이 접근한 게시물인 시리즈를 연결한다.
    • 시리즈를 통해서 다음으로 넘어간 경우 GET으로 series를 보내서 올바른 시리즈를 유도한다.

잘못된 관계로 시작했지만 끝은 창대해졌다. 구현만 된다면 말이다. 하지만 걱정되는 건 SEO다... 같은 글이 여러개 복제되면 그닥 좋을 일은 없을텐데... 괜찮은까?... series가 포함된 URL은 noindex 태그를 추가하여 크롤링을 막던지 해야겠다.




완성된 알고리즘

1권에 바로 접근했을때 모습이다. A 시리즈는 1권, 2권, 외전, 3권을 포함하고 있다.

A 외전에 바로 접근했을때 모습이다. 다음 시리즈로 B 외전을 추천하고 있다.

1권에서 A 외전으로 순차적으로 접근했을때 모습이다. 다음 시리즈로 3권을 추천하고 있다.