Capítulo 5 — Bancos de dados e tabelas
Mapa da aula
Aula 05 publicada. Mapa, exemplo, EX013.
flowchart TD
N0["5.1 Tabelas e chaves"]
N1["5.2 Consultas"]
N2["5.3 Projeto e qualidade"]
N3["5.4 Normalização em resumo"]
N0 --> N1 --> N2 --> N3
N3 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX013"]
Desenho lógico
flowchart LR
N0["5.1 Tabelas e chaves"]
N1["5.2 Consultas"]
N2["5.3 Projeto e qualidade"]
N3["5.4 Normalização em resumo"]
N0 --> N1 --> N2 --> N3 --> Q["EX013"]
[5.1 Tabelas e chaves]
|
v
[5.2 Consultas]
|
v
[5.3 Projeto e qualidade]
|
v
[5.4 Normalização em resumo]
|
v
[Exemplo resolvido] --> [Exercício EX013]
Objetivos de aprendizagem
Você vai (1) descrever tabelas, chaves e relacionamentos; (2) escrever consultas simples; (3) explicar como o projeto do banco de dados sustenta a qualidade dos dados.
5.1 Tabelas e chaves
Amara aprende que um banco de dados relacional guarda os dados em tabelas de linhas e colunas. A tabela de membros tem uma linha por membro do programa de fidelidade, identificada por um número de membro que funciona como chave primária. A tabela de compras registra cada compra com o número de membro como chave estrangeira, que a liga ao membro. As chaves impedem membros duplicados e garantem que as compras se refiram a membros que existem. Ela percebe que escolhas de projeto como as chaves impõem regras automaticamente. O banco de dados rejeita uma compra com um número de membro desconhecido.
5.2 Consultas
Usando um pequeno banco de dados sintético montado com o módulo sqlite3 do Python, Amara escreve consultas para contar os membros por loja, somar as compras por mês e encontrar membros sem compras em um ano. Ela aprende que uma consulta é uma pergunta precisa, e que a formulação importa: contar compras e contar membros distintos que compraram dão respostas diferentes. Ela registra cada consulta com uma descrição simples, para que outras pessoas possam verificar o que foi perguntado e reutilizá-la depois. Suas descrições ficam em um arquivo compartilhado, com o texto da consulta ao lado.
5.3 Projeto e qualidade
Amara descobre que o antigo banco de dados de fidelidade da Harbourline guardava a loja do membro como texto livre, o que produzia variações como Loja 12, loja doze e L12. Os relatórios agrupados por loja dividiam uma loja em várias. Um projeto melhor guarda um código de loja ligado a uma tabela de referência de lojas. Ela explica que um bom projeto evita muitos problemas de qualidade já na entrada, o que é mais barato do que limpá-los depois, e relaciona isso às regras tratadas nos capítulos seguintes. O novo sistema de fidelidade usa códigos de loja, e os antigos valores em texto são mapeados uma única vez.
5.4 Normalização em resumo
O Dr. Lindqvist apresenta a normalização: organizar as tabelas para que cada fato seja guardado uma única vez. No banco antigo, o endereço do membro aparece em cada linha de compra, de modo que mudar um endereço deixa as linhas mais antigas inconsistentes. Levar o endereço para a tabela de membros resolve isso. Amara observa que a normalização reduz a inconsistência, mas pode tornar as consultas mais complexas, e que bancos de dados de relatórios às vezes repetem dados de propósito, por desempenho. O equilíbrio certo depende de como os dados são usados. Por esse motivo, o banco de relatórios da Harbourline repete os nomes das lojas nas tabelas de vendas, por projeto.
Exemplo resolvido
Amara aprende chaves e relacionamentos, escreve consultas em sqlite3 com descrições simples, descobre nomes de lojas em texto livre que dividem os relatórios e vê a normalização eliminar endereços repetidos.
Caso sintético. O banco de dados é sintético.
Erros e limites
Contar linhas quando a pergunta pede pessoas distintas dá respostas erradas.
Exercícios
- EX013 — Papel da chave estrangeira. A que o número de membro nas compras está ligado? Rubrica: 3 = à tabela de membros;; 2 = parcialmente correto;; 1 = vago;; 0 = nenhuma.
- EX014 — Problema do texto livre. O que os nomes de lojas em texto livre causaram? Rubrica: 3 = uma loja dividida em várias nos relatórios;; 2 = parcialmente correto;; 1 = vago;; 0 = nenhuma.
- EX015 — Contrapartida da normalização. O que a normalização pode dificultar? Rubrica: 3 = as consultas;; 2 = parcialmente correto;; 1 = vago;; 0 = nenhuma.
Continue estudando — aula 05 (capítulo 05 de 40)
← Capítulo 04 · Índice das aulas · Capítulo 06 →
Continue para a próxima aula já escrita.