Lição 1.3 · Tempo de leitura: ~10 min
Uma base de dados relacional organiza os dados em tabelas ligadas por chaves. Nesta lição, aprenderá os componentes fundamentais — tabelas, colunas, linhas, chaves primárias, estrangeiras e únicas — e descobrirá como o modelo ACID garante a fiabilidade das transações mesmo em caso de falha ou acesso concorrente.
Na lição anterior, introduzimos o conceito de bases de dados e analisámos os principais tipos de BDs. Agora, vamos aprofundar os componentes centrais das bases de dados relacionais, que são fundamentais para compreender como os dados são organizados e acedidos utilizando SQL.

As bases de dados relacionais organizam os dados em estruturas chamadas tabelas. Pense numa tabela como uma folha de cálculo:
Exemplo:
Vamos visualizar uma tabela "Clientes" simples:
| CustomerID | FirstName | LastName | |
|---|---|---|---|
| 1 | John | Doe | john.doe@example.com |
| 2 | Jane | Smith | jane.smith@example.com |
| 3 | David | Lee | david.lee@example.com |
As chaves são um conceito crítico nas bases de dados relacionais. São utilizadas para estabelecer relações entre tabelas e impor a integridade dos dados. Aqui estão os principais tipos de chaves:
Uma restrição (constraint) é uma regra aplicada a uma coluna ou tabela que o motor da base de dados aplica automaticamente. As chaves (primária, estrangeira, única) são um tipo de restrição. Existem outras restrições importantes que usará no dia a dia em SQL:
| Restrição | Objetivo |
|---|---|
NOT NULL | A coluna deve ter sempre um valor; NULL não é permitido. |
UNIQUE | Todos os valores na coluna devem ser distintos. |
PRIMARY KEY | Combina NOT NULL + UNIQUE; identifica cada linha de forma única. |
FOREIGN KEY | O valor deve corresponder a um valor existente noutra tabela. |
CHECK | O valor deve satisfazer uma condição, p. ex. age >= 0. |
Por exemplo, numa tabela customers pode pensar nestas restrições:
customer_id pode funcionar como PRIMARY KEY, identificando cada cliente de forma única.email pode ter uma restrição UNIQUE, impedindo que dois clientes usem o mesmo endereço.age pode seguir uma regra CHECK, por exemplo age >= 0, para evitar valores negativos.O motor da base de dados aplica automaticamente estas regras e rejeita alterações inválidas, mantendo os dados consistentes sem lógica adicional na aplicação.
Ao trabalhar com bases de dados relacionais, outro conceito fundamental é o modelo ACID. O ACID define as propriedades que tornam as transações de base de dados seguras e fiáveis.
Uma transação é um grupo de operações tratado como uma única unidade de trabalho. Por exemplo, uma transferência de dinheiro entre duas contas bancárias normalmente envolve pelo menos duas operações:
Ambos os passos devem ser concluídos em conjunto, ou então nenhum deve ser aplicado.
ACID significa:
Estas propriedades são essenciais em sistemas reais como banca, comércio eletrónico e gestão de inventário, onde atualizações incorretas ou parciais podem causar problemas graves.
Principais conclusões desta lição:
NOT NULL, CHECK) são aplicadas automaticamente pelo motor da base de dados.Na próxima lição, vamos analisar os tipos de dados básicos usados nas bases de dados relacionais e como escolher o tipo certo para cada coluna.
Uma chave primária identifica cada linha de forma única e não pode ser NULL. Uma tabela só pode ter uma chave primária. Uma chave única também garante a unicidade, mas pode permitir valores NULL, e uma tabela pode ter várias chaves únicas. Use a chave primária como identificador principal da linha; use chaves únicas para impor unicidade noutras colunas, como email.
Sim. Uma chave estrangeira pode referenciar qualquer coluna (ou conjunto de colunas) com uma restrição de unicidade, não apenas a chave primária. No entanto, referenciar a chave primária é a prática mais comum e recomendada.
A atomicidade garante que toda a transação é revertida (rollback), deixando a base de dados no estado em que se encontrava antes do início da transação. Nenhuma alteração parcial é guardada.
Uma chave primária é uma coluna ou combinação de colunas que identifica de forma única cada linha numa tabela. Deve ser única, não pode conter valores NULL e só pode existir uma por tabela. Serve como ponto de ancoragem para referências de chaves estrangeiras de outras tabelas.
Integridade referencial significa que o valor de uma chave estrangeira numa tabela deve sempre corresponder a um valor de chave primária existente na tabela referenciada, ou ser NULL. O motor da base de dados aplica isto automaticamente — tentativas de inserir uma chave estrangeira órfã ou eliminar uma linha referenciada serão rejeitadas, a menos que uma regra de cascata esteja definida.
ACID significa Atomicidade, Consistência, Isolamento e Durabilidade. Define as garantias que tornam as transações fiáveis. Sem ACID, escritas concorrentes poderiam corromper dados, falhas parciais deixariam a base num estado inválido e alterações confirmadas poderiam perder-se após uma falha. É por isso que as bases de dados relacionais são utilizadas em sistemas financeiros, médicos e outras aplicações críticas.