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:
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.
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.
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:
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:
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:
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:
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
Uma entidade é um elemento da realidade que será observado e modelado. Geralmente, uma entidade executa uma ação ou recebe uma ação.
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
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.
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”.
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.
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
Existem tipos de cardinalidades
1:1 -> Quando 1 ocorrência de uma entidade se relaciona com apenas 1 ocorrência de outra entidade.
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.
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.
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.
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!
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:
O modelo conceitual foi explicado na última aula, agora vamos nos aprofundar no modelo 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:
Observe esta tabela, cada linha tem seu registro, temos a chave primária, nome e atributos, observe a organização da tabela:
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 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).
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 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.
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:
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:
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:
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á!
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!
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 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
E é o suficiente também para que você pense em possibilidades para melhorar o projeto.
Para este projeto, devemos modelar os seguintes aspectos:
Entidades:
Relacionamento:
Atributos:
Nesta etapa vamos tornar nosso modelo mais visual
Outro ponto será definir as cardinalidades:
Geralmente nós vamos precisar de uma tabela para cada entidade e os atributos de cada entidade se tornam as colunas da tabela.
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.
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:
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.
É importante fazer este documento para cada tabela!
Finalmente vamos implementar o modelo físico em cada um dos 4 principais Sistemas de Banco de Dados.
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:
-- 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
-- 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!
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!
Para acessar outras publicações de SQL, clique aqui!
Expert em conteúdos da Hashtag Treinamentos. Auxilia na criação de conteúdos de variados temas voltados para aqueles que acompanham nossos canais.