Douglas Legramante

Douglas Legramante

Informática

Técnico em Informática · Back-End II

02-Modelagem Relacional da StockAPI

Construção do DER da StockAPI

02 - Modelagem Relacional da StockAPI

Disciplina: Desenvolvimento Back-end II


Sumário

  1. Do domínio ao DER
  2. Vocabulário: entidade, atributo, chave primária
  3. Relacionamentos: 1:N e N:N
  4. Chave estrangeira
  5. O DER oficial da StockAPI
  6. Convenções de nomenclatura

1. Do domínio ao DER

Na aula anterior, cada dupla mapeou informalmente as entidades de um domínio de negócio. Hoje formalizamos esse raciocínio com uma ferramenta padrão da indústria: o DER — Diagrama Entidade-Relacionamento.

Um DER mostra, antes de qualquer linha de código:

  • quais tabelas o sistema vai ter
  • quais dados cada tabela guarda
  • como as tabelas se conectam entre si

2. Vocabulário: entidade, atributo, chave primária

TermoO que éExemplo
EntidadeUma tabela — representa um "tipo de coisa"produtos, clientes
AtributoUma coluna da tabelanome, preco, email
Chave primária (PK)A coluna que identifica um registro de forma únicaid

Toda tabela da StockAPI tem uma coluna id como chave primária — é o padrão que vamos seguir o semestre inteiro.


3. Relacionamentos: 1:N e N:N

Um-para-muitos (1:N)

Uma categoria tem muitos produtos, mas cada produto pertence a apenas uma categoria.

categorias (1) ────────── (N) produtos

Isso se resolve com uma chave estrangeira direto na tabela do lado "N": produtos.categoria_id.

Muitos-para-muitos (N:N)

Um pedido tem vários produtos, e um produto aparece em vários pedidos.

Nenhuma das duas tabelas sozinha resolve isso — é preciso uma tabela associativa (também chamada de tabela de junção):

pedidos (1) ── (N) itens_pedido (N) ── (1) produtos

A tabela itens_pedido guarda um par (pedido, produto) por linha, mais informações específicas daquele item (quantidade, preço no momento da compra).

Por que isso importa: é exatamente a peça que ficou em aberto na atividade da aula anterior, quando perguntamos "que tabela adicional seria necessária". Agora ela tem nome — tabela associativa — e um lugar certo no projeto: itens_pedido.


4. Chave estrangeira

Uma chave estrangeira (FK) é uma coluna que aponta para a chave primária de outra tabela.

produtos.categoria_id  →  aponta para  →  categorias.id

É assim que o banco garante consistência: não é possível cadastrar um produto com uma categoria_id que não existe na tabela categorias.


5. O DER oficial da StockAPI

categorias (1)──(N) produtos (1)──(N) itens_pedido (N)──(1) pedidos (N)──(1) clientes

usuarios  — tabela independente, usada para autenticação (JWT)

produtos

ColunaTipoChave
idINTPK
nomeVARCHAR(100)
descricaoTEXT
precoDECIMAL(10,2)
quantidade_estoqueINT
categoria_idINTFK → categorias.id

categorias

ColunaTipoChave
idINTPK
nomeVARCHAR(60)

clientes

ColunaTipoChave
idINTPK
nomeVARCHAR(100)
emailVARCHAR(120)
telefoneVARCHAR(20)

pedidos

ColunaTipoChave
idINTPK
cliente_idINTFK → clientes.id
data_pedidoDATETIME
statusVARCHAR(20)

itens_pedido

ColunaTipoChave
idINTPK
pedido_idINTFK → pedidos.id
produto_idINTFK → produtos.id
quantidadeINT
preco_unitarioDECIMAL(10,2)

Repare que itens_pedido tem duas chaves estrangeiras — é isso que resolve o relacionamento N:N entre pedidos e produtos.


6. Convenções de nomenclatura

Para manter o projeto consistente até a conclusão da disciplina:

  • Nomes de tabela no plural e em snake_case: produtos, itens_pedido
  • Toda tabela tem uma coluna id como chave primária
  • Chave estrangeira nomeada como entidade_id: categoria_id, cliente_id
  • Nomes em português, minúsculo, sem acento e sem espaço

Para a próxima aula

03 — Conectando ao MySQL. Vamos instalar o MySQL, criar o banco stockapi a partir do DER de hoje, e fazer a primeira conexão pelo Node.js usando o pacote mysql2.