Blog

Postado em em 31 de janeiro de 2023

Projeto de Modelagem de Banco de Dados – Apresentação da Série

Esta é a primeira aula da série projeto de modelagem de banco de dados, vamos explicar o que iremos ensinar nas próximas aulas e os temas.

Aulas do Projeto:

Projeto de Modelagem de Banco de Dados – Aula 1 – Introdução

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Fala Impressionadores! Hoje nós vamos dar início a Série Projeto de Modelagem de banco de Dados!

A ideia é que você não só saiba como modelar um banco de dados, mas entenda a importância da modelagem de banco de dados.

O projeto de modelagem de um banco de dados é o mais importante antes de criar o banco, através dele conseguimos identificar quais informações devem ser armazenadas, como serão modeladas e quais as necessidades do negócio.

Esta etapa é semelhante a preparar uma lista de compras, se foi bem feita a ida ao mercado só vai acontecer uma vez e será rápida, se não for, a compra ainda será feita, mas, com bastante perca de energia e tempo.

Banco de Dados de uma Universidade

Imagine que queremos criar um banco de dados que armazena informações de uma universidade.

Quais informações são importantes para a Universidade?

De início podemos supor que precisamos das informações sobre os professores e alunos, seus nomes e identificações pessoais, podemos até começar o banco de dados com isso.

Mas à medida que avançamos vamos perceber que as notas são tão importantes quanto as informações pessoais de professores e dos alunos para a Universidade, certo?

Então vamos ter que voltar e reconfigurar o banco de dados para receber as notas por matéria.

Projeto de Modelagem de Banco de Dados
Notas

Quais problemas podem surgir dessa tabela se a nota mínima for 7 e o aluno reprovar?

Neste caso provavelmente ele fará outra prova e vamos acrescentar esta nota a base de dados.

Projeto de Modelagem de Banco de Dados
Nota duplicada

Mas, deixar ambas as notas de uma mesma matéria pode causar confusão ou erro, não temos na tabela a informação de recuperação, prova final, ou semestre.

Uma solução possível dependendo do caso é acrescentar uma coluna com o semestre:

Uma solução possível
Uma solução possível

Quantas vezes somente neste exemplo básico voltamos para corrigir um problema?

Você entende agora por que a modelagem é importante?

Com ela evitamos esses retrabalhos para corrigir erros e acrescentar informações que já deveriam ter sido mapeadas antes mesmo de começar o projeto.

O famoso, ih! Esqueci! Deve ser a todo custo evitado…

Nossas aulas vão trazer esses conceitos e mostrar a forma correta de se iniciar o banco de dados, as fazes, as perguntas que precisamos fazer, o caminho para ser um excelente profissional com SQL!

Guia para as aulas dessa série:

Projeto de Modelagem de Banco de Dados
Guia das próximas aulas!

Projeto de Modelagem de Banco de Dados – Aula 2 – Modelo Conceitual

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Fala Impressionadores! Hoje temos a segunda aula da Série Projeto de Modelagem de banco de Dados SQL.

Nessa aula eu quero te mostrar o modelo conceitual SQL de modelagem de banco de dados:

  • Definição das entidades em bancos de dados (o que é uma entidade?)
  • Atributos em modelagem de bancos de dados (o que é atributo?)
  • Relacionamentos em bancos de dados (o que é relacionamento?)
  • Cardinalidade
  • MER (modelo entidade relacionamento) e DER (diagrama entidade relacionamento).
  • Quais são as etapas de um projeto de modelagem, onde estamos e o qual a importância disso tudo para modelar o nosso banco de dados!

Se você ainda não viu a aula 1, clique no link e assista antes de continuar!

É importante porque a quarta aula será uma aula prática sobre tudo que aprendemos nas três primeiras aulas.

Quais as etapas de um projeto de modelagem?

Basicamente temos 3 fases para o Projeto de Modelagem:

  • Modelo Conceitual
  • Modelo Lógico
  • Modelo Físico

Hoje vamos falar sobre a primeira delas, o Modelo Conceitual!

Um projeto de banco de dados começa pelo modelo conceitual que consiste em descrever de forma resumida os requisitos de dados do usuário, ou seja, como os usuários pretendem armazenas os seus dados.

