Files
upstream-twenty/packages/twenty-docs/l/it/user-guide/data-model/how-tos/create-many-to-many-relations.mdx
upstream-mirror e7da97194a
Some checks failed
App Prod-Parity E2E Dispatch / dispatch (push) Failing after 10s
CD Storybook UI / build (push) Failing after 3m25s
CD Storybook UI / dispatch (push) Has been skipped
CD deploy main / website-changed-files (push) Successful in 18m8s
CI Agent Skills / changed-files-check (push) Successful in 18m9s
CI Create App E2E minimal / changed-files-check (push) Successful in 24s
CI Create App / changed-files-check (push) Successful in 26s
CI Docs / changed-files-check (push) Successful in 26s
CI Emails / changed-files-check (push) Successful in 28s
CI Example App Hello World / changed-files-check (push) Successful in 23s
CI Front / changed-files-check (push) Has been skipped
CI Example App Postcard / changed-files-check (push) Successful in 27s
CI UI / changed-files-check (push) Has been skipped
CI Utils Test / changed-files-check (push) Successful in 45s
CI Twenty Apps / discover (push) Successful in 1m3s
CD deploy main / deploy-main (push) Failing after 3s
CI Agent Skills / agent-skills-validate (push) Has been skipped
CI Create App / create-app-test (lint) (push) Has been skipped
CI Emails / emails-test (push) Has been skipped
CI Front / front-task (lingui:compile) (push) Has been skipped
CI Front / front-task (lint) (push) Has been skipped
CI Example App Postcard / example-app-postcard (push) Has been skipped
CI UI / ui-task (lint) (push) Has been skipped
CI UI / ui-task (pack-size) (push) Has been skipped
CI UI / ui-task (size) (push) Has been skipped
CI UI / ui-task (test) (push) Has been skipped
CI UI / ui-task (typecheck) (push) Has been skipped
CI Utils Test / utils-test (push) Has been skipped
CI Twenty Apps / ${{ matrix.app.name }} (push) Has been skipped
CI Emails / ci-emails-status-check (push) Successful in 2s
CI Example App Hello World / ci-example-app-hello-world-status-check (push) Successful in 2s
CI Example App Postcard / ci-example-app-postcard-status-check (push) Successful in 3s
CI UI / ui-sb-test (push) Has been skipped
CI Utils Test / ci-utils-test-status-check (push) Successful in 2s
CI Twenty Apps / ci-twenty-apps-status-check (push) Successful in 2s
CI UI / ci-ui-status-check (push) Successful in 2s
CI Desktop / desktop (push) Failing after 1m8s
Push docs to Crowdin / Push documentation to Crowdin (push) Failing after 55s
Push translations to Crowdin / Extract and upload translations (push) Failing after 5s
Push website translations to Crowdin / Extract and upload website translations (push) Failing after 5s
CI Create App / create-app-test (test) (push) Has been skipped
CI Create App / create-app-test (typecheck) (push) Has been skipped
CI Docs / docs-lint (push) Has been skipped
CI Example App Hello World / example-app-hello-world (push) Has been skipped
CI Front / front-task (lingui:extract) (push) Has been skipped
CI Front / front-task (test) (push) Has been skipped
CI Front / front-task (typecheck) (push) Has been skipped
CI UI / ui-sb-build (push) Failing after 1m32s
CI Twenty Apps / ${{ matrix.app.name }} (${{ matrix.server-source }}) (push) Has been skipped
CI Agent Skills / agent-skills-publish (push) Has been skipped
CI Create App / ci-create-app-status-check (push) Successful in 2s
CI Agent Skills / agent-skills-remote-source (push) Has been skipped
CI Create App E2E minimal / create-app-e2e-minimal (push) Has been cancelled
CI E2E Main / e2e-test (push) Has been cancelled
CI Front / front-sb-build (push) Has been cancelled
CI Front / front-build (push) Has been cancelled
CI Create App E2E minimal / ci-create-app-e2e-minimal-status-check (push) Has been cancelled
CI E2E Main / ci-e2e-main-status-check (push) Has been cancelled
CI E2E Main / notify-main-ci-failure (push) Has been cancelled
CI E2E Main / qa-scout-comment (push) Has been cancelled
CI Front / front-sb-test (push) Has been cancelled
CI Front / front-sb-screenshots (push) Has been cancelled
CI Front / ci-front-status-check (push) Has been cancelled
DPA Sub-Processor Sync / sync-subprocessors (push) Failing after 3s
AI Catalog Sync / sync-catalog (push) Failing after 3s
snapshot of https://github.com/twentyhq/twenty.git (main, 2026-09-17; blobs > 131072B omitted)
2026-09-17 23:28:13 +05:00

