스파르타에서 2번째 팀 프로젝트가 진행되었습니다. 발제문을 읽던 도중 " 재귀적 관계 (혹은 계층적 데이터 모델링)을 통해, 허브 간 이동정보 경로를 모델링할 수 있는 엔티티를 생성해주세요." 라는 내용이 익숙하지 않아서 별도로 공부하였습니다.
✅ 데이터 모델
데이터 모델이란 현실 세계의 데이터를 추상화하고 구조화하여 표현하는 방법을 정의한 것
→ 데이터 모델은 데이터베이스 설계와 관리를 위한 기본 도구로 사용
계층형 데이터 모델
데이터를 트리 구조로 표현하는 방식
→ 데이터를 부모 - 자식 관계로 표현
→ 개체 타입들 간에 사이클 허용 X
→ 개체 삭제 시 연쇄 삭제
✔️예시
직원 테이블
직원번호 | 직책 |
10 | 국장 |
20 | 부장 |
30 | 서무 직원 |
감독 테이블
상사 직원 번호 | 부하 직원 번호 |
10 | 20 |
20 | 30 |
✅ 계층형 데이터 모델 개발 시 고려사항
1. 연쇄 삭제 및 연쇄 업데이트 관리
2. 순환 참조 방지
→ 자칫 잘못하면 무한 루프에 빠질 수 있음
3. 계층 구조에서 데이터 효율적으로 조회할 수 있는 방법에 대한 고민 필요
3. 계층 구조에서 트리 구조 탐색할 수 있는 최적화 방법 고민 필요
4. 변경 이력 관리에 대한 고민 필요
출처 :
https://devparker.tistory.com/156
https://ko.wikipedia.org/wiki/%EA%B3%84%EC%B8%B5%ED%98%95_%EB%AA%A8%EB%8D%B8
회고
1차 프로젝트를 진행하며, 소프트 딜리트를 구현하는 과정에서 여러 측면에서 고민할 점이 많았습니다.
예를 들어, 소프트 딜리트 시 하위 엔티티도 함께 소프트 딜리트되도록 처리하는 방법, 쿼리가 update 방식으로 실행될 때 deleted_at, deleted_by 를 어떻게 관리할 것인지 등..
이번에도 계층형 데이터 모델을 다루는 과정에서 유사한 도전 과제들이 발생할 것으로 예상됩니다. 남은 기간 동안 이러한 문제를 해결하기 위해 깊이 고민하며 개발을 진행하겠습니다.
'스파르타 > TIL' 카테고리의 다른 글
2024.09.09 | DDD 이해하기 (2) | 2024.09.10 |
---|---|
2024.09.06 | record를 이용한 DTO 그리고 불변 객체 (3) | 2024.09.07 |
2024.09.05 | 페이징 처리 (1) | 2024.09.05 |
2024.09.04 | Git 특강 (0) | 2024.09.04 |
2024.09.03 | 1차 프로젝트 진행하며 고민했던 부분들 & 추후에 도전하거나 공부해보고 싶은 부분들 (1) | 2024.09.04 |