UC2 · Implementar Banco de Dados

Atributos

Aula 04 — Qualificando cada entidade

Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

O mapa de hoje

  • Bloco 1 — o que é atributo e quais tipos existem
  • Bloco 2 — escolher o tipo de dado de cada atributo
  • Bloco 3 — o dicionário de dados, e os erros que custam caro
  • Bloco 4 — mão na massa: atributos e dicionário do projeto do grupo
Hoje o DER ganha o segundo símbolo: as linhas dentro da caixa.
Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

Retomando a Aula 03

  • O que são os três testes para um substantivo virar entidade?
  • Quais entidades o seu grupo definiu ontem?
  • Por que catálogo não virou entidade?
Pegue agora a lista do seu grupo. Ela é o material de trabalho de hoje — sem ela, o Bloco 4 não acontece.
Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

Bloco 1

O que é um atributo

Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

icone Ontem vocês escreveram JOGO. E agora?

A entidade JOGO está no papel de vocês desde ontem. Só que uma caixa com o nome JOGO dentro não aluga nada.

O que a locadora precisa saber sobre cada jogo para conseguir emprestá-lo?

  • título · gênero · ano de lançamento · classificação indicativa
Cada um desses é um atributo: uma característica da entidade, um dado guardado sobre cada ocorrência dela.
EN PT
attribute atributo — característica da entidade
field / column campo / coluna — como o atributo aparece na tabela
value valor — o conteúdo do atributo numa linha
Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

Legenda — o atributo no desenho

Ontem a caixa estava vazia. Hoje ela ganha linhas — cada uma é um atributo, com o tipo à esquerda e o nome à direita:

A caixa da entidade JOGO, ainda sem nenhum atributo

A mesma caixa JOGO, agora com os atributos e o tipo de cada um

Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

icone Quantos atributos? O teste da necessidade

Para cada atributo candidato, pergunte:

  1. Alguém vai preencher isso, toda vez?
  2. Alguém vai consultar ou decidir alguma coisa com isso?
  3. Se ficar em branco, o sistema ainda funciona?
Se a resposta for "não sei", o atributo provavelmente não entra ainda. É muito mais barato acrescentar uma coluna depois do que limpar uma coluna cheia de lixo.
Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

icone Atributo simples × composto

Composto (evite)

endereco_completo =
"Rua das Flores, 120, Porto Alegre"

Filtrar por cidade exige "cortar" o texto.

Simples (prefira)

logradouro · numero · cidade · cep

Filtrar por cidade vira comparação direta.

CLIENTE_RUIM guarda o endereco inteiro numa coluna so; CLIENTE_BOM separa em logradouro, numero e cidade

Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

icone Atributo multivalorado — o que fazer com "vários"

O cliente tem dois telefones. Onde guardar?

Tentativa Problema
telefones = "99999-1111 / 98888-2222" Como buscar por um número? Como saber qual é o celular?
telefone1, telefone2, telefone3 E quem tem quatro? E quem tem um só, sobra coluna vazia?
Uma entidade TELEFONE ligada a CLIENTE Funciona para qualquer quantidade
Atributo que aceita vários valores quase sempre é uma entidade nova esperando para nascer. Guarde esta frase — ela volta inteira na Aula 09 (1ª forma normal).
Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

icone Atributo derivado — o que não se guarda

idade do cliente não é atributo. data_nascimento é.

  • A idade muda sozinha todo ano; a data de nascimento, nunca
  • Guardar idade significa ter que atualizar todo mundo, todo dia
  • A idade se calcula a partir da data, na hora da consulta
Mesma lógica do erro "modelar o relatório" da Aula 03: guarde o fato, calcule o resultado.
Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

Checagem do Bloco 1

Classifique: simples, composto, multivalorado ou derivado?

  • nome_completo do cliente
  • email do cliente, que pode ter mais de um
  • tempo_de_cadastro em anos
  • titulo do jogo
  • nome_e_telefone num campo só
Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

Intervalo

10 minutos

Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

Bloco 2

Tipos de dado — dizendo ao banco o que esperar

Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

icone Por que o tipo importa

Todo atributo tem um tipo de dado: o banco precisa saber o que pode entrar ali.

  • O tipo impede lixo: data_retirada não aceita "amanhã de tarde"
  • O tipo habilita operação: só dá para somar o que é número, só dá para calcular intervalo entre datas
  • O tipo ordena certo: como texto, 10 vem antes de 9
Esta é a integridade da Aula 01 na prática: a primeira regra que o banco faz valer por você é o tipo de cada coluna.
Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

icone Os tipos que vamos usar

Tipo (PostgreSQL) EN → PT Use para
VARCHAR(n) variable character — texto de até n caracteres nome, título, gênero
TEXT text — texto sem limite descrição, observação
INTEGER integer — número inteiro ano, quantidade
NUMERIC(p,s) numeric — número com casas decimais preço, valor
DATE date — data data de retirada
BOOLEAN boolean — verdadeiro/falso ativo, devolvido
Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

icone Erro comum — número que não é número

Campo Parece É
telefone número texto — tem traço, parêntese e zero à esquerda
cep número texto — 01000-000 perderia o zero
cpf número texto — mesma coisa
numero_da_casa número texto — existe "120-A" e "s/n"
Regra prática: se você não vai somar nem calcular média, provavelmente é texto — mesmo que só tenha dígitos.
Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

Escolhendo o tamanho