Para isso, precisamos aprender o Modelo Entidade Relacionamento (MER) que será descrito através de um Diagrama Entidade Relacionamento (DER).

No DER utilizamos símbolos e gráficos para representar os requisitos dos usuários.

É dessa forma que um projetista de banco de dados descreve os requisitos importantes levantados para os clientes de forma visual.

Quais são os principais conceitos do MER?

  • Entidade
  • Atributo
  • Relacionamento

Entidade

Uma entidade é um elemento da realidade que será observado e modelado. Geralmente, uma entidade executa uma ação ou recebe uma ação.

Modelo Conceitual SQL
Entidade

Se quiséssemos fazer um banco de dados de uma loja de carros, teríamos os clientes -> pessoas e objetos -> carros. Então as pessoas e os carros são as entidades desse modelo!

Modelo

  • Uma entidade será representada por meio de um retângulo
  • Dentro do retângulo vamos informar o nome da entidade
  • Nos referimos a um elemento particular como “ocorrência” daquela entidade.
Projeto de Modelagem de Banco de Dados
Ocorrência

Neste caso temos 4 ocorrências, Ana, Bruno, Carla e Diego.

Cada entidade terá sua característica:

São todos os dados ou informações que são associados a cada ocorrência de uma entidade, ou seja, observamos a relação pessoa e carro.

Neste exemplo pessoa é a coisa, a entidade. Seus atributos são o nome, CPF, identidade, etc.

Modelo Conceitual SQL
Atributos

Relacionamento

Um relacionamento se trata de um conjunto de associações entre entidades.

No caso das entidades carro e pessoa, temos uma relação entre elas, a pessoa -> dirige carro.

O conjunto de relações dadas entre essas duas entidades seria representado pelo “dirige”.

Projeto de Modelagem de Banco de Dados
Relacionamento

Diagrama

Tudo isso vai ser visualizado em um diagrama. Este modelo nos diz que o banco de dados armazena informações sobre um conjunto de pessoas, um conjunto de carros e um conjunto de associações que relacionam pessoas e carros.

Diagrama
Diagrama

Cardinalidade

A cardinalidade vai descrever a relação entre as duas entidades.

Uma pessoa pode dirigir um ou mais carros e os carros podem ser dirigidos por uma ou mais pessoas

Cardinalidade
Cardinalidade

Existem tipos de cardinalidades

Tipos de cardinalidades
Tipos de cardinalidades

1:1 -> Quando 1 ocorrência de uma entidade se relaciona com apenas 1 ocorrência de outra entidade.

Projeto de Modelagem de Banco de Dados
1:1

Neste caso o funcionário usa apenas um dos computadores da empresa e este computador também é de uso exclusivo deste funcionário.

1:N -> Quando 1 ocorrência de uma entidade se relaciona com N (muitas) ocorrências de outra entidade.

Projeto de Modelagem de Banco de Dados
1:N

O fabricante fabrica vários carros, porém cada carro foi fabricado por apenas um fabricante.

N:N -> Quando N ocorrência de uma entidade se relaciona com N (1 ou mais) ocorrências de outra entidade.

Modelo Conceitual SQL
N:N

Neste caso o cliente pode comprar vários produtos assim como o produto pode ser comprado por vários clientes.

Esses conceitos são importantes para a última aula quando vamos fazer a parte prática.

Projeto de Modelagem de Banco de Dados – Aula 3 – Modelo Lógico

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Fala Impressionadores! Hoje temos a terceira aula da Série Projeto de Modelagem de banco de Dados SQL.

Nessa aula eu quero falar sobre o modelo lógico, então vou te explicar o que é um modelo lógico em modelagem de banco de dados.

Vou te ensinar sobre o que são chaves no modelo relacional (chaves candidatas, chaves primárias, chaves alternadas e chaves estrangeiras).

Além disso, vou falar sobre restrições de integridade, dicionário de dados, anomalias em bancos de dados (temos aula no canal) e formas normais (também temos aula no canal).

E aí, bora aprender mais sobre modelagem de bancos de dados no SQL? Então vem comigo que eu vou te ensinar!

