Indice

🟦Nuova 🟩Pronta 🟨Bozza 🟥Da scrivere

Estendere le Viste con le relazioni

Aggiungere alla Vista informazioni usando le relazioni tra Entità. Relazioni concatenate. Relazioni inverse.
Aggiornata il:
Stato: 🟩Pronta

Relazioni tra Entità

Nella Guida precedente abbiamo visto come creare una Vista che elenca un tipo di Entità (es. gli Attrezzi della app Vicinato) con i loro Campi. Vediamo ora come mostrate nella stessa Vista informazioni prese dai Campi di altre Entità collegate alle Entità principali della Vista da relazioni. 

Una Entità A è in relazione con una Entità B se l'Entità A ha un Campo Riferimento che richiama l'Entità B. Rappresentiamo questa relazione come A → B perché, conoscendo l'Entità A, possiamo arrivare all'Entità B leggendo il contenuto del Campo di A. 

Aggiungere relazioni nella Vista (sezione Relazioni)

Utilizzeremo la relazione A→B per aggiungere ad una Vista che elenca le Entità di tipo A anche le informazioni contenute nei Campi delle Entità di tipo B. Per utilizzare una relazione in una Vista occorre aggiungere nella sezione Relazioni della Vista il Campo di A che regge la relazione con B. Ad esempio, nella Vista "Magazzino" della app "Vicinato" che abbiamo creato nella Guida precedente e che elenca gli Attrezzi, possiamo utilizzare la relazione Attrezzo → Autore (retta dal Campo predefinito "Autore" dell'Attrezzo) per aggiungere informazioni sul Proprietario (=Autore) dell'Attrezzo. Ecco come:

Usare le relazioni nella Vista

Aggiunta nella sezione Relazioni il Campo dell'Entità A che regge la relazione A→B, per usare in un'altra sezione della Vista un Campo dell'Entità B basta aggiungere quel Campo nella sezione, specificando quella relazione nella finestra di configurazione del Campo. Ad esempio, per aggiungere nella sezione Campi della Vista "Magazzino" il nome del Proprietario a fianco di ogni Attrezzo:

Relazioni concatenate

Nella sezione Relazioni è possibile aggiungere più relazioni, ognuna corrispondente ad un Campo riferimento dell'Entità principale della Vista. E' anche possibile costruire relazioni concatenate tra loro, cioè relazioni che consentono di passare da una Entità A all'Entità B e, da questa, ad una Entità C e così via. 

Ad esempio, nella app "Vicinato" una Consegna ha un Campo "Richiesta" che la collega ad una Richiesta (Consegna → Richiesta). A sua volta, la Richiesta ha un Campo "Attrezzo" che rimanda all'Attrezzo richiesto (Richiesta → Attrezzo). Quindi, percorrendo la catena Prestito → Richiesta → Attrezzo è possibile conoscere l'Attrezzo consegnato, senza necessità di replicare l'informazione nella Consegna. 

Se stiamo costruendo una Vista che elenca le Consegne e vogliamo mostrare per ciascuno di essi la Richiesta corrispondente e l'Attrezzo prestato, nella sezione Relazioni aggiungeremo prima la relazione Consegna → Richiesta e poi la relazione Richiesta → Attrezzo, specificando che quest'ultima è basata sulla relazione che la precede: l'ordine in cui sono elencate le relazioni nella sezione Relazioni è quindi importante.

Vediamo come si fa:

Relazioni inverse

Data una relazione A→ B, è anche possibile utilizzarla in senso inverso per risalire da B ad A. Ad esempio, se l'Entità "Disco" ha un Campo riferimento che identifica l'Entità "Cantante" (Disco → Cantante), possiamo usare questa relazione in senso inverso (cioè come se fosse Cantante → Disco) per identificare tutti i Dischi di un Cantante. Per usare la relazione in senso inverso, nella sezione Relazioni non aggiungiamo il Campo:

Contenuto - Contenuto referenziato da field_cantante_disco

ma aggiungiamo il Campo:

Contenuto - Contenuto che usa field_cantante_disco