176 lines
7.5 KiB
Plaintext

---
title: Crea relazioni molti-a-molti
description: Collega record in cui molti elementi su entrambi i lati possono essere collegati tra loro utilizzando oggetti di giunzione.
---
Le relazioni molti-a-molti ti consentono di collegare più record su entrambi i lati. Ad esempio: molte Persone possono lavorare su molti Progetti, e ogni Progetto può avere molte Persone.
<Warning>
**Funzionalità beta**: Le relazioni di giunzione sono attualmente in beta. Abilita le in **Impostazioni → Community → Funzionalità** prima di seguire questa guida.
</Warning>
<Note>
Questa funzionalità richiede anche che la **Modalità avanzata** sia abilitata (tramite l'interruttore in basso a sinistra nelle Impostazioni).
</Note>
## Quando usare le relazioni molti-a-molti
Usa le relazioni molti-a-molti quando entrambi i lati di una relazione possono avere più collegamenti:
| Relazione | Esempio |
| ------------------ | ------------------------------------------------------------------------------ |
| Persone ↔ Progetti | Una persona lavora su più progetti; un progetto ha più membri del team |
| Aziende ↔ Tag | Un'azienda può avere più tag; un tag può essere applicato a più aziende |
| Prodotti ↔ Ordini | Un prodotto può essere presente in più ordini; un ordine contiene più prodotti |
## Come Funziona
Twenty utilizza un modello di **oggetto di giunzione** per le relazioni molti-a-molti. Un oggetto di giunzione si trova tra due oggetti e contiene i collegamenti:
```
People ←→ Project Assignments ←→ Projects
```
L'oggetto **Assegnazioni ai progetti** (di giunzione) ha:
* Una relazione con Persone (molti-a-uno)
* Una relazione con Progetti (molti-a-uno)
Quando abiliti l'interruttore della relazione di giunzione, Twenty mostra direttamente i record collegati invece di visualizzare i record intermedi di giunzione.
## Prerequisiti
1. **Abilita le relazioni di giunzione nelle funzionalità beta**: Vai a **Impostazioni → Community → Funzionalità** e abilita **Relazioni di giunzione**
2. **Abilita la Modalità avanzata**: Attiva la **Modalità avanzata** in basso a sinistra nella barra laterale delle Impostazioni
3. Pianifica il tuo modello di dati:
* Quali due oggetti stai collegando?
* Come dovrebbe chiamarsi l'oggetto di giunzione?
## Passaggio 1: Crea l'oggetto di giunzione
Per prima cosa, crea l'oggetto intermedio che conterrà i collegamenti.
1. Vai a **Impostazioni → Modello dati**
2. Clicca su **+ Aggiungi oggetto**
3. Assegnagli un nome descrittivo (ad es., "Assegnazione al progetto", "Membro del team", "Ordine del prodotto")
4. Attiva l'opzione "Salta la creazione di un campo Nome"
<img src="/images/user-guide/fields/new-pivot-object.png" alt="Nuovo oggetto pivot" />
5. Clicca su **Salva**
<Tip>
**Convenzione di denominazione**: Usa un nome che descriva la relazione, come "Assegnazione al progetto" o "Appartenenza al team". Questo rende il modello di dati più facile da comprendere.
</Tip>
## Passaggio 2: Crea relazioni tra gli oggetti e l'oggetto di giunzione
Aggiungi campi di relazione da ciascuno dei due oggetti all'oggetto di giunzione.
### Prima relazione (Oggetto A → Oggetto di giunzione)
1. Seleziona il tuo primo oggetto in **Impostazioni → Modello dati**
2. Fai clic su **+ Aggiungi relazione**
3. Seleziona l'oggetto di giunzione (ad es., "Assegnazioni al progetto")
4. Imposta il tipo di relazione su **Uno-a-molti** (una persona può collegarsi a molte assegnazioni)
5. Assegna un nome ai campi:
* Campo su Persone: ad es., "Assegnazioni ai progetti"
* Campo sull'oggetto di giunzione: ad es., "Persona"
6. Clicca su **Salva**
### Seconda relazione (Oggetto B → Oggetto di giunzione)
1. Seleziona il tuo secondo oggetto in **Impostazioni → Modello dati**
2. Fai clic su **+ Aggiungi relazione**
3. Seleziona l'oggetto di giunzione (ad es., "Assegnazioni al progetto")
4. Imposta il tipo di relazione su **Uno-a-molti** (un progetto può collegarsi a molte assegnazioni)
5. Abilita **"Questa è una relazione con un oggetto di giunzione"**
<img src="/images/user-guide/fields/junction-relation-toggle.png" style={{width:'100%'}} />
6. Assegna un nome ai campi:
* Campo sull'oggetto di giunzione: ad es., "Progetto"
* Campo su Progetti: ad es., "Membri del team"
7. Clicca su **Salva**
## Passaggio 3: Configura la visualizzazione della relazione di giunzione
Ora configura gli oggetti sorgente per visualizzare direttamente i record collegati, saltando l'oggetto di giunzione intermedio.
1. Vai a **Impostazioni → Modello dati**
2. Seleziona il primo oggetto (ad es., "Persone")
3. Trova il campo di relazione che punta all'oggetto di giunzione (ad es., "Assegnazioni ai progetti")
4. Fai clic per modificare il campo
5. Abilita **"Questa è una relazione con un oggetto di giunzione"**
6. Seleziona la **Relazione di destinazione** (ad es., "Progetto" — il campo sull'oggetto di giunzione che punta all'altro lato)
7. Clicca su **Salva**
## Risultato
Dopo la configurazione:
* In un record **Persona**, il campo "Assegnazioni ai progetti" mostra direttamente i **Progetti** (non i record di assegnazione)
* In un record **Progetto**, il campo "Membri del team" mostra direttamente le **Persone**
L'oggetto di giunzione esiste ancora e memorizza i collegamenti, ma l'interfaccia utente presenta una vista molti-a-molti più pulita.
## Esempio: Persone ↔ Progetti
Ecco una procedura completa:
### Crea l'oggetto di giunzione
* Nome: **Assegnazione al progetto**
* Descrizione: "Collega le persone ai progetti su cui lavorano"
### Aggiungi relazioni
1. **Persone → Assegnazione al progetto**
* Tipo: Uno-a-molti
* Campo su Persone: "Assegnazioni ai progetti"
* Campo su Assegnazione: "Persona"
2. **Progetti → Assegnazione al progetto**
* Tipo: Uno-a-molti
* Campo su Progetti: "Membri del team"
* Campo su Assegnazione: "Progetto"
### Configura la visualizzazione della giunzione
1. Sull'oggetto **Persone**:
* Modifica il campo "Assegnazioni ai progetti"
* Abilita l'interruttore di giunzione
* Destinazione: "Progetto"
2. Sull'oggetto **Progetti**:
* Modifica il campo "Membri del team"
* Abilita l'interruttore di giunzione
* Destinazione: "Persona"
### Usalo
* Apri un record Persona → vedi direttamente i relativi Progetti
* Apri un record Progetto → vedi direttamente i membri del team
* Crea nuove connessioni da entrambi i lati
## Aggiungere dati alle connessioni
Poiché l'oggetto di giunzione è un vero oggetto, puoi aggiungere campi personalizzati per memorizzare informazioni sulla relazione:
* **Ruolo**: "Sviluppatore", "Designer", "Responsabile"
* **Data di inizio**: Quando la persona è entrata nel progetto
* **Ore assegnate**: ore settimanali su questo progetto
Per accedere a questi dati, vai direttamente all'oggetto di giunzione oppure interrogalo tramite l'API.
## Limitazioni
* **Importazione/Esportazione CSV**: L'importazione diretta di relazioni molti-a-molti non è supportata. Importa invece i record nell'oggetto di giunzione.
* **Filtri**: Il filtraggio in base a relazioni molti-a-molti potrebbe avere opzioni limitate.
## Correlati
* [Campi di relazione](/l/it/user-guide/data-model/capabilities/relation-fields) — tipi di relazione spiegati
* [Crea oggetti personalizzati](/l/it/user-guide/data-model/how-tos/create-custom-objects) — come creare oggetti
* [Crea campi di relazione](/l/it/user-guide/data-model/how-tos/create-relation-fields) — configurazione di base della relazione