Verknüpfte Tabellen

Tabellenverknüpfungen – auch Beziehungen oder Relationen genannt – sind eine der wichtigsten Funktionen von Ninox. Dass Sie Tabellen in Beziehung zueinander setzen können, unterscheidet Ninox von vielen anderen Apps, die lediglich die Verwaltung simpler Listen ermöglichen. Zudem sind Relationen ein wesentlicher Unterschied von echten Datenbanken zu Tabellenkalkulationsprogrammen.

Wenn Sie bisher nur wenig Erfahrung mit Datenbanksystemen gesammelt haben, sollten Sie diesen Abschnitt lesen, um zu erfahren welche unterschiedlichen Beziehungstypen es gibt und wie Sie diese am Besten einsetzen.

Grundlagen: Die 1:N-Beziehung

Ninox unterstützt – wie die meisten relationalen Datenbanksysteme – als Grundbaustein sogenannte 1:N-Beziehungen (lies: Eins zu N). Das bedeutet, dass Sie mit dieser Beziehung einem einzelnen Datensatz aus einer Tabelle mehrere Datensätze aus einer anderen zuordnen können.

Ein Beispiel dafür sind Kunden und Rechnungen. Zu einem Kunden können Sie beliebig viele Rechnungen zuordnen. Zu einer Rechnung können Sie aber nur einen Kunden festlegen.

Wir möchten Ihnen diese Thema anhand eines Beispiels genauer erklären. In der Datenbank Datenmodell, Verknüpfte Tabellen und Einschränkungen existieren zwei wichtige Tabellen: Rechnung und Kunde. Folgend die enthaltenen und das zugehörige Datenmodell:

Kunde

Rechnung

Datenmodell

Sie können die in der Theorie beschriebene Beziehung mit einer Verknüpfung von Rechnung auf Kunde erstellen.

Folgende Wege bringen Sie zu ihrer Verknüpfung:

  1. Gehen Sie zur Tabellen- und Formularansicht der Tabelle mit dem Titel Rechnung.
  2. Aktivieren Sie für die Bearbeitung den Administrationsmodus.
  3. Klicken Sie auf ein Feld in der Tabelle und wählen Sie Verknüpfung aus dem erscheinenden Menü aus.
  4. Wählen Sie Kunde und die beiden Tabellen sind ab sofort miteinander verknüpft und das Datenmodell sollte sich zu Folgendem verändert haben:

Wenn Sie nun zu der Tabelle Rechnung gehen, dann werden Sie nur eine Zeile finden, in der Sie den zugehörigen Kunden zuordnen können. Wechseln sie nun zur Tabelle der Kunden, dann können Sie einem Kunden beliebig viele Rechnungen zuordnen.

Um unser Vorgehen mit echten Daten zu verdeutlichen, haben wir Martin keine, Phillip eine, Stefan zwei und Thomas vier Rechnungen zugewiesen. Als Konsequenz erhalten wir verschiedene Anzahlen von Rechnungen pro Kunde, aber jeder Rechnung ist genau ein Kunde zugewiesen. Zwei Beispiele für die Zuordnung:

Wir haben Martin keine Rechnung zugewiesen, daher finden wir auch keine ihm zugeordneten Rechnungsnummern.

Wir haben uns vorher dazu entschlossen, Thomas vier Rechnungen zuzuweisen. Daher finden wir nun auch vier verschiedene Rechnungsnummern, die ihm zugeordnet werden.

Auf der anderen Seite, in der Tabelle Rechnung, haben wir nur einen Kunden je Rechnungsnummer. Dies sieht in der Tabellen- und Formularansicht wie folgt aus:

Untertabellen: Die Kompositionsbeziehung

Eine besondere Form der 1:N-Beziehung ist die Komposition. Komposition bedeutet in etwa “besteht aus”. Ein gutes Beispiel hierfür sind Rechnungspositionen. Eine Rechnung besteht aus mehreren Positionen. Wenn die Rechnung gelöscht wird, sind auch die Positionen hinfällig.

