카테고리 없음

패스트캠퍼스 환급챌린지 47일차 : 코드팩토리의 백엔드 아카데미 : 한 번에 끝내는 NestJS 패키지 - 기초부터 MSA까지 강의 후기

Laftel 2025. 4. 20. 20:55
반응형

***본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다
TypeORM의 @ManyToOne 관계에서 데이터를 생성하는 과정을 학습하면서, 하나의 엔티티가 여러 개의 다른 엔티티와 연결될 수 있는 강력한 관계 설정을 이해하게 되었습니다. 특히, 외래 키를 통한 데이터 연결 방식과 데이터베이스 정규화 원칙 준수의 중요성을 다시 한번 강조하게 되었으며, 연관된 데이터의 생성 및 관리 방식에 대한 깊은 고민을 하게 되었습니다.
첫째, 데이터베이스 정규화의 핵심 원칙을 따르는 @ManyToOne 관계의 중요성을 명확히 인식하게 되었습니다. 여러 개의 자식 엔티티가 하나의 부모 엔티티를 참조하는 @ManyToOne 관계는 데이터 중복을 최소화하고 데이터의 일관성을 유지하는 데 매우 효과적인 방법입니다. 예를 들어, 여러 개의 Movie 엔티티가 하나의 Genre 엔티티를 참조하는 경우, 장르 정보는 Genre 테이블에 한 번만 저장되고 각 Movie는 외래 키를 통해 해당 장르를 참조함으로써 데이터 중복을 방지할 수 있습니다. 마치 도서관에서 여러 권의 책이 하나의 분류 코드를 공유하는 것처럼, @ManyToOne 관계는 데이터의 효율적인 관리와 일관성 유지에 필수적인 구조임을 깨달았습니다.
둘째, 외래 키를 통한 데이터 연결 방식과 데이터 참조의 용이성을 경험했습니다. @ManyToOne 관계를 설정하면 자식 엔티티 테이블에 부모 엔티티의 기본 키를 외래 키로 저장하여 데이터 간의 연결을 용이하게 합니다. 이를 통해 자식 엔티티에서 부모 엔티티의 정보를 쉽게 조회하고 접근할 수 있으며, 데이터베이스 Join 연산을 통해 연관된 데이터를 효율적으로 검색할 수 있습니다. 마치 웹 페이지에서 링크를 클릭하여 다른 페이지로 쉽게 이동할 수 있는 것처럼, 외래 키는 데이터베이스 내에서 엔티티 간의 효율적인 탐색과 참조를 가능하게 합니다.
셋째, 연관된 데이터 생성 시 부모 엔티티의 존재 여부 확인 및 관리의 중요성을 인지했습니다. @ManyToOne 관계에서 자식 엔티티를 생성할 때, 참조하는 부모 엔티티가 반드시 존재해야 데이터베이스의 외래 키 제약 조건을 위반하지 않습니다. 따라서 자식 엔티티를 생성하기 전에 부모 엔티티의 존재 여부를 확인하고, 필요한 경우 부모 엔티티를 먼저 생성하는 등의 사전 작업이 필요합니다. 또한, 부모 엔티티가 삭제될 때 자식 엔티티를 어떻게 처리할 것인지 (예: 함께 삭제, 외래 키 NULL 처리 등) onDelete 옵션을 통해 명확하게 정의하는 것이 데이터 무결성을 유지하는 데 중요함을 깨달았습니다. 마치 건물을 지을 때, 기초 공사가 튼튼해야 그 위에 안전하게 건물을 올릴 수 있는 것처럼, 연관된 데이터를 생성하기 전에 참조 대상의 유효성을 확인하는 것은 데이터베이스의 안정성을 확보하는 데 필수적입니다.
넷째, 양방향 @ManyToOne 관계와 @OneToMany 관계를 함께 사용할 때의 장점과 주의사항을 이해했습니다. @ManyToOne 관계를 가진 자식 엔티티에서 부모 엔티티로의 참조뿐만 아니라, 부모 엔티티에서 자신을 참조하는 모든 자식 엔티티 목록을 조회할 수 있도록 @OneToMany 관계를 함께 설정하면 데이터 접근의 유연성을 높일 수 있습니다. 하지만, 양방향 관계 설정 시 발생할 수 있는 순환 참조 문제나 불필요한 데이터 로딩 문제를 방지하기 위해 @RelationId나 지연 로딩 전략 등을 적절히 활용하는 것이 중요함을 인지했습니다. 마치 여러 갈래의 길이 서로 연결되어 있어 다양한 방향으로 이동할 수 있는 것처럼, 양방향 관계는 데이터 접근의 유연성을 제공하지만, 잘못 설계하면 예상치 못한 복잡성을 야기할 수 있습니다.
마지막으로, @ManyToOne 관계 데이터 생성은 데이터베이스의 구조를 설계하고 애플리케이션의 데이터 흐름을 정의하는 중요한 과정임을 느꼈습니다. 영화와 장르, 주문과 사용자, 댓글과 게시글 등 현실 세계의 다양한 관계를 @ManyToOne 관계로 모델링함으로써 데이터베이스는 단순히 데이터를 저장하는 공간을 넘어 애플리케이션의 핵심 로직을 반영하는 구조로 발전합니다. 따라서 @ManyToOne 관계를 포함한 데이터 모델링은 단순히 ORM의 사용법을 익히는 것을 넘어, 데이터베이스 설계 원칙과 애플리케이션의 요구사항을 깊이 이해하는 데서 시작해야 한다는 인사이트를 얻었습니다. 마치 도시를 설계할 때, 도로와 건물의 배치를 통해 사람들의 이동 흐름과 생활 방식을 고려하는 것처럼, 데이터 모델링은 데이터의 흐름과 관계를 고려하여 효율적인 데이터 관리 시스템을 구축하는 중요한 설계 작업입니다.
이번 @ManyToOne 관계 데이터 생성 학습을 통해 데이터베이스 관계 설정은 데이터 관리의 효율성과 데이터 무결성을 확보하는 데 핵심적인 역할을 한다는 것을 다시 한번 깨달았습니다. 앞으로 다양한 관계 설정 시나리오를 경험하고, 데이터베이스 설계 원칙을 깊이 이해하여 더욱 효율적이고 안정적인 데이터 관리 시스템을 구축하는 데 기여하고 싶습니다.


#패스트캠퍼스 #직장인자기계발 #직장인공부 #환급챌린지 #패스트캠퍼스후기 #오공완
https://bit.ly/4hTSJNB  

반응형