1
resposta

[Dúvida] Posso botar fotos, arquivos no geral e textos inteiros no banco de dados?

Pessoal, tudo bem?

Sempre tive dúvida se eu poderia colocar fotos, textos ou até mesmo arquivos no geral no banco de dados, porque assim poderíamos ter uma interface mais "gerenciável" como o WordPress ou outros sites pré-fabricados ou um sistema gerenciador. Por exemplo, em vez de programar a foto no site em HTML, como eu poderia, inserir uma foto num site através de um upload de arquivo e depois coloca-lo na posição adequada dentro de um site, sempre achei que poderia usar o banco de dados para isso, mas até agora ninguém me explicou isso direito. Aguardo a resposta.

Obrigado.

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta

Boa questão você trouxe — e ela é muito comum entre quem está começando a entender como bancos de dados e sistemas web se integram .

Vou tentar explicar rsrs

Sim, você pode armazenar fotos, arquivos e textos no banco de dados…

Mas nem sempre é a melhor escolha — e vou te explicar o porquê.

1. Textos (dados textuais)

Podem ser armazenados normalmente.

  • Campos do tipo VARCHAR, TEXT, CLOB (dependendo do SGBD) guardam textos curtos ou longos.
  • É comum guardar artigos, descrições, comentários, postagens, etc.

Exemplo:

CREATE TABLE posts (
    id SERIAL PRIMARY KEY,
    titulo VARCHAR(200),
    conteudo TEXT
);

→ Aqui você guarda o texto de um post de blog, por exemplo.

2. Fotos e arquivos (binários)

Podem ser guardados como BLOBs (Binary Large Objects).

Exemplo:

CREATE TABLE imagens (
    id SERIAL PRIMARY KEY,
    nome_arquivo VARCHAR(255),
    dados BYTEA  -- tipo usado no PostgreSQL
);

Mas...
Guardar arquivos diretamente no banco pode gerar problemas de desempenho e manutenção:

  • O banco cresce muito rápido.
  • Backups e restores ficam pesados.
  • Pode haver lentidão no carregamento.

3. A prática mais comum e recomendada

É guardar o arquivo no sistema de arquivos (ou na nuvem) e apenas o caminho (URL) no banco.

Exemplo:

CREATE TABLE imagens (
    id SERIAL PRIMARY KEY,
    nome_arquivo VARCHAR(255),
    caminho VARCHAR(500)
);

Fluxo típico:

  1. O usuário faz upload da foto → o servidor salva em /uploads/imagens/... ou no S3 (Amazon, por exemplo).

  2. O servidor grava no banco apenas o caminho/URL:

    /uploads/imagens/foto123.jpg
    
  3. Quando o site é carregado, ele pega a URL do banco e mostra a imagem.

Vantagens:

  • Menor sobrecarga no banco.
  • Escalabilidade melhor.
  • Facilidade para usar CDNs e cache de imagens.

4. Exemplo prático (estilo WordPress)

O WordPress, como você citou, não guarda as imagens no banco — ele armazena:

  • No disco: o arquivo da imagem.
  • No banco: apenas metadados (nome, caminho, tipo, etc).

Assim, ele consegue exibir as imagens dinamicamente sem precisar armazenar o binário no banco.


Em resumo:

Tipo de dadoPode armazenar no banco?Prática recomendada
Texto curto (nome, descrição)SimGuardar no banco
Texto longo (artigos, posts)SimGuardar no banco
Imagens, PDFs, vídeosSim, via BLOBMelhor guardar no sistema de arquivos e salvar o caminho no banco