Evolução do curso
Evolução do curso

O que é o Modelo Lógico?

Uma vez que o analista observa o mundo real, ele faz uma representação do observado através dos três modelos:

  • Conceitual -> Onde definimos entidades e relacionamentos
  • Lógico -> Definição de Como serão as tabelas.
  • Físico -> Etapa de criação das tabelas dentro do software de banco de dados.

O modelo conceitual foi explicado na última aula, agora vamos nos aprofundar no modelo lógico:

Modelo conceitual e lógico
Modelo conceitual e lógico

Observe na imagem acima como esses modelos se relacionam, no primeiro modelo temos as entidades e relacionamentos e no segundo, sendo nosso modelo lógico, temos as tabelas que detém as informações sobre as nossas entidades e relacionamentos.

Um modelo relacional lógico é composto por tabelas e por diferentes tipos de chaves:

Composição do modelo lógico
Composição do modelo lógico

Observe esta tabela, cada linha tem seu registro, temos a chave primária, nome e atributos, observe a organização da tabela:

Exemplo geral
Exemplo geral

Uma tabela é um conjunto de registros exclusivos!

É composto por linhas, colunas e chaves e tabelas diferentes se relacionam por meio das Chaves Estrangeiras como mostra a indicação da seta na imagem.

Chaves candidatas

As chaves candidatas são todas as colunas que podem identificar de forma única as linhas de uma tabela.

No exemplo abaixo temos uma tabela PESSOA com as informações e CPF, CNH, Nome e Sexo.

Dentre essas colunas, duas delas poderiam identificar de forma única a pessoa -> CPF e CNH.

Chaves candidatas
Chaves candidatas

Chaves Primárias

Dentre as nossas chaves candidatas, apenas uma pode ser a chave primária.

Uma chave primária é uma coluna (ou uma combinação de colunas) cujos valores distinguem uma linha das demais linhas em uma tabela.

Os valores de uma chave primária devem ser únicos e não podem ser nulos (not null).

Chave primária
Chave primária

A chave primária de uma tabela se relaciona com a chave estrangeira de outra tabela, por este motivo é importante definir qual será a chave primária.

Chaves Alternadas

As chaves candidatas que não foram eleitas primárias, serão reconhecidas como chaves alternadas (ou chaves alternativas).

No exemplo que estamos utilizando a nossa coluna de CNH será a nossa chave alternada.

Chave alternativa ou alternada
Chave alternativa ou alternada

Chave Estrangeira

Uma chave estrangeira se trata de uma coluna (ou combinação de colunas), cujos valores aparecem na chave primária da tabela que está relacionada.

Por meio da chave estrangeira é possível criar relacionamentos em um banco de dados relacional.

Relacionamento
Relacionamento

Observe que através da placa conseguimos identificar qual carro cada pessoa dirige, este é o papel da chave estrangeira, promover um relacionamento seguro entre as tabelas.

Conceito de Restrição de Integridade

Quando criamos tabelas em bancos de dados, essas tabelas aceitam qualquer valor, ou seja, se quisermos adicionar um produto com preço negativo ou um cliente sem nome e sem CPF, nada nos impede.

E é claro que isso não faz o menor sentido!

Para garantir que os dados terão algum nível de consistência, vamos precisar criar as Restrições de Integridade.

Elas ajudam a evitar erros humanos no momento de registrar valores em um banco de dados.

Exemplo de Restrição de Integridade:

  • Integridade e Vazio: Informa se os valores da coluna são opcionais ou não.
  • Integridade de Chave: Valores em uma chave primária não devem ser nulos.
  • Integridade Referencial: Valores de uma coluna em uma tabela são válidos baseados nos valores em outra tabela relacionada

Dicionário de Dados:

Um dicionário de dados é um documento usado para armazenar informações sobre o conteúdo, formato e estrutura de um banco de dados, assim como o relacionamentos entre os seus elementos.

Em resumo, se trata de um documento que explica e detalha todas as entidades, atributos e relacionamentos.

É importante criar um dicionário de dados para minimizar erros ao criar a estrutura física do banco de dados e permitir documentar a lógica por trás do projeto.

Anomalias em Banco de Dados

Anomalias em banco de dados são mudanças em dados que podem gerar inconsistência no banco.

Geralmente é representada por situações em que dados que deveriam ser iguais, diferem.

Por exemplo, o valor de um determinado produto devem ser iguais tanto nas tabelas de venda como na tabela de nota fiscal.

Se não forem iguais existe ali uma inconsistência, que geralmente ocorre quando o banco de dados é projetado de forma inadequada.

As anomalias são classificadas entre 3 categorias:

  • Anomalia de inserção
  • Anomalia de exclusão
  • Anomalia de atualização

Temos uma aula detalhada para você entender a fundo sobre Anomalias em Banco de Dados.

Formas Normais

As formas normais são um passo a passo de correção nas tabelas do banco de dados, para corrigir as anomalias. Esse passo a passo garante a reestruturação bem-feita da estrutura, assim, você não deixe nada para trás.

Para as séries de formas normais existem 3 principais:

  • Primeira Forma Normal
  • Segunda Forma Normal
  • Terceira Forma Normal

Também temos uma aula completa sobre Formas Normais no detalhe aqui no canal!

Para você complementar essa aula é importante ler as aulas complementares sobre as formas normais e anomalias!

Ficamos por aqui, na próxima aula vamos utilizar tudo que vimos até agora em um projeto!

Até lá!

Projeto de Modelagem de Banco de Dados – Aula 4 – Modelo Físico e Projeto

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Fala Impressionadores! Hoje temos a quarta e última aula da Série Projeto de Modelagem de banco de Dados SQL.

Nessa aula eu vou te mostrar o modelo físico de bancos de dados, ou seja, vou te mostrar a implementação do projeto no SQL (usando a linguagem SQL).

Claro que antes disso vou passar por algumas etapas para que você entenda como é estruturado esse processo.

Com isso nós vamos passar para os Sistemas de Gerenciamento de Bancos de Dados (SGBDs) para colocar em prática o que aprendemos.

Para essa implementação eu vou utilizar o SQL Server, MySQL, PostgreSQL e Oracle Database, assim você vai conseguir ver as diferenças entre cada um dos sistemas mais usados no mercado de trabalho!

Projeto de Modelagem de Banco de Dados
Última aula

Modelo SQL e Sistemas de Banco de Dados

É no modelo físico que vamos implementar o projeto de modelagem através da linguagem SQL.

Sabemos que para utilizar a linguagem, precisamos escolher um programa de banco de dados, esses programas são comumente chamados de Sistemas de Gerenciamento de Bancos de Dados (SGBDs).

Projeto de Modelagem de Banco de Dados
SGBDs

Projeto Prático

No nosso projeto prático devemos modelar um banco de dados de uma coladora de carro.

Embora o modelo que vamos fazer seja simples, é o suficiente para passar por todas as etapas da modelagem

Projeto de Modelagem de Banco de Dados
etapas da modelagem

E é o suficiente também para que você pense em possibilidades para melhorar o projeto.

Para este projeto, devemos modelar os seguintes aspectos:

Projeto de Modelagem de Banco de Dados
1º Passo
  • Clientes alugam carros em agências
  • 1 cliente pode alugar mais de 1 carro e 1 carro pode ser alugado por mais de uma pessoa (em uma determinada data)
  • 1 carro pertence a uma agência e 1 agência pode ter mais de 1 carro
  • As informações de clientes que precisamos armazenar são: CNH, Nome, Cartão e Telefone.
  • As informações de carros que precisamos armazenar são: placa, modelo, Ano e Agência.
  • As informações de agências que precisamos armazenar são: numero da Agência, Endereço e Contato.
  • Não podemos ter nenhum dado nulo dentro do banco de dados, todas as informações devem ser sempre preenchidas.
Projeto de Modelagem de Banco de Dados
2º Passo

Entidades:

  • Clientes
  • Carro
  • Agência

Relacionamento:

  • Cliente aluga Carro
  • Carro pertence e Agência

Atributos:

  • Clientes -> CNH, Nome, Cartão, Telefone
  • Carro -> Placa, Modelo, Ano, Número da Agência
  • Agência -> Número da Agência, Endereço, Contato
Projeto de Modelagem de Banco de Dados
3º Passo

Nesta etapa vamos tornar nosso modelo mais visual

Projeto de Modelagem de Banco de Dados
Modelo
Projeto de Modelagem de Banco de Dados
4º Passo

Outro ponto será definir as cardinalidades:

cardinalidade
cardinalidade
5º Passo
5º Passo

Geralmente nós vamos precisar de uma tabela para cada entidade e os atributos de cada entidade se tornam as colunas da tabela.

Projeto de Modelagem de Banco de Dados
tabelas

Também temos que ter uma tabela adicional que neste projeto é a tabela de Aluguel, é esta tabela que vai relacionar cliente e carro.

Por que precisamos desta tabela adicional?

Precisamos para poder registrar cada cliente e qual foi o respectivo carro que ele alugou.

Como um cliente pode alugar vários carros e um carro pode ser alugado por vários clientes, esta é uma situação n/n na nossa cardinalidade.

Quando temos uma relação n/1 não se faz necessário ter mais uma tabela, podemos apenas acrescentar uma coluna a uma tabela existente, mas nas relações n/n o volume de dados é maior.

6º Passo
6º Passo

Nesta etapa vamos aplicar os conceitos das aulas anteriores sobre a Normalização, sendo uma série de etapas que garantem para a nossa tabela uma boa estrutura.

O modelo que estou apresentando para você já está nos moldes de normalização adequados.

A mudança que fizemos foi na coluna de endereço da tabela Agência.

Você concorda que o endereço possui diversas informações que não podem ser armazenadas de forma satisfatória em uma única coluna?

Na nossa etapa de normalização nós acrescentamos colunas no lugar da coluna Endereço (Rua, Cidade e Estado) para corrigir este problema:

Projeto de Modelagem de Banco de Dados
normalização
7º Passo
7º Passo

Aqui vamos fazer a descrição das tabelas, as relações, começamos listando todas as tabelas do banco de dados, com suas respectivas descrições e identificações das tabelas relacionadas.

Descrição
Descrição

É importante fazer este documento para cada tabela!

8º Passo
8º Passo

Finalmente vamos implementar o modelo físico em cada um dos 4 principais Sistemas de Banco de Dados.

SGBDs
SGBDs

SQL Server

Segue abaixo todo o código que vai estar disponível no material didático desta aula:

Começamos criando as tabelas:

-- MYSQL

-- Projeto de Modelagem de Banco de Dados

-- Criando a tabela Cliente

CREATE TABLE Cliente(

       CNH VARCHAR(100) NOT NULL,

       Nome VARCHAR(100) NOT NULL,

       Cartao INT NOT NULL,

       Telefone VARCHAR(100) NOT NULL,

       PRIMARY KEY(CNH)

);

Observe que estamos criando a tabela com cada linha representando uma coluna:

  • VARCHAR(100) -> significa que o valor é de texto,
  • NOT NULL -> não permite valor nulos,
  • Por último estamos colocando que a chave primária é a coluna com a CNH
-- Adicionando dados na tabela Cliente

INSERT INTO Cliente(CNH, Nome, Cartao, Telefone)

VALUES ('111111', 'André', '123456', '99999-9999');

INSERT INTO Cliente(CNH, Nome, Cartao, Telefone)

VALUES ('222222', 'Bruna', '654321', '88888-8888');

INSERT INTO Cliente(CNH, Nome, Cartao, Telefone)

VALUES ('333333', 'Caio', '321654', '77777-7777');

Para inserir valores estamos usando o recurso INSERT INTO

  • Em seguida entre parênteses estão as colunas que a tabela vai ter.
  • Estamos usando o VALUES para acrescentar os valores de cada coluna.
-- Criando a tabela Agencia

CREATE TABLE Agencia(

       NumAg INT NOT NULL,

       Rua VARCHAR(100) NOT NULL,

       Cidade VARCHAR(100) NOT NULL,

       Estado VARCHAR(100) NOT NULL,

       Contato VARCHAR(100) NOT NULL,

       PRIMARY KEY(NumAg)

);

