Come gestire le relazioni del database

Con un database MySQL ben strutturato, le relazioni tra le tabelle possono essere utilizzate per sfruttare al massimo il potenziale di PHPCG.


Le relazioni tra le diverse tabelle di un database MySQL devono riflettere la struttura logica dei dati.

È quindi importante capire i diversi tipi di relazione.

PHP CRUD Generator è in grado di analizzare il suo database e di comprendere tutti i tipi di relazioni, dirette e indirette.

Una volta che le relazioni sono state stabilite correttamente, sarà in grado di visualizzare tutti i dati di cui ha bisogno nelle tabelle dati del suo pannello amministrativo Bootstrap.


Qui spiegheremo i diversi tipi di relazioni MySQL.

Per sapere come impostare le relazioni del suo database, visiti Come creare il suo database con MySQL Workbench.


I diversi tipi di relazioni in un database MySQL

Consideriamo un database contenente prodotti, clienti e i loro ordini.

Ogni ordine appartiene ad un cliente e può contenere uno o più prodotti acquistati. Lo stesso prodotto può essere stato acquistato da più clienti diversi, o dallo stesso cliente in più ordini.

Ecco come appare il nostro Database shema:

MySQL database shema example with direct and indirect relationships
Esempio di shema del database MySQL con relazioni dirette e indirette

Relazioni dirette e indirette

Relazioni dirette (relazioni interne)uno-a-uno, uno-a-molti

Una relazione diretta tra due tabelle A e B è una relazione in cui la tabella A è direttamente collegata alla tabella B da una chiave esterna, obbligatoria o meno. Questo tipo di relazione può essere uno-a-uno o uno-a-molti.

Nel nostro esempio, il campo orders.customers_id è una relazione diretta con customers.id.
Il campo orders.customers_id è una chiave esterna.

Questa relazione consente di associare ogni ordine a un cliente.

Con PHP CRUD Generator, ci permetterà di visualizzare il nome del cliente di ogni ordine nell'elenco degli ordini.
Nella scheda CRUD Generator Build List, vedrà la relazione mostrata in questo modo: CRUD Generator direct relationship

Relazioni indirette (relazioni esterne)molti-a-molti

Una relazione indiretta viene utilizzata per collegare diversi record della tabella A a diversi record della tabella B. A tal fine, si utilizza una tabella intermedia, solitamente composta da due chiavi esterne, ognuna delle quali ci permette di identificare i record delle tabelle A e B. Questa relazione è una relazione molti-a-molti.

Nel nostro esempio, la tabella prodotti_ordini è la tabella intermedia. Ci permette di associare i prodotti ordinati agli ordini.
Le tabelle products_orders.products_id e products_orders.orders_id sono entrambe chiavi esterne.

Con PHP CRUD Generator, potrà visualizzare tutti i prodotti di ogni ordine in una tabella annidata nell'elenco degli ordini.

Il Generatore le permette anche di scegliere i campi dei prodotti che desidera visualizzare e se gli utenti del Pannello di Amministrazione possono aggiungere/modificare/cancellare i prodotti direttamente dall'elenco degli ordini LEGGI.

Con PHP CRUD Generator, ci permetterà di visualizzare il nome del cliente di ogni ordine nell'elenco degli ordini.
Nella scheda CRUD Generator Build List, vedrà la relazione mostrata in questo modo:

PHP CRUD Generator indirect relationship

Relazioni identificanti e non identificanti

Identificare le relazioni

Una relazione di identificazione può essere definita quando due tabelle sono unite dallo stesso identificatore. In altre parole, i record della seconda tabella sono elementi o caratteristiche intrinseche della prima tabella.

Per esempio: un libro è composto da capitoli. Ogni capitolo fa parte di un libro identificato in modo univoco. In questo caso, la chiave esterna chapters.books_id sarà elencata come seconda chiave primaria della tabella chapters .

Questo tipo di relazione viene oggi utilizzato molto raramente. Al contrario, si utilizza generalmente una relazione indiretta, che è più generalista e meno restrittiva.

Relazioni non identificative

Una relazione non identificativa è una relazione in cui due tabelle sono unite da un'appartenenza o da attributi comuni o da un'inclusione.

Per esempio: ogni ordine appartiene a un cliente; ogni ordine contiene uno o più prodotti.

Pagina principale del tutorial PHP CRUD