Laravel의 다형성 관계는 여러 가지 방법으로 쿼리 복잡성을 증가시킬 수 있습니다.
1. 추가 열: 다형성 관계에는 관련 엔터티의 유형을 저장하기 위해 피벗 테이블에 추가 열이 필요합니다. 데이터베이스가 이 추가 열[1][2]을 기준으로 필터링해야 하므로 쿼리가 더 복잡해질 수 있습니다.
2. 여러 테이블 조인: 관련 엔터티를 검색할 때 다형성 관계에는 연결된 엔터티 유형을 기반으로 여러 테이블 조인이 포함되는 경우가 많습니다. 이로 인해 특히 대규모 데이터 세트를 처리할 때 더 복잡하고 덜 직관적인 쿼리가 발생할 수 있습니다[1][2].
3. 유형별 필터링: 다형성 연관과 관련된 쿼리는 연관된 엔터티의 유형별로 필터링해야 하며 이로 인해 쿼리가 복잡해질 수 있습니다. 이는 유형이 고정되지 않고 동적으로 변할 수 있는 경우에 특히 그렇습니다[1][2].
4. 성능에 미치는 영향: 추가 열을 기준으로 필터링하고 잠재적으로 여러 테이블을 조인해야 하는 경우 특히 데이터 세트가 증가함에 따라 성능에 부정적인 영향을 미칠 수 있습니다[1][2].
5. 제한된 쿼리 지원: 계단식 삭제와 같은 일부 데이터베이스 기능은 다형성 관계에서 직접적으로 작동하지 않아 쿼리 복잡성이 더욱 증가할 수 있습니다[1].
이러한 요인으로 인해 다형성 관계와 관련된 쿼리를 관리하고 최적화하기가 더 어려워지고 잠재적으로 성능 문제가 발생하고 디버깅 시간이 늘어날 수 있습니다.
인용:[1] https://scalablecode.com/the-pros-and-cons-of-implementing-polymorphic-relationships-in-sql-databases/
[2] https://laraveljsonapi.io/docs/3.0/digging-deeper/polymorphic-to-many.html
[3] https://www.reddit.com/r/laravel/comments/9cizrv/polymorphic_relationship_or_not/
[4] https://www.sitepoint.com/what-are-polymorphic-relations-and-how-do-we-use-them-with-eloquent/
[5] https://laravel.com/docs/11.x/eloquent-relationships