Trabalhar com Dados: Bases de Dados Relacionais

January 30, 2026 · View on GitHub

 Sketchnote por (@sketchthedocs)
Trabalhar com Dados: Bases de Dados Relacionais - Sketchnote por @nitya

É provável que já tenha usado uma folha de cálculo no passado para armazenar informação. Tinha um conjunto de linhas e colunas, onde as linhas continham a informação (ou dados), e as colunas descreviam a informação (por vezes chamadas metadados). Uma base de dados relacional é construída sobre este princípio fundamental de colunas e linhas em tabelas, permitindo que tenha informação distribuída por várias tabelas. Isto permite trabalhar com dados mais complexos, evitar duplicação e ter flexibilidade na forma como explora os dados. Vamos explorar os conceitos de uma base de dados relacional.

Questionário pré-aula

Tudo começa com tabelas

Uma base de dados relacional tem no seu núcleo tabelas. Tal como numa folha de cálculo, uma tabela é uma coleção de colunas e linhas. A linha contém os dados ou informação com que queremos trabalhar, como o nome de uma cidade ou a quantidade de precipitação. As colunas descrevem os dados que armazenam.

Vamos começar a nossa exploração criando uma tabela para armazenar informação sobre cidades. Podemos começar com o seu nome e país. Poderia armazenar isto numa tabela da seguinte forma:

CidadePaís
TóquioJapão
AtlantaEstados Unidos
AucklandNova Zelândia

Repare que os nomes das colunas cidade, país e população descrevem os dados armazenados, e cada linha tem informação sobre uma cidade.

As limitações de uma abordagem com uma única tabela

É provável que a tabela acima lhe pareça relativamente familiar. Vamos começar a adicionar alguns dados adicionais à nossa base de dados em crescimento - precipitação anual (em milímetros). Vamos focar-nos nos anos 2018, 2019 e 2020. Se adicionássemos para Tóquio, poderia ficar algo assim:

CidadePaísAnoQuantidade
TóquioJapão20201690
TóquioJapão20191874
TóquioJapão20181445

O que nota sobre a nossa tabela? Pode notar que estamos a duplicar o nome e o país da cidade repetidamente. Isso pode ocupar bastante espaço de armazenamento, e é largamente desnecessário ter múltiplas cópias. Afinal, Tóquio tem apenas um nome que nos interessa.

OK, vamos tentar outra coisa. Vamos adicionar novas colunas para cada ano:

CidadePaís201820192020
TóquioJapão144518741690
AtlantaEstados Unidos177911111683
AucklandNova Zelândia13869421176

Embora isto evite a duplicação das linhas, adiciona alguns outros desafios. Teríamos de modificar a estrutura da nossa tabela cada vez que há um novo ano. Além disso, à medida que os nossos dados crescem, ter os anos como colunas torna mais difícil recuperar e calcular valores.

É por isso que precisamos de múltiplas tabelas e relações. Ao dividir os nossos dados podemos evitar duplicação e ter mais flexibilidade na forma como trabalhamos com os dados.

Os conceitos de relações

Vamos voltar aos nossos dados e determinar como queremos dividir as coisas. Sabemos que queremos armazenar o nome e país das nossas cidades, por isso isto provavelmente funcionará melhor numa tabela.

CidadePaís
TóquioJapão
AtlantaEstados Unidos
AucklandNova Zelândia

Mas antes de criarmos a próxima tabela, precisamos de descobrir como referenciar cada cidade. Precisamos de alguma forma de identificador, ID ou (em termos técnicos de base de dados) uma chave primária. Uma chave primária é um valor usado para identificar uma linha específica numa tabela. Embora isto possa basear-se num valor em si (poderíamos usar o nome da cidade, por exemplo), deve quase sempre ser um número ou outro identificador. Não queremos que o id mude alguma vez pois isso quebraria a relação. Na maioria dos casos, a chave primária ou id será um número auto-gerado.

✅ Chave primária é frequentemente abreviada como PK

cidades

city_idCidadePaís
1TóquioJapão
2AtlantaEstados Unidos
3AucklandNova Zelândia

✅ Vai notar que usamos os termos "id" e "chave primária" de forma intercambiável durante esta lição. Os conceitos aqui aplicam-se a DataFrames, que irá explorar mais tarde. DataFrames não usam a terminologia de "chave primária", no entanto vai notar que se comportam de forma muito semelhante.

Com a nossa tabela de cidades criada, vamos armazenar a precipitação. Em vez de duplicar a informação completa sobre a cidade, podemos usar o id. Também devemos garantir que a tabela recém-criada tem uma coluna id, pois todas as tabelas devem ter um id ou chave primária.

precipitação

rainfall_idcity_idAnoQuantidade
1120181445
2120191874
3120201690
4220181779
5220191111
6220201683
7320181386
832019942
9320201176

