SQL AntiPatterns의 좋은 내용을 소개하기엔 에디터의 실력이 부족하여, 어떻게 블로그 글을 쓸까 고민하던 차에 동료께서 알려주신 조언은 바로, 샘플 챕터를 PDF로 공개하라는 것이었습니다.

제가 글을 쓰면서 내용이 왜곡될 위험도 줄이고 (글 쓰는 어려움도 줄이고), 독자들에게도 좋은 내용이 전파된다면 좋겠다는 판단에 이렇게 첫 번째 샘플 챕터인 「3장 순진한 트리」를 공개합니다.

「3장 순진한 트리」에서는 트리 구조를 DB에 저장하는 방법을 고민해 봅니다.

예를 들어, 아래 그림처럼 답글에 답글을 달 수 있는 형태의 웹 사이트에서, 한 글에 대한 모든 답글 목록을 SQL 쿼리 한 번에 불러오기란 어렵죠.

이를 해결하는 기초적인 방법은 답글 테이블에 parent_id 칼럼을 추가하여, 특정 글을 참조하는 것입니다. 하지만, 답글의 답글의 답글을 불러온다거나 특정 글의 답글 개수를 계산하기엔 SQL 쿼리가 이상해집니다. 또한 특정 답글을 삭제하기도 매우 까다롭죠. 특정 답글을 삭제할 경우, 이 답글에 달린 답글을 모두 수정한 다음에야 맨 처음 답글을 삭제할 수 있습니다.

이러한 문제점을 해결하는 방법으로는 ‘경로 열거’, ‘중첩 집합’, ‘클로저 테이블’이라는 대안을 제시하는데요. 여기부터는 내용을 설명할 자신이 없으므로 PDF를 직접 보시면 되겠습니다. ^^

3장 pdf

많이들 퍼뜨려주시고, 다음 번 공개 챕터도 기대해주세요~