작성
·
86
·
수정됨
1
[질문 내용]
저는 FK에서 PK로 조인하고 id로 찾았는데,
PK에서 FK를 조인한 후 name으로 찾는 것과의 차이를 모르겠습니다.
자식 입장에서는 PK가 하나이기 때문에 한 행이고, 부모에서 FK를 볼 땐 여러 개일 수도 있으니 여러 행일 수 있다는 것은 이해했지만
이 경우에는 어떤 차이점이 있는지, 안좋은 방식인지, 틀린 건지 궁금합니다.
답변 2
1
안녕하세요. ㅎㅅ님, 공식 서포터즈 y2gcoder입니다.
이 경우에는 상황에 따라 달라질 것 같습니다!
보여드린 문제에서는 아래의 결과 예시에서 최과장의 pk를 이미 알 수 있기 때문에 ㅎㅅ님의 답도 맞다고 생각합니다 🙂
다만 '최과장'이라는 이름에 대한 정보만 문제로 주어진다면 pk를 모르는 상태에서는 답안과 같이 쿼리를 짜지 않는다면 추가 쿼리나 서브 쿼리가 필요하게 됩니다('최과장'의 pk를 구하기 위한 쿼리!). 실무에서는 아래의 표가 주어지지 않은 상태(pk를 모르는 상태)에서 원하는 데이터를 구하는 것과 같은 케이스가 더 많은 것 같습니다!
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. ᄒᄉ님!
질문하신 내용을 보면 데이터베이스에서 자주 발생하는 “상하관계”에 따른 조인 방식과 그 결과 차이에 관해 고민하고 계신 것 같습니다. 간단한 SQL 쿼리를 통해 특정 상사의 부하 직원을 찾는 상황을 예로 들어 설명드리겠습니다.
SQL 쿼리를 보니, employees
테이블을 두 번 참조하여 자기 조인을 수행하고 있습니다. e.manager_id = m.employee_id
조건으로 메니저의 직원 ID를 통해 부하 직원을 찾는 것입니다.
e
테이블: 매니저가 되는 행을 참조합니다.m
테이블: 부하 직원들이 있는 행을 참조합니다.여기서 쿼리는 특정 manager_id
(즉, 4번) 하의 직원 정보를 조회합니다. 결과적으로 employee_id
가 5번과 6번인 경우들이 반환됩니다.
PK에서 FK로 조인: 여기서 PK(primary key)를 이용하여 FK(foreign key)로 조인한다는 것은 한 번의 PK 조회로 여러 FK를 매핑하여 결과를 얻는다는 것입니다. 대개의 경우 이 방식이 더 직관적이며, 성능적으로도 효율적입니다. PK는 유일성을 보장하기 때문에 찾고자 하는 조건에 정확하게 맞는 결과를 얻습니다.
FK에서 PK로 조인: 반면에 FK가 여러 개의 PK에 연결될 수도 있다는 점에서, 쿼리를 구성하는 방식에 따라 결과의 순서나 구조를 다르게 이해할 수 있습니다. FK로 조인을 했을 때 각 FK 열에 대해 각각의 PK 값을 찾기 때문에 데이터의 펜딩이 이루어져 복잡한 결과가 나올 수 있습니다.
결국 작성하신 SQL 쿼리의 경우, 결과는 두 방법 모두 동일하겠지만, 쿼리를 작성하는 순서와 구조에 따라 다른 해석이 만들어질 수 있습니다. 특정 조건이나 쿼리 최적화를 위해 두 방법을 번갈아 사용해 볼 수 있겠습니다.
더 자세한 내용을 파악하시려면 아래 유사한 질문과 답변을 참고해 주세요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
아하 덕분에 이해됐습니다 감사합니다!!