Repare na coluna city_id dentro da tabela recém-criada precipitação. Esta coluna contém valores que referenciam os IDs na tabela cidades. Em termos técnicos de dados relacionais, isto chama-se uma chave estrangeira; é uma chave primária de outra tabela. Pode simplesmente pensar nela como uma referência ou um apontador. city_id 1 referencia Tóquio.

Note

Chave estrangeira é frequentemente abreviada como FK

Recuperar os dados

Com os nossos dados separados em duas tabelas, pode estar a perguntar-se como os recuperamos. Se estivermos a usar uma base de dados relacional como MySQL, SQL Server ou Oracle, podemos usar uma linguagem chamada Structured Query Language ou SQL. SQL (por vezes pronunciado sequel) é uma linguagem padrão usada para recuperar e modificar dados numa base de dados relacional.

Para recuperar dados usa o comando SELECT. Na sua essência, você seleciona as colunas que quer ver da tabela onde estão contidas. Se quisesse mostrar apenas os nomes das cidades, poderia usar o seguinte:

SELECT city
FROM cities;

-- Output:
-- Tokyo
-- Atlanta
-- Auckland

SELECT é onde lista as colunas, e FROM é onde lista as tabelas.

Note

A sintaxe SQL não diferencia maiúsculas de minúsculas, o que significa que select e SELECT significam o mesmo. No entanto, dependendo do tipo de base de dados que está a usar, as colunas e tabelas podem ser sensíveis a maiúsculas e minúsculas. Como resultado, é uma boa prática tratar tudo em programação como se fosse sensível a maiúsculas e minúsculas. Ao escrever consultas SQL, a convenção comum é colocar as palavras-chave em letras maiúsculas.

A consulta acima vai mostrar todas as cidades. Imagine que só queremos mostrar cidades na Nova Zelândia. Precisamos de algum tipo de filtro. A palavra-chave SQL para isto é WHERE, ou "onde algo é verdadeiro".

SELECT city
FROM cities
WHERE country = 'New Zealand';

-- Output:
-- Auckland

Juntar dados

Até agora recuperámos dados de uma única tabela. Agora queremos juntar os dados das tabelas cidades e precipitação. Isto é feito juntando as tabelas. Vai efetivamente criar uma ligação entre as duas tabelas, e associar os valores de uma coluna de cada tabela.

No nosso exemplo, vamos associar a coluna city_id em precipitação com a coluna city_id em cidades. Isto vai associar o valor da precipitação com a sua respetiva cidade. O tipo de junção que vamos fazer chama-se inner join, o que significa que se alguma linha não corresponder a nada da outra tabela, não será mostrada. No nosso caso, todas as cidades têm precipitação, por isso tudo será mostrado.

Vamos recuperar a precipitação de 2019 para todas as nossas cidades.

Vamos fazer isto em passos. O primeiro passo é juntar os dados indicando as colunas para a ligação - city_id como destacado antes.

SELECT cities.city
    rainfall.amount
FROM cities
    INNER JOIN rainfall ON cities.city_id = rainfall.city_id

Destacámos as duas colunas que queremos, e o facto de querermos juntar as tabelas pela city_id. Agora podemos adicionar a instrução WHERE para filtrar apenas o ano de 2019.

SELECT cities.city
    rainfall.amount
FROM cities
    INNER JOIN rainfall ON cities.city_id = rainfall.city_id
WHERE rainfall.year = 2019

-- Output

-- city     | amount
-- -------- | ------
-- Tokyo    | 1874
-- Atlanta  | 1111
-- Auckland |  942

Resumo

Bases de dados relacionais centram-se em dividir a informação entre múltiplas tabelas que depois são reunidas para exibição e análise. Isto proporciona um elevado grau de flexibilidade para realizar cálculos e manipular dados de outras formas. Viu os conceitos fundamentais de uma base de dados relacional, e como realizar uma junção entre duas tabelas.

🚀 Desafio

Existem inúmeras bases de dados relacionais disponíveis na internet. Pode explorar os dados usando as competências que aprendeu acima.

Questionário pós-aula

Questionário pós-aula

Revisão & Autoestudo

Existem vários recursos disponíveis em Microsoft Learn para continuar a sua exploração de SQL e conceitos de bases de dados relacionais

Tarefa

Exibir dados de aeroportos


Aviso Legal: Este documento foi traduzido utilizando o serviço de tradução automática Co-op Translator. Embora nos esforcemos para garantir a precisão, por favor tenha em conta que traduções automáticas podem conter erros ou imprecisões. O documento original na sua língua nativa deve ser considerado a fonte autorizada. Para informações críticas, recomenda-se a tradução profissional humana. Não nos responsabilizamos por quaisquer mal-entendidos ou interpretações erradas decorrentes do uso desta tradução.