Como gerenciar as relações do banco de dados

Com um banco de dados MySQL bem estruturado, as relações entre as tabelas podem ser usadas para aproveitar ao máximo o potencial do PHPCG.


As relações entre as diferentes tabelas em um banco de dados MySQL devem refletir a estrutura lógica dos dados.

Portanto, é importante entender os diferentes tipos de relacionamentos.

O PHP CRUD Generator é capaz de analisar seu banco de dados e entender todos os tipos de relacionamentos, diretos e indiretos.

Depois que as relações forem estabelecidas corretamente, o senhor poderá exibir todos os dados de que precisa nas tabelas de dados do Bootstrap Admin Panel.


Aqui explicaremos os diferentes tipos de relacionamentos do MySQL.

Para saber como configurar suas relações de banco de dados, visite Como construir seu banco de dados com o MySQL Workbench


Os diferentes tipos de relacionamentos em um banco de dados MySQL

Vamos considerar um banco de dados que contém produtos, clientes e seus pedidos.

Cada pedido pertence a um cliente e pode conter um ou mais produtos comprados. O mesmo produto pode ter sido comprado por vários clientes diferentes ou pelo mesmo cliente em vários pedidos.

Veja como é o nosso shema de banco de dados:

MySQL database shema example with direct and indirect relationships
Exemplo de shema de banco de dados MySQL com relacionamentos diretos e indiretos

Relacionamentos diretos e indiretos

Relacionamentos diretos (relacionamentos internos)um-para-um, um-para-muitos

Um relacionamento direto entre duas tabelas A e B é um relacionamento em que a tabela A está diretamente conectada à tabela B por uma chave estrangeira, obrigatória ou não. Esse tipo de relacionamento pode ser um para um ou um para muitos.

Em nosso exemplo, o campo orders.customers_id é um relacionamento direto com customers.id.
O campo orders.customers_id é uma chave estrangeira.

Esse relacionamento permite associar cada pedido a um cliente.

Com o PHP CRUD Generator, ele nos permitirá exibir o nome do cliente de cada pedido na lista de pedidos.
Na guia Build List do CRUD Generator, o senhor verá a relação mostrada dessa forma: CRUD Generator direct relationship

Relacionamentos indiretos (relacionamentos externos)muitos-para-muitos

Uma relação indireta é usada para vincular vários registros da tabela A a vários registros da tabela B. Para isso, usamos uma tabela intermediária, geralmente composta de duas chaves estrangeiras, cada uma permitindo identificar os registros das tabelas A e B. Esse relacionamento é um relacionamento de muitos para muitos.

Em nosso exemplo, a tabela products_orders é a tabela intermediária. Ela nos permite associar os produtos solicitados aos pedidos.
As tabelas products_orders.products_id e products_orders.orders_id são chaves estrangeiras.

Com o PHP CRUD Generator, será possível exibir todos os produtos de cada pedido em uma tabela aninhada na lista de pedidos.

O Generator também permite que o senhor escolha os campos de produtos que deseja exibir e se os usuários do painel de administração têm permissão para adicionar/editar/excluir produtos diretamente da lista READ de pedidos.

Com o PHP CRUD Generator, ele nos permitirá exibir o nome do cliente de cada pedido na lista de pedidos.
Na guia Build List do CRUD Generator, o senhor verá a relação mostrada dessa forma:

PHP CRUD Generator indirect relationship

Relacionamentos identificáveis e não identificáveis

Identificação de relacionamentos

Um relacionamento de identificação pode ser definido quando duas tabelas são unidas pelo mesmo identificador. Em outras palavras, os registros da segunda tabela são elementos inerentes ou características da primeira tabela.

Por exemplo: um livro é composto de capítulos. Cada capítulo faz parte de um livro identificado exclusivo. Nesse caso, a chave estrangeira chapters.books_id será listada como a segunda chave primária da tabela de capítulos.

Atualmente, esse tipo de relacionamento é muito raramente usado. Em vez disso, geralmente é usada uma relação indireta, que é mais generalista e menos restritiva.

Relacionamentos não identificáveis

Uma relação não identificadora é uma relação em que duas tabelas são unidas por uma associação ou atributos comuns ou por uma inclusão.

Por exemplo: cada pedido pertence a um cliente; cada pedido contém um ou mais produtos.

Página principal do tutorial PHP CRUD