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 2s
176 lines
7.9 KiB
Plaintext
176 lines
7.9 KiB
Plaintext
---
|
|
title: Viele-zu-Viele-Beziehungen erstellen
|
|
description: Verbinden Sie Datensätze, bei denen auf beiden Seiten viele Elemente mithilfe von Verknüpfungsobjekten miteinander verknüpft werden können.
|
|
---
|
|
|
|
Viele-zu-Viele-Beziehungen ermöglichen es Ihnen, auf beiden Seiten mehrere Datensätze zu verknüpfen. Beispiel: Viele Personen können an vielen Projekten arbeiten, und jedes Projekt kann viele Personen haben.
|
|
|
|
<Warning>
|
|
**Beta-Funktion**: Verknüpfungsbeziehungen befinden sich derzeit in der Beta. Aktivieren Sie sie unter **Einstellungen → Community → Features**, bevor Sie dieser Anleitung folgen.
|
|
</Warning>
|
|
|
|
<Note>
|
|
Für diese Funktion muss außerdem der **Erweiterte Modus** aktiviert sein (Schalter unten links in den Einstellungen).
|
|
</Note>
|
|
|
|
## Wann Viele-zu-Viele-Beziehungen verwenden
|
|
|
|
Verwenden Sie Viele-zu-Viele-Beziehungen, wenn beide Seiten einer Beziehung mehrere Verknüpfungen haben können:
|
|
|
|
| Beziehung | Beispiel |
|
|
| ----------------------- | -------------------------------------------------------------------------------------------------- |
|
|
| Personen ↔ Projekte | Eine Person arbeitet an mehreren Projekten; ein Projekt hat mehrere Teammitglieder |
|
|
| Unternehmen ↔ Tags | Ein Unternehmen kann mehrere Tags haben; ein Tag kann für mehrere Unternehmen gelten |
|
|
| Produkte ↔ Bestellungen | Ein Produkt kann in mehreren Bestellungen enthalten sein; eine Bestellung enthält mehrere Produkte |
|
|
|
|
## Wie es funktioniert
|
|
|
|
Twenty verwendet für Viele-zu-Viele-Beziehungen ein Muster mit **Verknüpfungsobjekt**. Ein Verknüpfungsobjekt sitzt zwischen zwei Objekten und speichert die Verknüpfungen:
|
|
|
|
```
|
|
People ←→ Project Assignments ←→ Projects
|
|
```
|
|
|
|
Das Objekt **Projektzuweisungen** (Verknüpfung) hat:
|
|
|
|
* Eine Beziehung zu Personen (Viele-zu-Eins)
|
|
* Eine Beziehung zu Projekten (Viele-zu-Eins)
|
|
|
|
Wenn Sie den Schalter für die Verknüpfungsbeziehung aktivieren, zeigt Twenty verknüpfte Datensätze direkt an, anstatt die zwischengeschalteten Verknüpfungsdatensätze anzuzeigen.
|
|
|
|
## Voraussetzungen
|
|
|
|
1. **Verknüpfungsbeziehungen in Beta-Funktionen aktivieren**: Gehen Sie zu **Einstellungen → Community → Features** und aktivieren Sie **Verknüpfungsbeziehungen**
|
|
2. **Erweiterten Modus aktivieren**: Aktivieren Sie den **Erweiterten Modus** unten links in der Seitenleiste der Einstellungen
|
|
3. Planen Sie Ihr Datenmodell:
|
|
* Welche zwei Objekte verbinden Sie?
|
|
* Wie soll das Verknüpfungsobjekt heißen?
|
|
|
|
## Schritt 1: Verknüpfungsobjekt erstellen
|
|
|
|
Erstellen Sie zunächst das Zwischenobjekt, das die Verknüpfungen speichert.
|
|
|
|
1. Gehen Sie zu **Einstellungen → Datenmodell**
|
|
2. Klicke **+ Objekt hinzufügen**
|
|
3. Benennen Sie es aussagekräftig (z. B. "Projektzuweisung", "Teammitglied", "Produktbestellung")
|
|
4. Schalten Sie "Erstellen eines Namensfelds überspringen" ein
|
|
|
|
<img src="/images/user-guide/fields/new-pivot-object.png" alt="Neues Verknüpfungsobjekt" />
|
|
|
|
5. Klicken Sie auf **Speichern**
|
|
|
|
<Tip>
|
|
**Namenskonvention**: Verwenden Sie einen Namen, der die Beziehung beschreibt, z. B. "Projektzuweisung" oder "Teammitgliedschaft". Das macht das Datenmodell leichter verständlich.
|
|
</Tip>
|
|
|
|
## Schritt 2: Beziehungen zwischen Objekten und dem Verknüpfungsobjekt erstellen
|
|
|
|
Fügen Sie für jedes Ihrer beiden Objekte Beziehungsfelder zum Verknüpfungsobjekt hinzu.
|
|
|
|
### Erste Beziehung (Objekt A → Verknüpfung)
|
|
|
|
1. Wählen Sie Ihr erstes Objekt unter **Einstellungen → Datenmodell** aus
|
|
2. Klicken Sie auf **+ Beziehung hinzufügen**
|
|
3. Wählen Sie das Verknüpfungsobjekt aus (z. B. "Projektzuweisungen")
|
|
4. Legen Sie den Beziehungstyp auf **Eins-zu-Viele** fest (eine Person kann mit vielen Zuweisungen verknüpft werden)
|
|
5. Benennen Sie die Felder:
|
|
* Feld bei Personen: z. B. "Projektzuweisungen"
|
|
* Feld auf der Verknüpfung: z. B. "Person"
|
|
6. Klicken Sie auf **Speichern**
|
|
|
|
### Zweite Beziehung (Objekt B → Verknüpfung)
|
|
|
|
1. Wählen Sie Ihr zweites Objekt unter **Einstellungen → Datenmodell** aus
|
|
2. Klicken Sie auf **+ Beziehung hinzufügen**
|
|
3. Wählen Sie das Verknüpfungsobjekt aus (z. B. "Projektzuweisungen")
|
|
4. Legen Sie den Beziehungstyp auf **Eins-zu-Viele** fest (ein Projekt kann mit vielen Zuweisungen verknüpft werden)
|
|
5. Aktivieren Sie **"Dies ist eine Beziehung zu einem Verknüpfungsobjekt"**
|
|
|
|
<img src="/images/user-guide/fields/junction-relation-toggle.png" style={{width:'100%'}} />
|
|
|
|
6. Benennen Sie die Felder:
|
|
* Feld auf der Verknüpfung: z. B. "Projekt"
|
|
* Feld bei Projekten: z. B. "Teammitglieder"
|
|
7. Klicken Sie auf **Speichern**
|
|
|
|
## Schritt 3: Anzeige der Verknüpfungsbeziehung konfigurieren
|
|
|
|
Konfigurieren Sie nun die Quellobjekte so, dass verknüpfte Datensätze direkt angezeigt werden, wobei das zwischengeschaltete Verknüpfungsobjekt übersprungen wird.
|
|
|
|
1. Gehen Sie zu **Einstellungen → Datenmodell**
|
|
2. Wählen Sie das erste Objekt aus (z. B. "Personen")
|
|
3. Suchen Sie das Beziehungsfeld, das auf das Verknüpfungsobjekt zeigt (z. B. "Projektzuweisungen")
|
|
4. Klicken Sie, um das Feld zu bearbeiten
|
|
5. Aktivieren Sie **"Dies ist eine Beziehung zu einem Verknüpfungsobjekt"**
|
|
6. Wählen Sie die **Zielbeziehung** aus (z. B. "Projekt" — das Feld an der Verknüpfung, das auf die andere Seite zeigt)
|
|
7. Klicken Sie auf **Speichern**
|
|
|
|
## Ergebnis
|
|
|
|
Nach der Konfiguration:
|
|
|
|
* In einem **Person**-Datensatz zeigt das Feld "Projektzuweisungen" **Projekte** direkt an (keine Zuweisungsdatensätze)
|
|
* In einem **Projekt**-Datensatz zeigt das Feld "Teammitglieder" **Personen** direkt an
|
|
|
|
Das Verknüpfungsobjekt existiert weiterhin und speichert die Verknüpfungen, aber die UI präsentiert eine übersichtlichere Viele-zu-Viele-Ansicht.
|
|
|
|
## Beispiel: Personen ↔ Projekte
|
|
|
|
Hier ist eine vollständige Schritt-für-Schritt-Anleitung:
|
|
|
|
### Verknüpfungsobjekt erstellen
|
|
|
|
* Name: **Projektzuweisung**
|
|
* Beschreibung: "Verknüpft Personen mit den Projekten, an denen sie arbeiten"
|
|
|
|
### Beziehungen hinzufügen
|
|
|
|
1. **Personen → Projektzuweisung**
|
|
* Typ: Eins-zu-Viele
|
|
* Feld bei Personen: "Projektzuweisungen"
|
|
* Feld bei Zuweisung: "Person"
|
|
|
|
2. **Projekte → Projektzuweisung**
|
|
* Typ: Eins-zu-Viele
|
|
* Feld bei Projekten: "Teammitglieder"
|
|
* Feld bei Zuweisung: "Projekt"
|
|
|
|
### Verknüpfungsanzeige konfigurieren
|
|
|
|
1. Am Objekt **Personen**:
|
|
* Feld "Projektzuweisungen" bearbeiten
|
|
* Verknüpfungsschalter aktivieren
|
|
* Ziel: "Projekt"
|
|
|
|
2. Am Objekt **Projekte**:
|
|
* Feld "Teammitglieder" bearbeiten
|
|
* Verknüpfungsschalter aktivieren
|
|
* Ziel: "Person"
|
|
|
|
### Verwendung
|
|
|
|
* Öffnen Sie einen Person-Datensatz → Sehen Sie deren Projekte direkt
|
|
* Öffnen Sie einen Projekt-Datensatz → Sehen Sie Teammitglieder direkt
|
|
* Erstellen Sie neue Verknüpfungen von beiden Seiten
|
|
|
|
## Zusätzliche Daten zu Verknüpfungen hinzufügen
|
|
|
|
Da das Verknüpfungsobjekt ein echtes Objekt ist, können Sie benutzerdefinierte Felder hinzufügen, um Informationen über die Beziehung zu speichern:
|
|
|
|
* **Rolle**: "Entwickler", "Designer", "Manager"
|
|
* **Startdatum**: Wenn die Person dem Projekt beigetreten ist
|
|
* **Zugeordnete Stunden**: Wöchentliche Stunden für dieses Projekt
|
|
|
|
Um auf diese Daten zuzugreifen, navigieren Sie direkt zum Verknüpfungsobjekt oder greifen Sie per API-Abfrage darauf zu.
|
|
|
|
## Einschränkungen
|
|
|
|
* **CSV-Import/-Export**: Das direkte Importieren von Viele-zu-Viele-Beziehungen wird nicht unterstützt. Importieren Sie stattdessen Datensätze in das Verknüpfungsobjekt.
|
|
* **Filter**: Das Filtern nach Viele-zu-Viele-Beziehungen bietet möglicherweise nur begrenzte Optionen.
|
|
|
|
## Verwandt
|
|
|
|
* [Beziehungsfelder](/l/de/user-guide/data-model/capabilities/relation-fields) — Beziehungstypen erklärt
|
|
* [Benutzerdefinierte Objekte erstellen](/l/de/user-guide/data-model/how-tos/create-custom-objects) — so erstellen Sie Objekte
|
|
* [Beziehungsfelder erstellen](/l/de/user-guide/data-model/how-tos/create-relation-fields) — grundlegende Einrichtung von Beziehungen
|