Was Airtable von gewöhnlichen Tabellenkalkulationsprogrammen abhebt, ist seine Fähigkeit, verwandte Konzepte miteinander zu verknüpfen. Das Wissen, wie man die Beziehungen zwischen verschiedenen Gruppen von Objekten darstellt, kann einige Übung erfordern – aber wenn Sie sich mit den verschiedenen Arten von Beziehungen vertraut machen, können Sie leistungsfähige Datenbanken erstellen, die die Komplexität Ihrer Daten genauer darstellen.
Dieser Artikel definiert die verschiedenen Arten von Beziehungen zwischen Listen von Entitäten und liefert Beispiele, damit Sie lernen können, sie selbst zu identifizieren. Er erklärt auch, wie man viele-zu-viele-Beziehungen mit einer Technik namens „Kreuzungstabellen“ darstellen kann.
Beziehungstypen
Eins-zu-eins
Eins-zu-viele
Viel-zu-viele-Beziehungen und Verzweigungstabellen
Beispiel 1: Schüler und Klassen
Beispiel 2: Bewerber und Interviewer
Beispiel 3: Kunden, Kundenaufträge, Produkte und Hersteller
Berechnete Felder und Junction Tables
Beziehungstypen
Airtable ist eine Datenbank. In Datenbanken gibt es ein paar verschiedene Möglichkeiten, die Beziehungen zwischen verschiedenen Listen von Entitäten zu beschreiben.
Eins-zu-Eins
Die einfachste Art von Beziehung ist eine Eins-zu-Eins-Beziehung. Nehmen wir an, Sie haben eine Liste mit Namen von Personen und eine Liste mit Sozialversicherungsnummern. Jede Person hat nur eine Sozialversicherungsnummer, und jede Sozialversicherungsnummer ist mit einer Person verknüpft. Im Kontext einer Airtable-Basis lässt sich eine Eins-zu-Eins-Beziehung normalerweise am besten darstellen, indem man die beiden Listen von Informationen in einer einzigen Tabelle zusammenfasst und zwei Felder verwendet.
Eine Eins-zu-Eins-Beziehung lässt sich auch durch ein verknüpftes Datensatzfeld innerhalb derselben Tabelle darstellen. Angenommen, Sie haben eine Liste von Teilnehmern an einem Eiskunstlauf-Wettbewerb. Für jedes Paar von Personen, die an einem Paarlaufwettbewerb teilnehmen, ist die Beziehung eins-zu-eins, da jeder Partner nur einen anderen Partner hat. Wenn Sie in diesem Fall ein verknüpftes Datensatzfeld erstellen würden, in dem die Tabelle mit sich selbst verknüpft ist, dann wäre es möglich, ein Feld der Partner mit Datensatzverknüpfungen aus der größeren Tabelle aller Teilnehmer auszufüllen.
Eins-zu-eins-Beziehungen sind vergleichsweise selten, da es tendenziell unwahrscheinlich ist, dass beide Seiten einer gegebenen Beziehung einem und nur einem Gegenstück zugeordnet werden können. Hier sind einige andere Beispiele für Eins-zu-Eins-Beziehungen:
- Personen-Pässe (Jede Person hat nur einen Pass eines bestimmten Landes und jeder Pass ist nur für eine Person bestimmt.)
- Land-Flagge (Jedes Land hat nur eine Flagge und jede Flagge gehört nur zu einem Land.)
- Ehepartner-Beziehungen (Jede Person hat nur einen Ehepartner.)
Ein-zu-viele
Eine komplexere (aber auch weitaus häufigere) Art von Beziehung ist ein-zu-viele/ein-zu-viele. Wenn Sie zum Beispiel eine Liste von Kunstwerken und eine Liste von Museen haben, kann jedes Kunstwerk immer nur in einem Museum sein, aber jedes Museum kann viele Kunstwerke haben. Wenn Sie diese beiden Listen von Entitäten (Museen und Kunstwerke) in einer Basis in zwei Tabellen aufteilen, können Sie die für jede Entität relevanten Informationen speichern. Für Kunstwerke könnten dies Informationen wie der Künstler und das Datum der Fertigstellung sein, und für Museen könnten dies Informationen über die Öffnungszeiten und die Adresse des Museums sein.
Wenn Sie eine Airtable-Base erstellen würden, die eine eins-zu-viele-Beziehung zwischen einer Liste von Museen und einer Liste von Kunstwerken darstellt, könnten Sie jede dieser Listen in eine Tabelle „Museen“ und eine Tabelle „Werke“ einfügen. Mit Hilfe von verknüpften Datensatzfeldern könnten Sie es dann so einrichten, dass jeder Datensatz in der Tabelle „Werke“ mit einem Museumsdatensatz verknüpft ist und jeder Datensatz in der Tabelle „Museen“ mit einem oder mehreren Datensätzen in der Tabelle „Werke“ verknüpft ist.
Es ist oft sinnvoll, die beiden Hälften einer Eins-zu-Viel-Beziehung in getrennten Tabellen zu haben, aber wenn alle Entitäten in der Beziehung von derselben Klasse sind, kann es sinnvoller sein, eine selbstverknüpfende Tabelle zu verwenden. Nehmen wir zum Beispiel an, Sie haben ein Firmenverzeichnis mit den Namen aller Mitarbeiter: Sie möchten die Beziehungen zwischen Managern und ihren Untergebenen modellieren, da jeder Manager viele Mitarbeiter verwaltet und jeder Mitarbeiter nur einen Manager hat. Dazu könnten Sie selbstverknüpfte Datensatzfelder für den Manager und die Untergebenen jeder Person erstellen.
Hier sind einige andere Beispiele für Eins-zu-viele-Beziehungen:
- Personen-Adressen (Jede Person kann an einer Adresse wohnen, aber jede Adresse kann eine oder mehrere Personen beherbergen.)
- Besitzer-Haustiere (Jedes Haustier hat einen Besitzer, aber jeder Besitzer kann ein oder mehrere Haustiere haben.)
- Landwirt-Ausrüstung (Jedes Stück Landwirtschaftsausrüstung gehört einem Landwirt, aber jeder Landwirt kann viele Stücke Ausrüstung besitzen.)
Viele-zu-viele
Zuletzt können Entitäten auch eine viele-zu-viele Beziehung haben. Nehmen wir an, Sie haben eine Liste von Büchern und eine Liste von Autoren – jedes Buch kann einen oder mehrere Autoren haben, und jeder Autor kann mehrere Bücher geschrieben haben. In diesem Fall haben Sie viele Bücher, die mit vielen Autoren verbunden sind. In Airtable ist die Darstellung der Beziehung zwischen diesen beiden Listen von Entitäten so einfach wie die Erstellung von zwei Tabellen und die Erstellung von verknüpften Datensatzfeldern.
In Airtable ist die Darstellung einer einfachen Many-to-Many-Beziehung zwischen zwei Listen von Entitäten genauso einfach wie die Darstellung einer One-to-Many-Beziehung. Mit verknüpften Datensatzfeldern können Sie es so einrichten, dass jeder Datensatz in der Tabelle „Bücher“ mit einem oder mehreren Autorendatensätzen verknüpft ist, und jeder Datensatz in der Tabelle „Autoren“ mit einem oder mehreren Datensätzen in der Tabelle „Bücher“.
Wie bei Eins-zu-Eins-Beziehungen und Eins-zu-Vielen-Beziehungen gibt es Zeiten, in denen es sinnvoll ist, Viele-zu-Vielen-Beziehungen in einer einzigen, selbstverknüpfenden Tabelle darzustellen, z. B. wenn alle Entitäten derselben Klasse angehören. Angenommen, Sie wollen die Freundschaften innerhalb einer Gruppe von Personen verfolgen. Jede Person kann viele Freunde haben, und jeder dieser Freunde kann wiederum viele andere Freunde haben. Sie könnten diese Viele-zu-Viele-Beziehung in einer einzigen Tabelle mit einem selbstverknüpfenden Datensatzfeld verfolgen.
Hier sind einige andere Beispiele für Many-to-many-Beziehungen:
- Zutaten-Rezepte (Jedes Lebensmittel kann in mehreren Rezepten verwendet werden und jedes Rezept erfordert mehrere Zutaten.)
- Ärzte-Patienten (Jeder Arzt sieht viele Patienten und jeder Patient sieht viele Ärzte.)
- Mitarbeiter-Aufgaben (Jeder Mitarbeiter arbeitet an vielen Aufgaben gleichzeitig, wobei jede Aufgabe von einem oder mehreren Mitarbeitern bearbeitet wird.)
- Kunden-Produkte (Jeder Kunde kann viele Produkte kaufen, und jedes dieser Produkte kann von vielen verschiedenen Kunden gekauft werden.)
Many-to-many-Beziehungen und Kreuzungstabellen
Oft ist die Darstellung einer Many-to-many-Beziehung in Airtable so einfach wie das Verknüpfen zweier Tabellen miteinander. In manchen Situationen müssen Sie jedoch nicht nur wissen, dass es eine Beziehung zwischen zwei Entitäten gibt – Sie müssen auch in der Lage sein, andere Informationen über diese Beziehung auszudrücken und zu speichern. In diesen Fällen müssen Sie eine dritte Tabelle erstellen, die so genannte Junction-Tabelle (oder Join-Tabelle). Sie können sich die Kreuzungstabelle als einen Ort vorstellen, an dem Attribute der Beziehungen zwischen zwei Listen von Entitäten gespeichert werden.
Beispiel 1: Schüler und Klassen
Wenn das abstrakt klingt, lassen Sie uns ein konkretes Beispiel betrachten: Nehmen wir an, Sie haben eine Liste von Schülern und eine Liste von Klassen. Es gibt eine Many-to-many-Beziehung zwischen den Schülern und ihren Klassen, da jeder Schüler mehrere Klassen belegen kann und für jede Klasse mehrere Schüler eingeschrieben sein können. Sie könnten einfach eine Tabelle mit Schülern und eine Tabelle mit Klassen erstellen, sie miteinander verknüpfen und es dabei belassen. Was aber, wenn Sie Informationen über die Note jedes Schülers in der Klasse speichern wollen? Oder in welchem Semester der Schüler den Kurs belegt hat? Legen Sie diese Informationen in der Tabelle der Schüler oder in der Tabelle der Klassen ab?
Die Noten der Schüler in ihren Klassen und die Zeiten, in denen sie die Klassen belegt haben, können als Attribute der Beziehungen zwischen den Schülern und den Klassen, in denen sie eingeschrieben sind, betrachtet werden. Da die Beziehungen jeweils ihre eigenen relevanten Informationslisten haben, geht man am besten vor, indem man eine Kreuzungstabelle erstellt.
Lassen Sie uns diese Kreuzungstabelle Schritt für Schritt aufbauen. Nehmen wir an, Sie haben bereits eine Tabelle mit Schülern und eine Tabelle mit Klassen.
Wir können eine neue Tabelle erstellen, die ein Feld hat, das mit Schülern verknüpft ist, und ein Feld, das mit Klassen verknüpft ist. Sie könnten die Tabelle „Noten“, „Einschreibung“, „Schüler/Klassen“ oder wie auch immer nennen, damit Sie nicht vergessen, dass diese Tabelle eine Verbindungstabelle zwischen den Tabellen „Schüler“ und „Klassen“ ist.
Wir müssen noch das Primärfeld für diese Verbindungstabelle ausfüllen. Eine der besten Möglichkeiten, Datensätze in einer Abzweigungstabelle zu benennen, ist die Verwendung einer Formel, die Daten aus anderen Feldern in der Tabelle nimmt, um einen eindeutigen Namen für jeden Datensatz zusammenzustellen. Dies kann für eine Junction-Tabelle besonders nützlich sein, da sich die Datensätze, die die Beziehungen zwischen Konzepten darstellen, oft nicht besonders gut für ein einziges eindeutiges Primärfeld eignen. Informationen, die für die Beziehung eines Schülers zu einer Klasse relevant sind (z. B. die Note oder das Semester, in dem eine Klasse belegt wurde), können ebenfalls in dieser Tabelle abgelegt werden.
Wenn wir zu den Tabellen „Schüler“ oder „Klassen“ zurückkehren, werden wir sehen, dass neue Felder, die mit der Verbindungstabelle verknüpft sind, automatisch erstellt wurden. Sie können Rollup- oder Lookup-Felder in diesen Tabellen erstellen, um automatisch Informationen aus der Junction-Tabelle in die Tabellen „Schüler“ oder „Klassen“ zu ziehen.
Beispiel 2: Bewerber und Interviewer
Hier ist ein weiteres Beispiel dafür, wann Sie eine Junction-Tabelle verwenden sollten: Sie haben eine Liste von Bewerbern und eine Liste von Interviewern. Jeder Bewerber durchläuft mehrere Vorstellungsgespräche mit verschiedenen Interviewern, und jeder Interviewer führt mehrere Gespräche mit verschiedenen Bewerbern. Das Vorstellungsgespräch kann man sich als die Beziehung zwischen einem Bewerber und einem Interviewer vorstellen, und als solches bräuchten wir eine Kreuzungstabelle, um Informationen über jedes Vorstellungsgespräch zu speichern.
Beispiel 3: Kunden, Kundenaufträge, Produkte und Hersteller
Hier ist ein komplexeres Beispiel. Nehmen wir an, Sie möchten eine Airtable-Basis erstellen, in der Sie Ihre Listen von Kunden und deren Bestellungen sowie von Produkten und deren Herstellern organisieren. Jeder Kunde kann viele Bestellungen aufgeben, aber jede Bestellung ist nur mit einem Kunden verbunden:
Also kann jeder Hersteller viele Produkte herstellen, aber jedes Produkt kann nur einen Hersteller haben:
Jeder Kundenauftrag kann viele Produkte haben, und jedes Produkt kann Teil von vielen Kundenaufträgen sein:
Das Problem hier ist jedoch, dass es keinen guten Ort gibt, um Informationen über die Menge jedes Produkts in einem bestimmten Kundenauftrag zu speichern. Die Lösung besteht darin, eine Verbindungstabelle zwischen den Tabellen „Kundenbestellungen“ und „Produkte“ zu erstellen, die wir als Tabelle „Bestellpositionen“ bezeichnen können.
Hier ist ein Beispiel dafür, wie das in einer Airtable-Basis aussehen würde. Die Tabelle „Kunden“ ist mit der Tabelle „Kundenaufträge“ verknüpft:
Die Tabelle „Kundenaufträge“ ist mit der Tabelle „Kunden“ und der Tabelle „Auftragspositionen“ verknüpft:
Die Tabelle der Auftragspositionen nimmt die Verknüpfungen aus der Tabelle der Produkte und der Tabelle der Kundenbestellungen sowie die Menge jedes Produkts, um eindeutige Primärfeldwerte für jede der Zeilen zu erzeugen.
Die Produkttabelle ist mit den Bestellpositionen und den Herstellern verknüpft:
Und die Tabelle „Hersteller“ ist mit der Tabelle „Produkte“ in einer eins-zu-viele-Beziehung verknüpft:
Berechnete Felder und Verbindungstabellen
Wenn Sie so viele verknüpfte Felder haben, ist es wichtig, Nachschlage- und Rollup-Felder zu Ihrem Vorteil zu nutzen, um den Umfang der Dateneingabe zu minimieren.
Angenommen, Sie möchten ein Feld in der Tabelle „Kundenaufträge“ haben, das automatisch die Gesamtkosten für die Bestellung eines einzelnen Kunden berechnet. Dazu würden Sie die Informationen aus der Produkttabelle über die Stückkosten mit Hilfe eines Lookup-Feldes in die Tabelle der Auftragspositionen ziehen.
Dann könnten Sie mit einer Formel die Gesamtkosten pro Position berechnen.
Und schließlich können Sie ein Rollup-Feld in der Tabelle „Kundenaufträge“ verwenden, um die Gesamtkosten aller Auftragspositionen in einem bestimmten Kundenauftrag zu summieren.