Indice

🟦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

Aggiungere relazioni nella Vista (sezione Relazioni)

Abbiamo visto che i Campi Riferimento consentono di costruire relazioni tra Entità. Data una Entità A con un Campo riferimento che richiama l'Entità B, se conosciamo l'Entità A possiamo arrivare all'Entità B. Indichiamo visivamente questa relazione come A→B. Si noti che le relazioni non sono simmetriche, cioè non è detto che, conoscendo B, si possa risalire con certezza ad A.

Possiamo usare la relazione A→B per aggiungere ad una Vista che elenca A anche le informazioni contenute nei Campi di B. Per far ciò dobbiamo aggiungere alla sezione Relazioni della Vista il Campo di A che regge la relazione con B. 

Come esempio, vediamo come costruire per la app "Prestiti tra vicini" una Vista che elenca le Richieste di prestito, accompagnate dalle informazioni sull'Oggetto richiesto e sul Vicino richiedente. Ciò è possibile perché la Richiesta ha un Campo riferimento "Oggetto" che richiama l'Oggetto (Richiesta→ Oggetto) e, come tutti i Contenuti, un Campo predefinito "Autore" che richiama l'Utente che ha creato la Richiesta (Richiesta→ Autore). 

Creata la Vista "Richieste" come abbiamo visto, aggiungiamo nella sezione Relazioni 

  • il Campo "Oggetto" della Richiesta; in titolo amministrativo possiamo rinominare la relazione come "Oggetto richiesto" per ricordarci qual è l'Entità richiamata dalla relazione
  • il Campo Utente - Nome - Il nome dell'utente o dell'autore, rinominandolo "Richiedente" 

Usare le relazioni nella Vista

Aggiunto 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 specificando la relazione nella finestra di configurazione del Campo. Il Campo apparirà come "(Relazione) Campo" dove "Relazione" è il nome che abbiamo attribuito al Campo nella sezione Relazioni.

Tornando all'esempio, nella sezione Campi della Vista "Richieste" aggiungiamo:

  • il Campo "Titolo", lasciando vuoto Relazione perché vogliamo il titolo del Prestito e cambiando Etichetta come "Prestito"
  • il Campo "Titolo", selezionando nella configurazione come Relazione "Oggetto richiesto", che apparirà come "(Oggetto richiesto) Titolo" e cambiando Etichetta come "Oggetto"
  • il Campo "Immagine", selezionando come Relazione "Oggetto richiesto", che apparirà come "(Oggetto richiesto) Immagine"
  • il Campo "Nome", selezionando come Relazione "Richiedente", che apparirà come "(Richiedente) Nome"
  • il Campo "Cognome", selezionando come Relazione "Richiedente", che apparirà come "(Richiedente) Cognome" e cambiando Etichetta come "Richiedente"
  • il Campo "Stato", lasciando vuoto Relazione perché il Campo è del Prestito

Come abbiamo visto, aggreghiamo nella colonna "Richiedente" i Campi "(Richiedente) Nome" e "(Richiedente) Cognome" e nella colonna "Oggetto" i Campi "(Oggetto richiesto) Titolo" e "(Oggetto richiesto) Immagine". La Vista "Richieste" appare così:

RichiestaOggettoRichiedenteStato
Richiesta n.27

Trapano a batteria

Carlo RossiAperta
Richiesta n.30

Trituratore per rami

Giovanna BianchiAperta
Richiesta n.31

Spargisemi per prato

Sergio NeriIn corso

 Relazioni concatenate

Nella sezione Relazioni è possibile aggiungere relazioni concatenate tra loro, cioè relazioni che consentono di passare da una Entità A all'Entità B, dall'Entità B all'Entità C e così via. In questo caso, la relazione A→B deve precedere la relazione B→C altrimenti non è possibile selezionare B quando si inserisce la seconda.  

Ad esempio, possiamo aggiungere alla Vista "Richieste" le relazioni Oggetto →  Autore per risalire al Proprietario dell'Oggetto e Oggetto →  Ambito per suddividere le Richieste per Ambito di utilizzo degli Oggetti richiesti. Queste relazioni devono essere collocate dopo la relazione che mette a disposizione l'Oggetto, cioè la relazione Richiesta → Oggetto. Nella sezione Relazioni devono apparire in questo ordine:

  • il Campo "Oggetto" della Richiesta; rinominato "Oggetto richiesto" 
  • il Campo Utente - Nome - Il nome dell'utente o dell'autore, rinominato "Richiedente"
  • il Campo Utente - Nome - Il nome dell'utente o dell'autore, selezionando come Relazione "Oggetto richiesto" e rinominandolo "Proprietario" 
  • il Campo "Ambito" dell'Oggetto, selezionando come Relazione "Oggetto richiesto" e rinominandolo "Ambito d'uso"  

Ai Campi già elencati nella sezione Campi aggiungiamo:

  • il Campo "Titolo", selezionando come Relazione "Ambito d'uso", che apparirà come "(Ambito) Titolo" e cambiando Etichetta come "Ambito"
  • il Campo "Nome", selezionando come Relazione "Proprietario", che apparirà come "(Proprietario) Nome"
  • il Campo "Cognome", selezionando come Relazione "Proprietario", che apparirà come "(Proprietario) Cognome" e cambiando Etichetta come "Proprietario"

Aggreghiamo nella colonna "Oggetto" il Campo "(Ambito) Titolo" e i Campi "(Proprietario) Cognome" e "(Proprietario) Cognome" nella colonna "Proprietario". 

Come abbiamo visto, aggiungiamo la ricerca estesa ai Campi "(Richiesta) Titolo", "(Oggetto) Titolo", "(Ambito) Titolo", "(Proprietario) Nome", "(Proprietario) Cognome", "(Richiedente) Nome", "(Richiedente) Cognome", consentendo così all'Utente di cercare una Richiesta partendo da una qualunque delle informazioni ad essa associata.  

La Vista "Richieste" appare così:

 

Cerca Applica  
     
RichiestaOggettoProprietarioRichiedenteStato
Richiesta n.27

Trapano a batteria
Casa

Angela VerdiCarlo RossiAperta
Richiesta n.30

Trituratore per rami
Giardino

Carlo RossiGiovanna BianchiAperta
Richiesta n.31

Spargisemi per prato
Giardino

Carlo RossiSergio NeriIn corso

Relazioni inverse

Data una relazione A→ B, è anche possibile utilizzarla in senso inverso, per risalire da B ad A. Per usare una relazione in senso inverso, nella sezione Relazioni non aggiungiamo il Campo:

Contenuto - Contenuto referenziato da NOMECAMPO

ma aggiungiamo il Campo:

Contenuto - Contenuto che usa NOMECAMPOO

Vedremo più avanti alcuni casi di utilizzo di relazioni inverse.