VARCHAR(n) — quanto vale o n?

  • Apertado demais quebra: VARCHAR(20) para título de jogo corta "The Legend of Zelda: Tears of the Kingdom"
  • Largo demais não custa espaço no PostgreSQL, mas esconde erro: VARCHAR(500) para um nome aceita um parágrafo inteiro colado sem querer
  • Comece por um valor honesto: nome 100, título 150, gênero 40, e-mail 120
Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

icone Nulo — a diferença entre "vazio" e "zero"

NULL quer dizer "não sei" ou "não se aplica". Não é zero. Não é texto vazio. É a ausência de valor.
Campo 0 significa NULL significa
dias_de_atraso devolveu no prazo ainda não devolveu
nota_do_cliente avaliou com nota zero não avaliou

Para cada atributo do dicionário, decida: pode ser nulo ou não?

Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

Um exemplo inteiro — a entidade CLIENTE da confeitaria

Atributo Tipo Nulo? Por quê
nome VARCHAR(100) não sem nome não dá para entregar
telefone VARCHAR(20) não é como a confeitaria avisa que ficou pronto
email VARCHAR(120) sim nem todo cliente tem ou quer dar
data_cadastro DATE não preenchido pelo sistema, sempre
restricao_alimentar TEXT sim a maioria não tem
Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

Checagem do Bloco 2

Que tipo você usaria?

  • titulo do jogo
  • ano_lancamento
  • preco_diaria
  • data_devolucao
  • devolvido (sim/não)
  • cpf do cliente
Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

Intervalo

10 minutos

Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

Bloco 3

O dicionário de dados

Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

icone O que é o dicionário de dados

Uma tabela que descreve cada atributo do modelo — o manual do seu banco.

Entidade Atributo Tipo Obrigatório? Significa
JOGO titulo VARCHAR(150) sim Nome comercial do jogo
JOGO genero VARCHAR(40) sim Ação, RPG, Esporte...
JOGO ano_lancamento INTEGER não Ano de lançamento original
EMPRESTIMO data_prevista DATE sim Dia combinado para devolver
Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

icone Nomes de atributo — combinados do curso

  1. Tudo em minúsculas, sem acento e sem espaço: data_retirada
  2. Palavras separadas por underline, nunca por espaço ou hífen
  3. Nome no singular: telefone, não telefones
  4. Sem repetir o nome da entidade: em JOGO, use titulo, não titulo_jogo
Combinado do curso, valendo da Aula 04 até a 18: essas quatro regras. Elas evitam aspas duplas no SQL e erro bobo de digitação na Aula 11.
Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

As caixas do projeto, preenchidas

As quatro entidades da locadora com os atributos listados dentro de cada caixa

Está faltando uma coisa importante nessas caixas: nada aqui diz como identificar um jogo específico entre todos. Dois jogos podem ter o mesmo título. Isso é a chave primária, e é a Aula 05.
Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

Checagem do Bloco 3

Corrija os nomes destes atributos:

  • Data De Retirada
  • telefones
  • nome_do_cliente (dentro da entidade CLIENTE)
  • preço
Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

Intervalo

10 minutos

Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

Atributos e dicionário do seu projeto

  1. Peguem a lista de entidades da Aula 03
  2. Para cada entidade, listem os atributos — aplicando o teste da necessidade
  3. Marquem quais são compostos, multivalorados ou derivados, e decidam o que fazer com cada um
  4. Escolham o tipo de dado de cada atributo que sobrou
  5. Preencham o dicionário de dados na planilha modelo
  6. Confiram os nomes contra as 4 regras do combinado
Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

Lembrete de entrega

Padrão Hoje
grupoNN-aulaNN-artefato.<ext> grupo03-aula04-dicionario.xlsx

Entrega na pasta da turma até o fim da aula. O mesmo padrão da Aula 03.

Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

Enquanto vocês trabalham

Perguntas que destravam:

  • Esse atributo, quem preenche? quando?
  • Esse campo pode ficar vazio? O que acontece se ficar?
  • Esse dado muda sozinho com o tempo? (Então é derivado.)
  • Esse campo aceita mais de um valor? (Então cuidado.)
  • Esse dado você já precisou consultar em pedaços? (Então é composto.)
Se o grupo travar numa decisão, escrevam as duas opções e sigam. A Aula 09 (normalização) existe exatamente para revisar essas escolhas.
Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

Devolutiva — passo de mesa em mesa

Eu passo em cada grupo. Tenham pronta uma decisão difícil:

  • um atributo que foi descartado — e por quê
  • ou um multivalorado/composto que virou outra coisa
Os multivalorados que eu encontrar vão para o quadro: eles voltam na Aula 09 como exemplo de 1ª forma normal.
Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

Antes da próxima aula

Testar em casa: pegue um cadastro que você já preencheu (banco, loja, academia) e tente classificar 5 campos dele: simples, composto, multivalorado ou derivado.

Tarefa opcional: complete a coluna "Significa" do dicionário do grupo para todos os atributos — é a coluna que mais fica em branco e a que mais vale depois.

Para treinar: exercícios da Aula 04 — os mecanismos rodando na tela — e oito perguntas com resposta na hora. No site da UC, na página da aula.

Aula 04 · 09/10/2026 · Indicadores 2, 4
UC2 · Implementar Banco de Dados

Para a próxima aula

Dois clientes podem ter o mesmo nome. Dois jogos podem ter o mesmo título. Como o banco aponta para um, e só um?

Aula 04 · 09/10/2026 · Indicadores 2, 4
← todas as aulas