-- Adicionando dados na tabela Agencia

INSERT INTO Agencia(NumAg, Rua, Cidade, Estado, Contato)

VALUES ('1', 'Dias Coelho', 'Rio de Janeiro', 'RJ', '2222-2222');

INSERT INTO Agencia(NumAg, Rua, Cidade, Estado, Contato)

VALUES ('2', 'Alfredo Bittencourt', 'São Paulo', 'SP', '3333-3333');

A tabela de agências segue o mesmo padrão de criação da primeira tabela criada, e para inserir valores também se repete o mesmo padrão de código.

-- Criando a tabela Carro

CREATE TABLE Carro(

       Placa VARCHAR(100) NOT NULL,

       Modelo VARCHAR(100) NOT NULL,

       Ano INT NOT NULL,

       NumAg INT NOT NULL,

       PRIMARY KEY(Placa),

       FOREIGN KEY(NumAg) REFERENCES Agencia(NumAg)

);

Nesta tabela vamos ter um diferencial, temos uma chave primária -> primary key e uma chave estrangeira -> foreign key, cada chave vai ter a referência de uma coluna.

O restante do código segue este mesmo padrão de organização.

-- Adicionando dados na tabela Carro

INSERT INTO Carro(Placa, Modelo, Ano, NumAg)

VALUES ('ABC-123', 'Honda Civic', '2019', 1);

INSERT INTO Carro(Placa, Modelo, Ano, NumAg)

VALUES ('DDE-890', 'Chevrolet Onix', '2021', 1);

INSERT INTO Carro(Placa, Modelo, Ano, NumAg)

VALUES ('FGI-314', 'Fiat Cronos', '2020', 2);

-- Criando a tabela Aluguel

CREATE TABLE Aluguel(

       Data DATE NOT NULL,

       CNH VARCHAR(100) NOT NULL,

       Placa VARCHAR(100) NOT NULL,

       PRIMARY KEY(CNH, Placa),

       FOREIGN KEY(CNH) REFERENCES Cliente(CNH),

       FOREIGN KEY(Placa) REFERENCES Carro(Placa)

);

-- Adicionando dados na tabela Aluguel

INSERT INTO Aluguel(Data, CNH, Placa)

VALUES ('2023-01-10', '111111', 'DDE-890');

INSERT INTO Aluguel(Data, CNH, Placa)

VALUES ('2023-01-11', '222222', 'FGI-314');

INSERT INTO Aluguel(Data, CNH, Placa)

VALUES ('2023-01-11', '333333', 'ABC-123');

SELECT * FROM Cliente;

SELECT * FROM Agencia;

SELECT * FROM Carro;

SELECT * FROM Aluguel;

Passado o código para o programa vamos executá-lo, a linguagem SQL tem este padrão e vamos executar este código em diferentes programas de forma muito semelhante.

Como executar o código?

Para executar e visualizar o código é necessário antes selecionar as linhas do código e depois clicar em executar. O código executa a parte selecionada.

Outro detalhe é que, no programa Oracle Database vamos ter uma pequena diferença na hora de declarar a variável texto.

As colunas que forem VARCHAR serão escritas como VARCHAR2, este é um padrão do Oracle para variáveis de texto, o restante é o mesmo padrão dos demais.

Feito isso vamos ter nosso código rodando perfeitamente!

Recomendo que assista às aulas adicionais nos links desta aula, baixe os programas para rodar o código e testar!

Conclusão – Projeto de Modelagem de Banco de Dados

Esta é uma aula de introdução ao projeto de modelagem de dados, temos aulas sobre modelagem de dados, entidades e normalização na plataforma, mas este será um projeto passo a passo mostrando o trabalho da modelagem até a implementação do projeto no SQL.

Não perca as próximas aulas! Eu fico por aqui! Até mais!

Hashtag Treinamentos

Para acessar outras publicações de SQL, clique aqui!


Quer aprender mais sobre SQL com um minicurso básico gratuito?

Quer sair do zero no Python e virar uma referência na sua empresa? Inscreva-se agora mesmo no Python Impressionador