Alura > Cursos de Data Science > Cursos de SQL e Banco de Dados > Conteúdos de SQL e Banco de Dados > Primeiras aulas do curso Modelagem de banco de dados relacional: álgebra relacional

Modelagem de banco de dados relacional: álgebra relacional

Conhecendo o cenário - Apresentação

Te desejo boas-vindas ao curso de Modelagem de banco de dados relacional: Álgebra Relacional! Meu nome é Ana Duarte, instrutora da Escola de Dados e e vou te acompanhar nesta trajetória!

Audiodescrição: Ana se descreve como uma mulher de pele clara, olhos castanhos e cabelos curtos e também castanhos. Veste uma camiseta rosa, usa um piercing no septo e está sentada sob uma cadeira preta. Ao fundo, uma parede lisa dividida por duas cores: metade verde e metade roxo.

Você já desejou compreender a lógica da visualização de informações em um banco de dados? Ou já quis criar essa mentalidade analítica por trás da lógica relacional em que um dado é armazenado?

Se esse é o seu objetivo, convido você a conhecer a álgebra relacional, uma linguagem formal que proporciona a compreensão de visualizar tanto informações em uma linha quanto em coluna específica, por meio das operações de seleção e de projeção.

Além disso, vamos explorar as informações que se encontram em tabelas diferentes através da operação de produto cartesiano e de junção, que incluem a junção natural e a junção à esquerda. Neste processo, vamos aplicar conhecimentos matemáticos para executar, juntamente com a álgebra relacional, as informações de união, interseção e diferença de conjuntos.

Tudo isso será visto com uma ferramenta bastante simplificada e com um projeto prático, juntamente com o Clube do Livro, a empresa case que utilizaremos para nortear o conteúdo. Ao longo do curso, serão fornecidas diversas atividades para você expandir seu conhecimento e raciocínio.

Para conseguir acompanhar este curso, é importante que você tenha conhecimentos prévios em conceitos de modelagem. Vamos lá?

Conhecendo o cenário - Clube do livro

O principal objetivo desse curso é permitir que você consulte dados usando as operações da álgebra relacional, focado nas necessidades do Clube do Livro.

O Clube do Livro, que será a empresa case deste curso, é um e-commerce que vende livros e artigos de livraria. Vamos entender o que essa empresa precisa, quais são seus dados e como visualizá-los.

Faremos isso utilizando a álgebra relacional, uma linguagem formal que usa símbolos para representar operações específicas. Ao utilizar essa linguagem, que é mais uma forma de criar uma relação com dados, aprenderemos sobre essas operações para visualizar os dados e responder a algumas perguntas. Essas perguntas incluem, por exemplo, quais os nomes das pessoas vendedoras e quais os livros mais vendidos.

Aqui, estamos usando o Clube do Livro como um exemplo de empresa para termos objetivos específicos alinhados a essas operações. Contudo, é interessante que você observe o seu processo de raciocínio e de aprendizado. À medida que avançarmos no curso, a complexidade vai aumentar, pois vamos aprender sobre operações isoladas, mas também sobre como combiná-las, o que trará mais robustez para a álgebra relacional.

A álgebra relacional é um conhecimento prévio do SQL, portanto, é com ela que criamos um raciocínio lógico para tornar a linguagem SQL mais fácil de ser lida e compreendida. É por isso que, durante a modelagem e a construção de um banco de dados relacional, aprendemos essa linguagem para criar o raciocínio e entender aspectos de otimização de consultas.

Além disso, é importante que você avalie esses conhecimentos e expanda o cenário para além de uma livraria. Para ajudá-lo nisso, criamos várias atividades ao longo do curso, nas quais você é convidado a refletir e enfrentar os desafios propostos.

Agora, vamos começar a conhecer os dados que precisamos!

Conhecendo o cenário - Ferramenta e dados

Agora que já entendemos o Clube do Livro, a empresa case que iremos acompanhar ao longo deste curso, vamos compreender quais são as tabelas que constituem a base de dados dessa empresa.