Sie können eine Tabellenverknüpfung (auch nachträglich) als Kompositionsbeziehung markieren, indem Sie bei den Feldeigenschaften der Verknüpfung die erweiterten Optionen einblenden und “Komposition” mit “Ja” aktivieren.

Dies hat folgende Auswirkungen:

  • Im Datenmodell wird die Tabelle als Untertabelle der verknüpften Tabelle (Obertabelle) angezeigt, nämlich verschachtelt.
  • Auf der Startseite der Datenbank ist die Untertabelle nicht mehr zu sehen.
  • Beim Löschen eines Datensatzes in der Obertabelle werden alle verknüpften Datensätze der Untertabelle entfernt.
  • In der Formulardarstellung der Obertabelle fehlt die Option “Suchen und hinzufügen” (Lupensymbol) an der Untertabelle.
  • In der Formulardarstellung der Untertabelle fehlt die Option “Verknüpfung aufheben”.

Untertabellen eignen sich gut für Dinge, die fest miteinander verbunden sind; um einige Beispiele zu nennen:

  • Rechnungspositionen gehören unabdingbar zu einer Rechnung.
  • Telefonnummern sind fest mit einem Kontakt verbunden. Wird der Kontakt gelöscht, sollen auch die Telefonnumern entfernt werden – ohne die Kontaktinformation sind sie nicht nützlich.

Gegenbeispiele:

  • Die Mitarbeiter einer Firma sollten nicht als Untertabelle realisiert werden, da sie z. B. die Firma wechseln könnten bzw. unabhängig von der Firma existieren.
  • Rechnungen für einen Kunden
  • Rechnungspositionen sind zwar sinnvollerweise eine Untertabelle einer Rechnung, sollten aber zum Artikel eine ganz normale Beziehung haben.

Beziehungstabellen: die N:M-Beziehung

Manchmal sind 1:N-Beziehungen bzw. Kompositionen nicht ausreichend, um einen Sachverhalt darzustellen. Wie die meisten relationalen Datenbanksysteme unterstützt auch Ninox nicht direkt N:M-Beziehungen. Reine N:M-Beziehungen sind allerdings auch nur in Ausnahmefällen sinnvoll; häufig sollen Beziehungen nämlich noch weiter qualifiziert, also mit weiteren Daten angereichert werden.

Ein Beispiel: In einer Tabelle Firma werden Firmen erfasst. Eine weitere Tabelle Person erfasst Kontaktdaten von Personen. Nun soll zugeordnet werden, welche Person welchen Arbeitgeber hat. Die einfachste Modellierung wäre eine Verknüpfung von Person zu Firma. Wenn Sie allerdings berücksichtigen wollen, dass eine Person auch mehrere Arbeitgeber hat oder diese über die Zeit wechselt, ist dieses Modell nicht hinreichend.

Stattdessen benötigen Sie eine dritte Tabelle, zum Beispiel “Mitarbeiter”. In der Tabelle Mitarbeiter definieren Sie eine Verknüpfung zur Firma und eine weitere zur Person. Beide Beziehungen sollten als Komposition markiert werden, denn wenn die Firma gelöscht wird, hat Sie auch keine Mitarbeiter mehr. Wenn eine Person gelöscht wird, ist diese ebenfalls kein Mitarbeiter mehr.

Hinweise:

  • Obwohl für Mitarbeiter Kompositionsbeziehungen definiert wurden, wird die Tabelle nicht als Untertabelle dargestellt. Offensichtlich kann Mitarbeiter nicht Untertabelle von zwei verschiedenen Obertabellen sein.
  • Beachten Sie die Auswirkungen der Kompositionsbeziehungen auf das Löschen von Datensätzen: Wird eine Person gelöscht, so wird auch der Mitarbeiter gelöscht, nicht aber die Firma. Wird eine Firma gelöscht, werden alle ihre Mitarbeiter ebenfalls entfernt. Allerdings bleiben die Personen unberührt.

Die Tabelle Mitarbeiter ist eine sogenannte Beziehungstabelle, da Sie im Wesentlichen die Beziehung von Personen zu Firmen modelliert. Neben diesem Hauptzweck können Sie die Tabelle nun aber auch nutzen, um die Beziehung um hilfreiche Daten anzureichern. Beispiele wären in diesem Fall Felder für das Eintritts- und Austrittsdatum oder für das Gehalt. In diesem Sinne steht die Tabelle Mitarbeiter also für das Arbeitsverhältnis zwischen Person und Firma oder gar für den Arbeitsvertrag.

Beziehungsgeflechte

Die drei vorgestellten Grundtypen von Beziehungen lassen sich beliebig erweitern. So gibt es keine Einschränkung, auch höherwertige Beziehungen – zum Beispiel zwischen drei Tabellen – zu erstellen.

Hilfreich kann sein, wenn Sie sich beim Design Ihrer Datenbank zunächst eine Skizze auf Papier erstellen.

Malen Sie zunächst alle Objekte, die Sie verwalten wollen, als Kästen auf. Jeder Kasten steht für eine Tabelle. Im zweiten Schritt überlegen Sie, welche Beziehungen zwischen diesen Objekten bestehen. 1:N-Beziehungen können Sie einfach als Pfeil eintragen. Wenn das nicht ausreicht, müssen Sie einen weiteren Kasten für die Beziehungstabelle einfügen.

Achten Sie auch darauf, dass Sie nicht redundante (überflüssige) Beziehungen erstellen: Folgen Sie den Pfeilen: Wenn Sie von einem Kasten A auf zwei unterschiedliche Wege zu einem anderen Kasten B gelangen können, sollten Sie überlegen, ob die beiden Pfade tatsächlich verschiedene Sachverhalte darstellen oder ob Sie hier vereinfachen können.

Zu guter Letzt noch ein Tipp: Versuchen Sie nicht, mit Ihrem Datenmodell alle Eventualitäten zu erschlagen. Manchmal ist es besser, ein einfaches Modell zu verwenden und die ggf. wenigen Ausnahmen durch Kommentare oder andere Hilfsmittel zu kennzeichnen. KISS – Keep It Simple, Stupid.

Einschränkungen

Oftmals sind miteinander verknüpfte Datensätze sehr groß und werden schnell unübersichtlich. Daher kann es sinnvoll sein, die Auswahl bei der Verknüpfung der Tabellen einzuschränken. Ein gutes Beispiel für solch eine Einschränkung sind Arbeitnehmer und  Unternehmen.

Unternehmen

Arbeitnehmer

Wenn Sie die Tabellen wie im Abschnitt zuvor miteinander verknüpft haben, dann können Sie jedem Arbeitnehmer eine Firma zuweisen. Bitte klicken Sie dazu auf ihren ausgewählten Arbeitnehmer und weisen Sie ihn im folgenden Fenster ein Unternehmen zu:

Eine mögliches Kriterium für eine Einschränkung könnte sein, dass lediglich Arbeitnehmer und Unternehmen aus dem gleichen Land einander zugeordnet werden dürfen.

Dafür müssen Sie auf Aktionen klicken und Felder bearbeiten auswählen. Bitte wählen Sie die Tabelle aus, für die Verknüpfung aus, für die die Einschränkung vorgenommen werden soll. In diesem Fall ist das die Verknüpfung Unternehmen.

Klicken Sie anschließend bitte auf Erweiterte Optionen anzeigen und gehen Sie in das Einschränkungen-Feld. Geben Sie ihre gewünschte Einschränkung über die visuelle oder die textuelle Eingabe ein. Für unser Problem wäre der folgende Code eine sinnvolle Lösung:

a.Country = b.Country

Bitte beachten Sie, dass ihre vorgenommenen Einschränkungen nur für zukünftige Verknüpfungen gültig sind. Bisher vorgenommene Zuordnungen und deren Auswahl bleiben davon unberührt.

Drag & Drop kann an dieser Stelle sehr nützlich sein, um herauszufinden welche Tabelle welchen Buchstaben vor dem Spaltentitel beinhaltet. Insbesondere bei der Verwendung einer großen Anzahl von Spalten kann dies sehr hilfreich sein, um nicht den Überblick zu verlieren.