UML: selbst verweisende Datenbank-Tabelle wie darstellen?

...komplette Frage anzeigen

2 Antworten

Auf die eigene Tabelle verweisen geht auf jeden Fall (siehe dazu auch mein Kommentar), aber ich weiß nicht, ob man dafür einen Fremdschlüssel einrichten kann, denn das wäre in diesem Fall der eigene. Ohne Fremdschlüssel geht das auch, nur wird dann die Integrität nicht durch die Datenbank überwacht. Falls das aber ginge, müsste man darauf achten, dass zuerst die Sätze geladen würden, auf die man sich bezieht. Wenn das nicht geht, kann man auch die Fremdschlüssel nachträglich einrichten, wenn alle Sätze geladen sind. Ich selbst habe so einen Fall, wo Tabellen auch in Gegenrichtung untereinander Beziehungen haben. Da spielt dann auch beim Hinzufügen (und auch Löschen) von Sätzen nach dem Laden die Reihenfolge eine wichtige Rolle.

http://www.gutefrage.net/tipp/bevor-man-eine-frage-stellt

So richtig schlau kann aus deinen Angaben niemand werden.

Wenn man Datenbanktabellen konstruiert, die auf sich selbst verweisen, ist das sicherlich möglich. Es ist wohl eher die Frage, ob das sinnvoll ist?

Für die speziellen Fälle, die du wissen willst, sind Filter das bessere Werkzeug.

In UML ist das ein Pfeil, der wieder in das Klassenkästchen verweist …

Das ist zwar keine alltägliche Herausforderung, aber es gibt da schon Anwendungen dafür und auch sinnvolle.

Ich habe z.B. eine Datenbank für einen Rassehundeverein erstellt, die u.a. auch ein Zuchtbuch enthält. Da sind Hunde in einer Tabelle mit ihrer Zuchtbuch-Nr gespeichert, wo natürlich auch die Zuchtbuch-Nrn der Eltern drin stehen. Und diese befinden sich logischerweise in der selben Tabelle, weil sie halt auch Hunde der gleichen Kategorie sind. Ein Hund, der Eltern hat, kann wiederum ein Elternteil für einen anderen Hund sein. Datenbanktechnisch ist das ein interessanter Fall, da hier Bezug auf die eigene Tabelle genommen wird. Die Abfragen sind auch in jeder Form mit Bordmitteln möglich. Allerdings weiß ich nicht, ob man da eine referenzielle Integrität dafür einrichten kann. Das habe ich noch nicht ausprobiert. Der Fremdschlüssel müsste dann der eigene Schlüssel sein. Ich überprüfe das per Programm, denn es kommt öfter vor, dass die Zuchbuch-Nr bekannt, der dazugehörende Hund aber unbekannt ist. Naturgemäß gibt es in einer Ahnenreihe immer einen letzten, der unbekannt ist. Man kann so einen Fall einfach dadurch lösen, indem man einen fiktiven Hund mit der Nummer 0 und dem Namen *Unbekannt* definiert und diesen dann als Elternteil einträgt. 

In der selben Datenbank habe ich auch eine Mitgliederverwaltung, wo es auch *Familienmitglieder* gibt, die keine Zeitschrift bekommen und dafür einen ermäßigten Beitrag zahlen. Da diese immer auf ein Vollmitglied Bezug nehmen muss, steht dessen Mitglieds-Nr auch im Datensatz. Und diese ist wiederum Primärschlüssel eines anderen Satzes in der eigenen Tabelle.

Die klassischen Schulbeispiele im Informatikunterricht sind nicht in allen Punkten repräsentativ für den praktischen Einsatz. Die professionellen Datenbanken bieten da weitaus umfangreichere Lösungsmöglichkeiten an.

0
@wotan38

Was soll der Kommentar bei meiner Frage?

Ich habe nicht angezweifelt, dass dies geht – nur dass ein Rückverweis auch ein Indikator dafür ist, dass generell was nicht passt bzw. passen könnte …

Es ist sicherlich datenbank-technisch gut zu wissen, welchem Herrchen oder Frauchen der Hund gehört und von welchen Elterntieren er abstammt … Da man nicht jedes Elterntier nachverfolgen kann, gibt es wohl zahlreiche 0-Hunde …

Übrigens es geht um UML und nicht um Datenbanken; nicht das Thema verpeilen …

0
@wolfgang1956

Es ist nicht Deine Frage, sondern die von danone911. Und es geht sehr wohl um Datenbanken. Nur, wie Du selbst schreibst, hast die Frage nicht richtig verstanden.

Mein Kommentar bezieht sich darauf, dass Du Zweifel angemeldet hast, dass ein Verweis auf die eigene Tabelle überhaupt sinnvoll ist. Dafür habe ich dem Fragesteller Beispiele aus der Praxis angeführt.

Und nochmal an Dich gerichtet: Für einen Zuchtverein ist die Abstammung der Tiere eine wichtige Information. Sie wird aber nur für eine begrenzte Zahl an Generationen verfolgt. Dass es logischerweise irgendwo in der Ahnenreihe ganz hinten Tiere gibt, deren Eltern nicht bekannt sind, ist unerheblich und hat keinen Einfluss auf den Sinn der Vorgehensweise, den Du hier anzweifelst.

0
@wotan38

Wenn es für dich sinnvoll ist, Endlosschleifen abzuarbeiten, muss es für mich noch lange nicht sinnvoll sein!

In deinem Unzuchtsverein muss es logischerweise „Urväter“ und „Urmütter“ geben.

Es geht auch nicht um die Machbarkeitsfrage generell, sondern wie es in der UML dargestellt wird! Siehe die einleitende Fragenstellung!

0

Was möchtest Du wissen?