Tabelas que compõem a base de dados

Possuímos 6 tabelas, também chamadas de relações ou entidades, que contêm informações específicas.

BASE DE DADOS:

Livros (id_livro, nome_livro, autor, preco, qtd_estoque)

Vendedores (id_vendedor, nome, anos_exp)

Clientes (id_cliente, nome, cidade, email)

Vendas (id_pedido, id_vendedor_vendas, id_livro, qtd_vendida

LivroMaisVendidos (id_livro, ano, mais vendidos)

LivrosRecomendados (id_livro, fonte_recomendacao, nota_media)

A primeira tabela é a tabela de livros, que armazena o código do livro e informações sobre ele. Em seguida, temos a tabela de pessoa vendedora, que fornece informações sobre essas pessoas.

Depois, temos a tabela de clientes, que garante informações dos clientes, incluindo cidade, e-mail e o código desse cliente, e o histórico de vendas, armazenado na tabela de vendas.

Por fim, temos duas tabelas especiais: a primeira é de livros mais vendidos, onde em um ano específico, podemos ver quais foram os livros mais vendidos no passado, e a de livros recomendados, que é um histórico de livros sugeridos por fontes externas, como uma revista famosa ou um site.

Agora, vamos conhecer qual será o ambiente de desenvolvimento para praticar as operações de Álgebra Relacional.

Conhecendo o ambiente de desenvolvimento

Para praticar essas operações, vamos pesquisar "relax algebra relacional" no navegador. Vale ressaltar que Relax corresponde ao nome do ambiente.

Em seguida, acessamos o primeiro link, que corresponde a um link do GitHub: https://dbis-uibk.github.io/relax/landing. Nele, temos a ferramenta Relax, um ambiente web que precisa apenas de um navegador de internet para acessar. Este ambiente não pode ser uma barreira para seus conhecimentos, mas sim um facilitador para praticarmos cada operação à medida que os conhecemos.

Ao acessarmos, nos é fornecido uma introdução sobre a ferramenta, além de um guia de ajuda e as implementações feitas nesta ferramenta. Vamos clicar em "Get Started" para começar.

A janela para a qual seremos redirecionados é o visual com o qual mais teremos contato ao longo do curso. Note que no topo temos um menu com algumas opções. A segunda opção deste menu, da esquerda para direita, é "Linguagem", onde podemos selecionar "pt" para o português, mas sinta-se à vontade para escolher a linguagem que preferir.

A última opção deste menu superior corresponde ao light mode (modo claro) ou o dark dode (Modo Escuro). Ao clicá-la, alternamos entre esses dois modos, e o símbolo também alterna entre um sol e uma meia-lua em alusão a cada um desses modos. O dark mode é uma implementação recente e pode apresentar algum erro, por isso é interessante optarmos pelo light mode.

Na lateral esquerda da tela, conseguimos visualizar a base de dados inserida. Por padrão, ele traz uma base de dados chamada UIBK, que tem três relações. Ou seja, três tabelas diferentes com seus respectivos atributos. Logo mais, vamos inserir a base de dados do Clube do Livro, por enquanto vamos apenas explorar a ferramenta.

No centro, temos uma janela com três abas. A primeira aba é a de Álgebra Relacional, onde iremos criar e escrever os comandos. Nela, temos os símbolos desta linguagem conheceremos mais adiante

Depois, temos a aba de SQL, onde podemos usar os comandos de SQL para consultar as bases de dados. Ela não será explorada neste curso.

A terceira e última aba é o Editor de Grupo, que também será utilizado. Este é o local onde editamos a base de dados, as tabelas, as relações e os atributos.

Explorando as bases de dados

Vamos começar a explorar as bases de dados. Para isso, vamos clicar em "Select DB", na lateral esquerda, e uma nova janela será aberta.

No âmbito desta relação, é crucial que você entenda que este ambiente é projetado especificamente para treinar operações de álgebra relacional, por isso, temos alguns datasets pré-definidos disponíveis para prática.

Para fins de treinamento, utilizaremos um dataset específico, o do clube do livro. Então, vamos clicar na opção "Criar Novo Dataset", que vai nos redirecionar para a aba do Editor de Grupo e nos mostrar uma série de comandos:

-- this is an example
group: nameOfTheNewGroup

A = {
a:string, b: number
example, 42
}

Na primeira linha, temos um comentário simbolizado por dois hifens. Sempre que tivermos dois hifens, estamos lidando com um comentário.

Vamos apagar esta linha.

group: nameOfTheNewGroup

A = {
a:string, b: number
example, 42
}

Em seguida, temos o comando group que neste ambiente denota o nome da base de dados. O nome da nossa base de dados é Clube do Livro, então vamos colocá-lo.

group: Clube do Livro

A = {
a:string, b: number
example, 42
}

Além disso, temos uma tabela de exemplo chamada A. Podemos editá-la clicando no ícone de tabela que aparece à esquerda do nome da tabela.

Ao clicar nesse ícone, abrimos uma nova aba onde poderemos editar a relação da tabela. A princípio, nos será mostrado um modelo de tabela semelhante a este:

Nome da Relação

Nomeab
Tipostringnumber
1example42
2

No topo, acima da tabela, temos um campo para inserir o nome da nossa relação, que será "Vendedores".

Esta tabela possui três atributos, ou seja, três colunas. O primeiro campo é o ID do vendedor, então colocaremos id_vendedor; o segundo campo é o nome da pessoa vendedora, portanto nome; já o terceiro campo é o número de anos de experiência, que colocaremos como anos_exp.

Nomeid_vendedornomeanos_exp
Tipostringnumber
1example42
2

Na segunda linha, precisamos especificar o tipo desse atributo. Para o ID do vendedor, que é um código, podemos definir como string (texto) ou number (número). Optaremos pela segunda opção.

Na segunda coluna, que é o nome, definiremos como string. Finalmente, para anos de experiência, definiremos o tipo number, já que é a quantidade de anos de experiência de cada pessoa vendedora.

Nomeid_vendedornomeanos_exp
Tiponumberstringnumber
1example42
2

Podemos, agora, inserir os dados. Faremos isso manualmente para a primeira pessoa vendedora, cujos dados são: 1, Lucas Silva e 5, respectivamente para cada coluna.

Nomeid_vendedornomeanos_exp
Tiponumberstringnumber
11Lucas Silva5
2

Outra possibilidade para inserção de dados é fazer o upload de dados em CSV, que é o tipo de arquivo que o Relax lê.

Vamos finalizar a edição clicando em "OK". A área de comandos, na aba Editor de Grupo, ficará assim:

group: Clube do Livro

Vendedores = {
id_vendedor, nome, anos_exp
1, 'Lucas Silva', 5
}

Perceba, portanto, que os nossos dados são lidos de maneira diferente. A tabela é representada como um CSV.

Se necessário, é sempre possível editar clicando no ícone de tabela que nos leva ao editor de relação, onde editamos a tabela de vendedores. Outra opção é criar os códigos neste editor. Inclusive, vamos copiar e colar os outros vendedores neste mesmo formato de comando. O código ficará assim:

group: Clube do Livro

Vendedores = {
id_vendedor, nome, anos_exp
1, 'Lucas Silva', 5
2, 'Camila Santos', 3
3, 'Gabriel Almeida', 7
4, 'Larissa Souza', 2
5, 'Rafael Lima', 0
6, 'Júlia Rocha', 0
}

Note que quando temos uma string (cadeia de caracteres), ela fica entre aspas. Já para um número não é necessário o uso de aspas.

Temos outras tabelas, como as de vendedores e livros, conforme vimos anteriormente na listagem da base de dados. Vamos copiar e colar os dados.

Não se preocupe em compreender toda essa quantidade de informações agora, porque é justamente a álgebra relacional e suas operações que vão nos permitir visualizar esses dados.

O código ficará assim:

group: Clube do Livro

Vendedores = {
id_vendedor, nome, anos_exp
1, 'Lucas Silva', 5
2, 'Camila Santos', 3
3, 'Gabriel Almeida', 7
4, 'Larissa Souza', 2
5, 'Rafael Lima', 0
6, 'Júlia Rocha', 0
}

Livros = {
id_livro, nome_livro, autor, preco, qtd_estoque
1, 'Percy Jackson e o Ladrao de Raios', 'Rick Riordan', 41.2, 11
2, 'Sangue de Lobo', 'Rosana Rios', 50.9, 2
3, 'Resident Evil Caliban Cove', 'S.D Perry', 18, 5
4, 'O Simbolo Perdido', 'Dan Brown', 60, 9
5, 'Sombras e Ossos', 'Leigh Bardugo', 28.9, 7
6, 'Pegasus e o Fogo do Olimpo', 'Kate O Hearn', 24.9, 8
7, 'Gossip Girl Nao me Esqueca', 'Cecily Von', 26.9, 4
8, 'Cidade das Almas Perdidas', 'Cassandra Clare', 34.45, 12
9, 'A Chama de Ember', 'Colleen Houck', 39.46, 1
10, 'A Maldicao do Tigre', 'Colleen Houck', 60, 6
11, 'O Senhor dos Anéis', 'J.R.R. Tolkien', 29.99, 10
12, 'Harry Potter', 'J.K. Rowling', 24.99, 15
13, 'Cem Anos de Solidão', 'Gabriel García Márquez', 19.99, 8
14, 'Dom Quixote', 'Miguel de Cervantes', 22.99, 12
15, 'A Revolução dos Bichos', 'George Orwell', 17.99, 20
16, 'Orgulho e Preconceito', 'Jane Austen', 18.99, 5
17, 'Crime e Castigo', 'Fyodor Dostoevsky', 21.99, 7
18, '1984', 'George Orwell', 20.99, 9
19, 'Ulisses', 'James Joyce', 25.99, 3
20, 'O Grande Gatsby', 'F. Scott Fitzgerald', 16.99, 11
}

Clientes = {
id_cliente, nome, cidade, email
1, 'João Silva', 'São Paulo', 'joao.silva@example.com'
2, 'Maria Santos', 'Rio de Janeiro', 'maria.santos@example.com'
3, 'Pedro Almeida', 'Belo Horizonte', 'pedro.almeida@example.com'
4, 'Ana Souza', 'Salvador', 'ana.souza@example.com'
5, 'Carlos Lima', 'Brasília', 'carlos.lima@example.com'
6, 'Fernanda Rocha', 'Recife', 'fernanda.rocha@example.com'
7, 'André Oliveira', 'Fortaleza', 'andre.oliveira@example.com'
8, 'Juliana Costa', 'Manaus', 'juliana.costa@example.com'
9, 'Luiz Fernandes', 'Curitiba', 'luiz.fernandes@example.com'
10, 'Laura Santos', 'Porto Alegre', 'laura.santos@example.com'
11, 'Paulo Rodrigues', 'Belém', 'paulo.rodrigues@example.com'
12, 'Carolina Menezes', 'Rio de Janeiro', 'carolina.menezes@example.com'
13, 'André Santos', 'Goiânia', 'andre.santos@example.com'
14, 'Isabella Oliveira', 'Vitória', 'isabella.oliveira@example.com'
15, 'Marcelo Costa', 'São Luís', 'marcelo.costa@example.com'
16, 'Beatriz Andrade', 'Natal', 'beatriz.andrade@example.com'
17, 'Rafael Fernandes', 'Campinas', 'rafael.fernandes@example.com'
18, 'Laura Mendes', 'Rio de Janeiro', 'laura.mendes@example.com'
19, 'Alexandre Lima', 'Cuiabá', 'alexandre.lima@example.com'
20, 'Vanessa Santos', 'Aracaju', 'vanessa.santos@example.com'
}

Vendas = {
id_pedido, id_vendedor_vendas, id_livro, qtd_vendida
1, 3, 7, 2
2, 1, 2, 5
3, 2, 4, 3
4, 4, 8, 1
5, 3, 6, 2
6, 1, 6, 4
7, 2, 3, 1
8, 4, 10, 3
9, 3, 9, 2
10, 1, 10, 1
11, 2, 12, 2
12, 4, 15, 3
13, 3, 18, 1
14, 1, 13, 4
15, 3, 17, 2
16, 2, 20, 1
17, 1, 11, 3
18, 4, 14, 2
19, 3, 19, 1
20, 2, 16, 5
21, 1, 3, 2
22, 4, 7, 3
23, 3, 10, 1
24, 1, 9, 4
25, 3, 6, 2
}

LivroMaisVendidos = {
id_livro, ano, mais_vendidos
3, 2020, 120
7, 2021, 95
9, 2019, 80
12, 2022, 150
14, 2018, 110
16, 2021, 135
18, 2020, 100
19, 2021, 90
20, 2019, 75
6, 2022, 130
}

LivrosRecomendados = {
id_livro, fonte_recomendacao, nota_media
3, 'Book Reviews', 4.2
7, 'Literary Gazette', 3.8
9, 'Readers Digest', 4.5
12, 'BestBooks Magazine', 4.1
14, 'Bookworm Reviews', 4.4
16, 'ReadItAll Blog', 4
18, 'Literary Gazette', 4.6
19, 'Book Reviews', 3.9
20, 'Readers Digest', 4.3
1, 'BestBooks Magazine', 4.5
}

Feito isso, vamos clicar em "Visualizar" para ter acesso a uma pré-visualização das tabelas que foram carregadas.

Visualização apenas dos 5 primeiros registros de cada tabela.

Vendedores

id_vendedornomeanos_exp
1Lucas Silva5
2Camila Santos3
3Gabriel Almeida7
4Larissa Souza2
5Rafael Lima0

Livros

id_livronome_livroautorprecoqtd_estoque
1Percy Jackson e o Ladrao de RaiosRick Riordan41.211
2Sangue de LoboRosana Rios50.92
3Resident Evil Caliban CoveS.D Perry185
4O Simbolo PerdidoDan Brown609
5Sombras e OssosLeigh Bardugo28.97

Clientes

id_clientenomecidadeemail
1João SilvaSão Paulojoao.silva@example.com
2Maria SantosRio de Janeiromaria.santos@example.com
3Pedro AlmeidaBelo Horizontepedro.almeida@example.com
4Ana SouzaSalvadorana.souza@example.com
5Carlos LimaBrasíliacarlos.lima@example.com

Vendas

id_pedidoid_vendedor_vendasid_livroqtd_vendida
1372
2125
3243
4481
5362

Livros Mais Vendidos

id_livroanomais_vendidosVendas.qtd_vendida
320201202
72021955
92019803
1220221501
1420181102

Livros Recomendados

id_livrofonte_recomendacaonota_media
3'Book Reviews'4.2
7'Literary Gazette'3.8
9'Readers Digest'4.5
12'BestBooks Magazine'4.1
14'Bookworm Reviews'4.4

Precisamos usar todas essas relações para começar a praticar a álgebra relacional. Então vamos clicar na opção "Use Group no Editor" para usar esse grupo no editor.

Para verificar que estamos usando esta base de dados, basta observar o esquema que aparecerá na lateral esquerda.

Feito isso, vamos alterar para a aba Álgebra Relacional para começar a executar os comandos e operações dessa linguagem!

Sobre o curso Modelagem de banco de dados relacional: álgebra relacional

O curso Modelagem de banco de dados relacional: álgebra relacional possui 93 minutos de vídeos, em um total de 47 atividades. Gostou? Conheça nossos outros cursos de SQL e Banco de Dados em Data Science, ou leia nossos artigos de Data Science.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda SQL e Banco de Dados acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas