연결함정: ERD 관계가 끊기거나 모호해지는 이유
연결함정의 원인과 부채꼴함정·균열함정 사례를 통해 ERD 관계 모델링 오류를 점검하는 방법을 정리합니다.
2026-08-14 · 최초 발행 2025-08-10
관계선이 있어도 조회가 성립하지 않는 경우
연결함정(Connection Trap)은 엔티티 사이의 관계를 정의했지만, 실제 업무에서 필요한 관계를 정확히 추적하지 못하는 데이터 모델링 오류다. 모든 튜플이 연결된 것처럼 보일 수 있으나, 관계의 의미가 불명확하거나 특정 레코드가 없으면 원하는 정보를 얻을 수 없다.
이 문제는 데이터 무결성을 떨어뜨리고 잘못된 검색 결과를 낳을 수 있다. 시스템 성능과 유지보수 비용에도 영향을 주므로 논리 모델을 확정하기 전에 관계 경로를 검증해야 한다.
연결함정은 업무 프로세스 분석이 부족하거나 도메인 지식과 요구사항 명세가 충분하지 않을 때 생기기 쉽다. 특수 케이스, 데이터 무결성 제약조건, 미래 확장성을 놓치는 경우도 원인이 된다. 관계 설정 오류, 정규화 미흡, ERD 설계 오류 역시 같은 문제로 이어진다.
상위 엔티티만 거치는 부채꼴함정
부채꼴함정(Fan Trap)은 하나의 엔티티가 둘 이상의 다른 엔티티와 일대다(1:N) 관계를 맺지만, 그 경로만으로는 하위 관계를 특정할 수 없을 때 나타난다.
교수와 단과대학, 학과를 다음처럼 연결했다고 가정한다.
교수가 어느 단과대학에 속한다는 사실만으로는 어느 학과에 소속됐는지 알 수 없다. 단과대학은 여러 학과를 포함하므로, 교수와 학과의 관계를 별도로 표현해야 한다.
교수와 학과를 직접 연결하면 소속 관계를 명확히 다룰 수 있다.
중간 레코드가 비면 끊어지는 균열함정
균열함정(Chasm Trap)은 두 엔티티를 중간 엔티티로 연결했지만, 그 중간 엔티티에 해당 레코드가 없을 때 관계를 더 이상 따라갈 수 없는 상황이다.
학과와 교수, 학생을 다음과 같이 모델링할 수 있다.
지도교수가 없는 학생이라면 교수 경로를 통해 학과를 확인할 수 없다. 학생과 학과의 소속 관계가 교수에만 의존하기 때문이다.
학과와 학생 사이의 직접 관계를 두면 지도교수 유무와 무관하게 학생의 소속을 조회할 수 있다.
주문 모델에서 관계를 분리하는 방식
온라인 쇼핑몰의 고객, 주문, 상품을 아래처럼 연결했다고 가정한다.
이 구조에서는 특정 고객이 어떤 상품을 주문했는지 직접 파악하기 어렵다. 고객과 상품이 주문만을 통해 이어져 있기 때문이다.
주문상세 엔티티를 두어 고객-주문-주문상세-상품의 관계를 분명하게 표현할 수 있다.
수강신청 모델에서 학생 소속을 보존하기
대학 수강신청 시스템을 다음과 같이 설계했다고 가정한다.
특정 학과의 학생 목록을 조회하려면 문제가 생긴다. 학생과 학과가 직접 연결되지 않고 교수, 강의, 수강신청을 거쳐야 하기 때문이다.
학과와 학생의 소속 관계를 별도로 정의하면 강의나 수강신청 데이터에 의존하지 않고 학생 목록을 다룰 수 있다.
모델을 확정하기 전에 확인할 지점
논리적 모델링 단계에서는 정규화를 수행하고 관계의 의미가 분명한지 확인해야 한다. 업무 규칙이 모델에 모두 반영됐는지도 함께 검토한다.
물리 모델과 프로토타입에서는 데이터베이스 구현 뒤 테스트 쿼리를 실행해 예상 결과와 실제 결과를 비교하고, 성능 이슈를 검토한다. 도메인 전문가와 협업하며 사용자 스토리와 사례를 살피고 업무 프로세스를 시뮬레이션하는 과정도 필요하다.
모델링 교육, 모델링 패턴과 안티패턴 학습, 동료 검토(Peer Review)를 통해 관계 설계 역량을 높일 수 있다. 모델링 도구의 검증 기능, 자동화된 오류 검출 시스템, 모델 시각화 도구도 검토 과정에 활용할 수 있다.