⊗pyPmDOFR 126 of 129 menu

Python에서 데이터의 계층적 관계

부모와 자식을 저장해야 하는 작업이 있다고 가정해 봅시다. 각 부모는 오직 한 명의 자식만을 가질 수 있으며, 자식 역시 자신의 자식을 하나만 가질 수 있다고 해보겠습니다.

데이터를 어떻게 저장할지 고민해야 합니다. 처음 떠오를 수 있는 아이디어는 두 개의 테이블을 만드는 것입니다: parents 테이블과 sons 테이블. 그런 다음 어떤 필드로 이 테이블들을 연결합니다: son_id 또는 parent_id.

그러나 이 아이디어는 그다지 좋지 않습니다. 동일한 사람이 부모이자 자식일 수 있기 때문에 두 테이블 모두에 그를 저장해야 하며, 이는 불편하고, 더 많은 공간을 차지하며, 오류가 발생하기 쉽습니다.

더 나은 방법은 테이블을 자기 자신과 연결하는 것입니다: users 테이블을 만들고, 모든 사용자를 여기에 저장하며 각 사용자에게 son_id 필드를 만들어 동일한 테이블 내의 자식의 id를 저장하도록 합니다:

users
id name son_id
1 user1 2
2 user2 3
3 user3 null

쿼리

이제 사용자와 그의 자식을 함께 가져오는 쿼리를 작성해 봅시다.

먼저 사용자들만 가져와 보겠습니다:

SELECT * FROM users

이제 사용자에 그들의 자식을 조인하겠습니다. 테이블을 자기 자신에 조인해야 하므로, 테이블 이름을 바꾸어야 합니다:

LEFT JOIN users as sons

이제 기본 테이블과 이름이 바뀐 테이블 간의 관계를 지정할 수 있습니다:

LEFT JOIN users as sons ON sons.id=users.son_id

이제 필드를 지정하겠습니다:

SELECT users.name as user_name, sons.name as son_name

모두 합쳐서 다음 쿼리를 얻습니다:

SELECT users.name as user_name, sons.name as son_name FROM users LEFT JOIN users as sons ON sons.id=users.son_id

실습 문제

카테고리가 있다고 가정해 봅시다. 각 카테고리는 상위 카테고리에 속할 수 있고, 그 상위 카테고리는 다시 자신의 상위 카테고리에 속하는 식으로 계속될 수 있습니다. 저장 구조를 설명하세요.

카테고리와 그 상위 카테고리를 함께 가져오는 쿼리를 작성하세요.

카테고리와 그 상위 카테고리, 그리고 상위의 상위 카테고리를 함께 가져오는 쿼리를 작성하세요.

카테고리와 그 상위 카테고리, 상위의 상위 카테고리, 그리고 상위의 상위의 상위 카테고리를 함께 가져오는 쿼리를 작성하세요.

한국어
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақКыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
우리는 웹사이트 운영, 분석 및 개인화를 위해 쿠키를 사용합니다. 데이터 처리는 개인정보 처리방침에 따라 이루어집니다.
모두 수락 설정 거부