⊗pyPmDOFR 126 of 129 menu

Relacionamentos de Dados em Python

Suponha que tenhamos a tarefa de armazenar pais e filhos. Suponha que cada pai possa ter apenas um filho, e o filho, por sua vez, também pode ter um filho.

Precisamos pensar em como armazenaremos os dados. A primeira ideia que pode vir à mente é criar duas tabelas: parents para pais e sons para filhos. Em seguida, relacionar essas tabelas por meio de algum campo: son_id ou parent_id.

No entanto, essa ideia não é muito boa - pois a mesma pessoa pode ser simultaneamente pai e filho - e teríamos que armazená-la em ambas as tabelas, o que é inconveniente, ocupa mais espaço e pode facilmente levar a erros.

Uma opção melhor é relacionar a tabela consigo mesma: vamos criar uma tabela users, nela armazenaremos todos os usuários e para cada um criaremos um campo son_id, onde será armazenado o id do filho nesta mesma tabela:

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

Consultas

Agora vamos escrever uma consulta que obtenha o usuário junto com seu filho.

Para começar, vamos apenas obter os usuários:

SELECT * FROM users

Agora vamos fazer um JOIN dos usuários com seus filhos. Faremos um JOIN da tabela com ela mesma, portanto precisamos renomeá-la:

LEFT JOIN users as sons

Agora podemos especificar a relação entre a tabela principal e a tabela renomeada:

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

Agora vamos especificar os campos:

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

Vamos juntar tudo e obter a seguinte consulta:

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

Tarefas Práticas

Suponha que temos categorias. Cada categoria pode pertencer a uma categoria pai, que por sua vez pertence à sua própria categoria pai e assim sucessivamente. Descreva a estrutura de armazenamento.

Escreva uma consulta que obtenha a categoria junto com sua categoria pai.

Escreva uma consulta que obtenha a categoria junto com seu pai e seu avô (pai do pai).

Escreva uma consulta que obtenha a categoria junto com seu pai, seu avô e seu bisavô.

Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar