Introdução a Modelagem de Banco de Dados - SQL
Gabriel_Silvestre
Posted on March 7, 2022
Tabela de Conteúdos
Database Design
O que é?
É a modelagem que iremos desenvolver para então criarmos nosso DB baseado nesse modelo.
Modelando
Para iniciarmos a modelagem de um banco de dados, seguimos quatro passos básicos, sendo eles:
- Identificar as entidades, atributos e relacionamentos com base na descrição do problema
- Construir um diagrama entidade-relacionamento para representar as entidades encontradas no passo 1
- Criar um banco de dados para conter suas tabelas
- Criar e modelar tabelas tendo o diagrama do passo 2 como base
Database Design Passo a passo
1. Identificando entidades, atributos e relacionamentos
Antes de realmente identificar quais são as entidades, atributos e relacionamentos, é preciso saber o que eles são.
Entidades
São representações de algo do mundo real dentro do DB. Normalmente englobam uma ideia em sua totalidade e são armazenadas em formato de tabelas no DB.
Em resumo são as tabelas.
Atributos
São as características de uma entidade, ou seja, tudo aquilo que serve para descrever uma entidade.
Em resumo são as colunas de uma tabela.
Relacionamentos
São as ligações que uma entidade possui com outra, sendo que há três tipos de relacionamento: 1:1, 1:N ou N:1 e N:N.
Em resumo são as referências entre as colunas das tabelas.
2. Construindo um diagrama entidade-relacionamento
Diagrama
O diagrama possui dois estágios, o básico, para que possamos entender o relacionamento entre as entidades (tabelas) e o detalhado, assim conseguimos visualizar exatamente quais colunas estão se relacionando.
Criação do diagrama
Há diversas formas de se criar diagramas, podemos desenhar no papel, no paint ou em qualquer outra ferramenta, sendo que há algumas ferramentas especializadas para isso, como o Excalidraw, Draw.io ou QuickDB.
pessoalmente prefiro o QuickDB
Estrutura
Como dito anteriormente, possuímos duas etapas e cada uma possui sua própria estrutura.
Na etapa básica temos uma estrutura simples, onde ligamos as entidades através de um verbo, identificando seu tipo de relacionamento, não sendo necessário identificar explicitamente quais atributos se relacionam.
Agora com o diagrama mais detalhado, precisamos informar não só as entidades, como também as chaves primárias e estrangeiras.
*OBS: O diagrama acima foi elaborado apenas para fins de ilustração, logo algumas relações não fazem sentido na "vida real".
3. Criando um banco de dados
Como criar
Essa é a parte mais simples do processo, tudo que precisamos fazer é executar alguns comandos, são eles:
sql
CREATE DATABASE <nome do banco de dados>;
CREATE SCHEMA <nome do banco de dados>;
Para evitar erros utilizamos uma condicional que verifica a existência de determinado DB, isso previne a possível duplicação de um DB já existente.
sql
CREATE DATABASE IF NOT EXISTS <nome do banco de dados>;
4. Criando e modelando tabelas
Padrão
As tabelas devem ser criadas respeitando os diagramas ER criados no passo 2, assim conseguimos ter um plano de ação visível e relativamente previsível.
Tipos de dados
Assim como linguagens de programação fortemente tipadas, devemos informar os tipos de dados que irão ser inseridos em determinada coluna de determinada tabela. Existem muitos tipos de dados para se listar aqui, porém sempre podemos consultá-los na OverAPI ou na documentação oficial (MySQL).
Keys
Existem duas chaves dentro do MySQL que fazem a identificação de um dado, temos a Primary Key que será o identificador único de uma entidade e temos a Foreign Key, essa irá fazer referência a determinado dado em outra tabela.
Sintaxe
A sintaxe para a criação de tabelas é simples, consiste no comando CREATE TABLE
seguido do nome da tabela e entre parênteses definimos as colunas, de forma similar a criação de uma interface no TypeScript.
sql
DROP SCHEMA IF EXISTS <nome do DB>; -- parte extra para evitar bancos de dados duplicados
CREATE SCHEMA <nome do DB>;
USE <nome do DB>;
CREATE TABLE <nome da tabela>(
<coluna> <tipo de dados>,
<coluna> <tipo de dados>,
<coluna> <tipo de dados>
);
sql
DROP SCHEMA IF EXISTS Brazil;
CREATE SCHEMA Brazil;
USE Brazil;
CREATE TABLE cities(
city_id INT PRIMARY KEY auto_increment,
city VARCHAR(100) NOT NULL,
state VARCHAR(10) NOT NULL,
population INTEGER
);
O DROP SCHEMA
foi utilizado pensando em um ambiente de aprendizagem, onde não há problemas em deletar uma tabela/DB, porém em outros contextos o DROP SCHEMA
é um recurso extremamente perigoso de ser utilizado, logo seu uso deve ser evitado a todo custo!
Normalização
O que é?
É uma técnica para reduzir a duplicidade de informações dentro de um DB, evitando assim anomalias de inserção, atualização e exclusão.
O que faz?
Como dito em sua definição, a normalização reduz a duplicidade de dados dentro das tabelas, para isso criamos outras tabelas, essas que irão conter as informações que seriam duplicadas.
Dessa forma definimos a informação apenas uma vez e a ligamos através da chave estrangeira a entidade necessária (Foreign Key).
Como fazer?
A normalização possui cinco formas, porém iremos abordar apenas as três primeiras, elas são como passos que devemos seguir a fim de construir um DB com o mínimo de duplicidade possível.
1ª Forma Normal
É o primeiro passo que devemos dar para normalizar nosso DB, não somente por causa de seu nome, mas os requisitos dessa Forma serão a base para as outras.
A 1ª Forma Normal pede que as tabelas sejam escaláveis, além de serem extensíveis, em outras palavras, mudanças não devem quebrar a integridade dos dados.
Para alcançar essas metas podemos seguir uma lista de quatro requisitos.
- Colunas devem possuir apenas um valor
- Valores em uma coluna devem ser do mesmo tipo
- Cada coluna deve possuir um nome único
- A ordem dos dados não deve afetar a integridade dos mesmos
2ª Forma Normal
Para iniciarmos a 2ª Forma Normal é necessário que nosso DB esteja normalizado de acordo com a 1ª Forma.
A 2ª Forma Normal pede que as tabelas não possuam dependências parciais, isso é qualquer coluna que não dependa exclusivamente da chave primária para existir.
Para remover essas dependências de nosso DB podemos seguir duas opções.
- Podemos vincular a coluna em questão a uma tabela que faça sentido
- Ou podemos criar uma nova tabela do zero, apenas com a coluna em questão
3ª Forma Normal
Como era de se esperar, para iniciarmos a normalização a partir da 3ª Forma, precisamos ter realizado a normalização pela 1ª e 2ª Formas Normais.
A 3ª Forma Normal pede que a tabela não deva possuir colunas que não sejam dependentes exclusivamente da chave primária (Primary Key).
Para alcançar essa ideia podemos, assim como na 2ª Forma Normal.
- Podemos vincular a coluna em questão a uma tabela que faça sentido
- Ou podemos criar uma nova tabela do zero, apenas com a coluna em questão
Links Úteis
Posted on March 7, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.