데이터베이스로 작업할 때 일대다 및 다대다 관계를 접하는 것이 일반적입니다. 이러한 시나리오에서는 이러한 관계를 Go 구조체에 효율적이고 확장 가능하게 매핑하는 것이 중요합니다.
한 가지 효과적인 접근 방식은 다음을 활용하는 것입니다. PostgreSQL의 배열 수집기 및 GROUP BY 기능. 여기에는 배열 집계를 사용하여 항목과 관련 데이터를 함께 그룹화하는 보기를 만드는 작업이 포함됩니다. 그런 다음 Go 구조체로 정렬 해제된 배열 내용을 사용하여 결과 뷰를 쿼리할 수 있습니다.
SELECT tag.name, tag.id FROM tag WHERE item_id = item.id
) AS 태그 목록
GROUP BY
item.id
`
db.MustExec(sql)
Go 코드는 다음과 같습니다:
return err
}
if err := json.Unmarshal([]byte(jsonString), &item); 오류 != nil {
return err
}
항목 = 추가(항목, 항목)
}
이 접근 방식은 PostgreSQL의 유연성과 Go의 배열 집계 및 행 수준 마샬링의 효율성을 결합합니다. 복잡한 관계에서도 원활하게 확장됩니다.
권장되는 접근 방식은 효율적이고 다양하지만 질문에 언급된 대체 솔루션에는 고유한 장점과 약점이 있습니다. :
궁극적으로 최선의 접근 방식은 애플리케이션의 특정 요구 사항과 사용 가능한 기술에 따라 다릅니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3