Skip to main content

2 posts tagged with "database"

View All Tags

· 2 min read
Felipe Jorge Sales da Silva

Nesta seção, iremos revisar os conceitos fundamentais de bancos de dados, bem como as formas normais que são cruciais para um design eficiente de banco de dados.

A. Conceitos Básicos de Banco de Dados

Bancos de dados são sistemas de organização de dados que permitem a recuperação, inserção, atualização e exclusão eficientes de dados. Eles são fundamentais para muitas aplicações modernas, incluindo sistemas de gerenciamento de informações, comércio eletrônico e muito mais.

Modelos de Dados

Os modelos de dados definem a estrutura e o formato dos dados em um banco de dados. Eles incluem o modelo relacional, que organiza os dados em tabelas relacionadas, e os modelos de dados NoSQL, que podem incluir modelos de documentos, de chave-valor, de coluna larga e de grafos.

SQL e NoSQL

SQL (Structured Query Language) é uma linguagem de programação usada para interagir com bancos de dados relacionais. NoSQL se refere a bancos de dados que não usam a estrutura de tabela tradicional encontrada em bancos de dados relacionais.

B. Formas Normais e Princípios de Design de Banco de Dados

Quem meche com banco de daos precisa dominar a fazer consultas complexas, porém muitas vezes as formas normais são passadas despercebidas, um conceito básico e altamente importante. As formas normais são regras que guiam o design de bancos de dados para minimizar a duplicação de dados e evitar certos tipos de problemas de atualização.

Primeira Forma Normal (1NF)

Um banco de dados está na primeira forma normal se cada coluna de cada tabela contém apenas valores atômicos (indivisíveis) e cada valor de uma coluna é do mesmo tipo.

Segunda Forma Normal (2NF)

Um banco de dados está na segunda forma normal se estiver na primeira forma normal e cada coluna não-chave depende de toda a chave primária.

Terceira Forma Normal (3NF)

Um banco de dados está na terceira forma normal se estiver na segunda forma normal e não houver dependências transitivas de colunas não-chave.

C. Praticando a Criação e Otimização de Consultas SQL

Praticar a criação e otimização de consultas SQL é crucial para qualquer desenvolvedor que trabalhe com bancos de dados. Existem muitos recursos online, como o HackerRank, que oferecem problemas de prática de SQL que você pode usar para aperfeiçoar suas habilidades.

· 3 min read
Felipe Jorge Sales da Silva

Nesta seção, vamos trabalhar com um exemplo de normalização de banco de dados da Primeira Forma Normal (1NF) para a Terceira Forma Normal (3NF).

Primeira Forma Normal (1NF)

Vamos começar com uma tabela de pedidos de uma loja que vende produtos. A tabela está na Primeira Forma Normal (1NF), pois cada coluna contém apenas valores atômicos e cada valor de uma coluna é do mesmo tipo.

Em termos simplificados, a 1NF é quando "todas as tabelas estão juntas".

OrderIDCustomerProductQuantityPrice
1JohnApples51.00
2JohnBananas20.50
3MaryApples11.00
4MaryOranges30.80

Segunda Forma Normal (2NF)

Para normalizar a tabela para a Segunda Forma Normal (2NF), precisamos garantir que não haja nenhuma dependência parcial; todos os atributos não-chave devem depender completamente da chave primária. No caso da nossa tabela, o preço dos produtos não depende do OrderID, mas sim do Produto. Portanto, vamos dividir a tabela em duas: uma para pedidos e outra para produtos.

Em termos simplificados, a 2NF é quando "as tabelas são divididas de acordo com cada contexto".

Tabela Orders:

OrderIDCustomerProductIDQuantity
1John15
2John22
3Mary11
4Mary33

Tabela Products:

ProductIDProductPrice
1Apples1.00
2Bananas0.50
3Oranges0.80

Terceira Forma Normal (3NF)

Para normalizar a tabela para a Terceira Forma Normal (3NF), precisamos remover as dependências transitivas; todos os atributos não-chave devem depender apenas da chave primária. No nosso caso, o nome do cliente depende do CustomerID, que depende do OrderID. Isso é uma dependência transitiva. Portanto, vamos dividir a tabela de pedidos novamente, desta vez separando os clientes dos pedidos.

Tabela Orders:

OrderIDCustomerIDProductIDQuantity
1115
2122
3211
4233

Tabela Customers:

CustomerIDCustomer
1John
2Mary

Tabela Products:

ProductIDProductPrice
1Apples1.00
2Bananas0.50
3Oranges0.80

Agora, todas as tabelas estão na Terceira Forma Normal (3NF). Em cada tabela, cada coluna não-chave depende apenas da chave primária da tabela. As tabelas "Orders", "Customers" e "Products" não têm dependências transitivas nem dependências parciais, cumprindo assim as regras da 3NF.