logo

Paleta - Deixe colorido🎨

Palette — Construtor visual de páginas. Não precisa ser designer.

Demonstração ao vivo Baixar Palette

Scroll

1.6. Produtos e categorias - criando tabelas de banco de dados

08/12/2019, by Ivan

Antes de criar a funcionalidade de produtos e categorias, vamos pensar sobre as informações que nossos clientes e administradores de sites precisarão. Precisamos fornecer informações suficientes sobre o produto, devemos exibir o nome do produto, descrição detalhada do produto, preço do produto. Também podemos fazer upload de uma foto do produto, bem como imagens adicionais. Pode ser necessário o peso do produto para calcular o custo de envio. A quantidade de produtos em estoque para não vender um produto que não temos. O administrador do site precisará de um ID de produto, bem como uma URL legível para mecanismos de pesquisa.

No final, devemos ter pelo menos estes campos:

Dados Descrição
ID Número do produto para uso interno do site
Name Nome do produto
ЧПУ Necessário principalmente para mecanismos de pesquisa
Description Informações detalhadas sobre o produto
SKU Número do artigo do produto para usuários do site
Price Preço do produto
Stock Quantidade de produtos no site
Primary image Imagem principal
Additional images Imagens adicionais

 Nos artigos seguintes, expandiremos essa lista, mas por enquanto, isso é o suficiente.

As categorias de produtos têm sua própria lista de campos:

Dados Descrição
ID Número da categoria para uso interno do site
Name Nome da categoria
Description Descrição da categoria
ЧПУ URL legível para mecanismos de pesquisa

Poderíamos continuar e implementar a estrutura de dados e funcionalidades para exibir produtos e categorias usando nosso framework, porém, se fôssemos fazer isso agora, perderíamos muito da possível flexibilidade. A maioria do conteúdo exibe muitas informações comuns. Se encontrarmos essas informações comuns e criarmos um tipo de conteúdo abstrato, nosso framework será mais flexível. Poderíamos usar diferentes funcionalidades para esses tipos de material sem duplicar código. Essas funcionalidades poderiam ser:

  • Controle de versão de conteúdo
  • Controle de acesso
  • Comentários em conteúdo, páginas, produtos
  • Avaliações de páginas, produtos

Páginas

As páginas serão seções estáticas comuns de nosso site: Contatos, informações sobre entrega e pagamento, etc. Os dados dessas páginas são apresentados na seguinte tabela:
Dados Descrição
Nome Nome da página
ЧПУ URL da página
ID Número interno da página
Heading Conteúdo da tag h1
Title Conteúdo da tag <title>
Content Conteúdo da página
Keywords Conteúdo da meta tag de palavras-chave
Description Conteúdo da meta tag de descrição

Content

As páginas são o tipo principal de conteúdo que expandiremos quando precisarmos armazenar mais campos. As páginas de categorias são essencialmente as mesmas páginas, apenas com mais campos para conexão com produtos. 
Dados Descrição
ID Número para uso interno
Name Nome do conteúdo
ЧПУ  
Content Conteúdo da página de conteúdo
Type Tipo de conteúdo (por exemplo, página, produto, categoria)
Order Ordenação de conteúdo, por exemplo, para itens em um menu
Parent Pai do conteúdo, necessário para hierarquia, por exemplo, para subcategorias ou catálogo de páginas
Meta keywords Palavras-chave
Meta description Meta descrição
Date created Data de criação
Creator Autor do conteúdo
Active Mostrar conteúdo aos visitantes ou não
Secure Campo para controle de acesso, por exemplo, visualização apenas para usuários registrados

Revisões

No Drupal existe um sistema de revisão, nós também teremos nosso próprio sistema semelhante.
Dados Descrição
ID Número interno do conteúdo
Current revision Número de revisão atual
Agora que planejamos nossos tipos de material, vamos começar a criar nosso banco de dados. Para cada tipo, criaremos uma tabela separada. Como resultado, devemos ter as seguintes tabelas:
Tabela Descrição
Content Para armazenar conexões de versões ativas de conteúdo com informações que não mudam para diferentes versões, por exemplo, autor do conteúdo.
Versions Para armazenar dados de uma versão separada de conteúdo
Content types Registramos os tipos de material de nosso framework, relacionamos o conteúdo ao tipo de material.
Products Expandindo dados sobre produtos
Revision history Salvamos o histórico de nossas revisões

Content

Todo o conteúdo do site será armazenado nesta tabela. Se quisermos expandir um tipo de material, o faremos em uma tabela separada. Por exemplo, teremos produtos, eles serão armazenados na tabela Content, mas também estarão conectados à tabela Products por ID.
Campo Tipo Descrição
ID Integer (auto increment) Campo para conexão com outras tabelas
Current_revision Integer Campo para conexão com a tabela de versões
Active Boolean Mostra se o conteúdo foi publicado ou não
Secure Boolean Conteúdo disponível apenas para usuários autorizados ou não
Parent Integer Conexão com conteúdo pai
Order Integer Campo para ordenação de conteúdo
Author Integer ID do usuário que criou o conteúdo
Type Integer ID do tipo de conteúdo para expandir dados de conteúdo
Path Varchar Campo para armazenar URL legível
 Agora podemos executar consultas no banco de dados e criar a tabela Content:
CREATE TABLE `content` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `current_revision` int(11) NOT NULL,
  `active` tinyint(1) NOT NULL,
  `secure` tinyint(1) NOT NULL,
  `parent` int(11) NOT NULL,
  `order` int(11) NOT NULL,
  `author` int(11) NOT NULL,
  `type` int(11) NOT NULL,
  `path` char(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;