계층 구조에 대한 DB를 찾다가 알게 된 구조
흔히 사용하는 인접리스트가 있는데 DB에서 자식만 가져오는 것이 아닌 자손까지 가져온다고 했을 때, 계층이 너무 깊으면 self join을 많이해서 쿼리 구조가 복잡하다는 단점이 있다. 그래서 다른 방법을 찾다가 여기까지 왔다.
자기 자신을 포함해서 자식 노드를 모두 저장하는 DB 형태
예를 들어 계층구조가 이런 형태면
DB형태가 ancestor, descendant, length가 저장이 된다. length는 우리가 dfs를 풀 때 depth를 사용하는데 이와 같다고 생각하면 될 것 같다.
그래서 만약 내가 조상일 때 ancestor=1일때라는 조건을 걸어서 select를 하면 되니까 자손을 모두 가져오기도 편하고
자식을 가져올 때도 depth=1이라는 조건만 걸으면 되기때문에 조회하기에 무척 쉽다는 장점이 있다.
클로저 테이블은 삽입과 서브노드를 이동하기에 쉽다는데
sql이 생각보다 복잡해서 쉽다는게 사실 와닿지는 않는다.
아무래도 DB 관련되어서 더 공부해야할 것 같다.
참고
'💻개발 > SQL' 카테고리의 다른 글
별칭과 WHERE절 (0) | 2024.01.02 |
---|