O armazenamento de dados é imprescindível para os softwares. Seja para guardar dados de clientes, empresas, transações, entre outros itens importantes, é preciso contar com um banco de dados para essa importante missão.
E, apesar de muitos modelos de banco de dados existirem atualmente, o banco relacional ainda se destaca por uma série de fatores.
Seja pela sua estrutura de funcionamento, ou pela integridade no armazenamento e recuperação dos dados, os bancos relacionais trazem características importantes para o desenvolvedor — e também para o usuário.
Assim, se você quer saber o que é e como funciona o banco de dados relacional, não deixe de continuar lendo o conteúdo especial que preparamos, logo abaixo:
O que é e como funciona o banco de dados relacional?
O banco de dados relacional é um modelo de banco de dados que conecta informações com base em relações lógicas. Essas relações lógicas são possíveis por meio das tabelas, que armazenam os dados em uma estrutura simples e de fácil compreensão.
Na prática, as tabelas funcionam como uma planilha de Excel. As linhas são registros únicos — que usam um identificador próprio —, enquanto as colunas são atributos identificadores da informação.
Por exemplo, temos a tabela para representar um cachorro:
Perceba que cada linha é representada por um identificador único (posicionado na coluna “A”, Id), além de atributos que descrevem as características do animal (coluna “B” até coluna “E”). Com base nisso, é possível armazenar informações de modo seguro e, quando necessário, recuperá-las com velocidade e eficiência.
Obviamente, um banco de dados pode conter muitas tabelas com atributos únicos. No caso que apresentamos, temos apenas uma tabela para cachorros, mas poderíamos ter outra tabela destinada para gatos, passarinhos, rações e até dados do veterinário responsável — caso seja uma estrutura de uma clínica veterinária, por exemplo.
O que é um Sistema Gerenciador de Banco de Dados Relacional (SGBDR)?
Enquanto o banco de dados relacional representa um modelo de funcionamento do banco de dados, o Sistema Gerenciador de Banco de Dados Relacional é o que possibilita o funcionamento de toda a estrutura de armazenamento das informações.
Na prática, o SGBDR traz todas as funções que permitem a utilização do banco de dados para, assim, extrair as suas inestimáveis vantagens. São exemplos de SGBDR:
- PostgreSQL;
- MySQL;
- Oracle;
- SQL Server;
- Firebird.
Dito isso, vamos conhecer as funções básicas desses sistemas gerenciadores.
Funções básicas do Sistema Gerenciador de Banco de Dados Relacional
Apesar de existirem algumas características próprias, os Sistemas Gerenciadores de Banco de Dados Relacional possuem algumas funções básicas para funcionarem. Abaixo, listamos 5 delas para você entender como o SGBDR atua:
1. Criar relações entre tabelas
Como falamos no início do conteúdo, as tabelas são os elementos principais de um banco de dados relacional. Mas, sozinhas, elas não podem gerar valor para os sistemas e, consequentemente, o usuário.
Portanto, o SGBDR é a ferramenta que permite a ligação entre elas, possibilitando que os dados sejam estruturados em relações lógicas para o negócio. Assim, a possibilidade de criar relações entre tabelas é uma das funções básicas do SGBDR.
2. Inserir, apagar, editar ou copiar dados
Outra função importante proporcionada pelo SGBDR é a manipulação completa dos dados contidos em uma tabela. Seja para inserir, apagar, editar ou copiar dados, o SGBDR deverá oferecer essas opções ao usuário.
3. Consultar dados armazenados nas tabelas
Da mesma forma que a manipulação total de dados é proporcionada por um SGBDR, a simples consulta de dados também é uma função presente no sistema. E aqui estamos falando de consultas simples — que envolvem apenas uma tabela — ou consultas mais complexas, que envolvem várias tabelas dentro do banco de dados.
4. Gerenciar usuários
O gerenciamento de usuários do banco de dados também é realizado pelo SGBDR. Aqui, em nível mais profundo, o sistema possui um controle de acesso para organizar quem pode criar tabelas, relações entre as mesmas ou, até mesmo, realizar configurações e otimizar o banco.
Esse é um recurso de segurança para evitar manipulações de dados por usuários não autorizados e/ou despreparados.
5. Importar e exportar dados
Por último, temos a opção de importar ou exportar dados de um banco de dados, tarefa que o SGBDR também é capaz de fazer. Então, seja para introduzir uma grande quantidade de dados no banco, ou para exportar as informações para outro local, o sistema gerenciador — normalmente — oferece essa opção.
Funcionalidades, vantagens e desvantagens do SGBDR
Apesar de ser uma estrutura robusta, é importante entender que um Sistema Gerenciador de Banco de Dados Relacional possui características próprias, vantagens e também desvantagens no uso.
Portanto, vamos entender mais sobre esses pontos do SGBDR:
Além disso, temos o acoplamento como um dos principais problemas do banco de dados relacional. O acoplamento mostra o quão dependente um objeto é de outro, o que pode resultar em mudanças não previstas em todas as partes que estão nessa dependência.
Ou seja, em alguns casos, uma mudança no banco de dados pode resultar na necessidade de modificar o código da aplicação, códigos de teste e até na documentação do projeto. Então, dependendo do nível de acoplamento, ele pode causar uma grande dor de cabeça aos devs.
Para contornar esse problema, é preciso mergulhar no universo dos SGBDRs para entender como é possível extrair o máximo das suas funcionalidades, com base nas suas características e comportamentos.
Assim, com o conhecimento profundo do gerenciador que você usa, será possível criar sistemas melhores aos usuários, além de facilitar o trabalho dos desenvolvedores de sistemas.
Leia também: Como desenvolver um software de qualidade: 4 princípios para melhorar o produto
O conceito ACID
Uma parte fundamental de um SGBD é o conceito ACID. Ele representa um conjunto de propriedades que garantem a integridade e a consistência das transações do sistema gerenciador de banco de dados.
Essas propriedades são fundamentais para garantir que as operações realizadas em um banco de dados sejam confiáveis, mesmo em situações de falhas do sistema, como quedas de energia, erros de hardware ou problemas de software imprevisíveis.
Na prática, o acrônimo ACID representa as seguintes propriedades:
- Atomicidade (Atomicity): significa que uma transação é uma unidade indivisível de trabalho, ou seja, ela é executada completamente ou não é executada de forma alguma. Se uma parte da transação falhar, todo o conjunto de ações da transação é revertido para um estado consistente e funcional. Isso garante que o banco de dados não fique preso em um estado de falha;
- Consistência (Consistency): a consistência garante que a execução de uma transação não viole as regras de integridade do banco de dados. Em outras palavras, uma transação leva o banco de dados de um estado válido para outro estado válido. Assim, as operações realizadas em uma transação não podem deixar o banco de dados em um estado inválido ou com estrutura inconsistente;
- Isolamento (Isolation): a propriedade de isolamento garante que as transações ocorram independentemente umas das outras, mesmo quando são executadas simultaneamente. Portanto, cada transação deve parecer estar sendo executada em isolamento, sem interferências de outras transações. Isso evita problemas de interferência entre transações e ajuda na integridade das informações salvas;
- Durabilidade (Durability): por último, a durabilidade assegura que, uma vez que uma transação seja confirmada, seus efeitos permaneçam no banco de dados, mesmo em caso de falha futura do sistema.
As propriedades do conceito ACID são essenciais para garantir a confiabilidade e a integridade das transações em sistemas de banco de dados, especialmente em ambientes onde várias transações estão ocorrendo simultaneamente e há potencial para falhas.
No entanto, é importante observar que, em sistemas distribuídos de larga escala, às vezes, a aplicação rigorosa do conceito ACID pode limitar a escalabilidade e o desempenho.
Por isso, em determinados casos, abordagens mais flexíveis, como as oferecidas pelo conceito BASE (Basic Availability, Soft State, Eventual Consistency), podem ser adotadas para permitir maior escalabilidade e tolerância a falhas, em detrimento de algumas garantias ACID, conforme apresentamos anteriormente.
Principais comandos de um banco de dados relacional
Agora que você entendeu muito da teoria dos banco de dados relacionais, é hora de conhecer os principais comandos usados no dia a dia. Lembrando que estes comandos foram baseados no PostgreSQL e pode contar com ligeiras diferenças para outros bancos.
Lembrando que o PostgreSQL vai rodar no ambiente PSQL, que oferece uma interface de linha de comando para executar consultas SQL, gerenciar bancos de dados e tabelas, e realizar várias operações de administração.
É uma poderosa e indispensável ferramenta para trabalhar com o PostgreSQL de forma eficaz.
1. Comandos de Banco de Dados
- Criar um banco de dados: CREATE DATABASE nome_do_banco;
- Conectar a um banco de dados: \c nome_do_banco;
- Listar bancos de dados: \l ou \list;
- Excluir um banco de dados: DROP DATABASE nome_do_banco;
2. Comandos de Tabelas
- Criar uma tabela:
CREATE TABLE nome_da_tabela (
coluna1 tipo_de_dado,
coluna2 tipo_de_dado,
… );
- Listar tabelas: \dt ou \dt+ para mais detalhes;
- Descrever uma tabela: \d nome_da_tabela;
- Renomear uma tabela: ALTER TABLE nome_antigo RENAME TO nome_novo;
- Excluir uma tabela: DROP TABLE nome_da_tabela;
3. Comandos de Inserção, Atualização e Exclusão de Dados:
- Inserir dados em uma tabela:
INSERT INTO nome_da_tabela (coluna1, coluna2, …)
VALUES (valor1, valor2, …);
- Atualizar dados em uma tabela:
UPDATE nome_da_tabela
SET coluna1 = novo_valor1, coluna2 = novo_valor2
WHERE condição;
- Excluir dados de uma tabela:
DELETE FROM nome_da_tabela WHERE condição;
4. Comandos de Consulta
- Consulta básica:
SELECT coluna1, coluna2 FROM nome_da_tabela WHERE condição;
- Consulta com ordenação:
SELECT coluna1, coluna2 FROM nome_da_tabela ORDER BY coluna1;
- Consulta com junção (JOIN)
SELECT coluna1, coluna2 FROM tabela1 INNER JOIN tabela2 ON tabela1.coluna = tabela2.coluna;
- Consulta agregada (agregação de dados)
SELECT coluna, COUNT(*) FROM nome_da_tabela GROUP BY coluna;
5. Outros comandos úteis:
- Criar um índice: CREATE INDEX nome_do_indice ON nome_da_tabela (coluna);
- Criar uma visão: CREATE VIEW nome_da_visao AS SELECT coluna1, coluna2 FROM nome_da_tabela;
- Criar uma sequência: CREATE SEQUENCE nome_da_sequencia;
- Executar um arquivo SQL: \i caminho_do_arquivo.sql;
É importante reforçar que o PostgreSQL vai muito além dos comandos que apresentamos acima. Ele conta com recursos adicionais para atender às necessidades específicas de diferentes projetos e cenários, sejam simples ou complexos.
Portanto, se você tem interesse em dominar qualquer banco de dados relacional, vai precisar entender a teoria para, só depois, entender como é a prática de cada sistema. No entanto, uma vez que a teoria é compreendida, ficará mais fácil se adaptar aos diferentes comandos que cada banco oferece.
Gostou do conteúdo? Aproveite também para ler: Banco de dados relacional e não relacional: tipos, características e como escolher