Rekursion in Datenbank abbilden
-
Hallo zusammen
ich habe mal eine Frage bezüglich Rekursion: Ist es möglich, in einer Datenbank Rekursion abzubilden? Beispiel: Ich habe eine Funktion, die sich wieder selbst aufruft, in meinem Fall ist das ein Prozess der sich selbst beinhaltet. Kann man sowas in einer Datenbank abbilden? Die erste Normalform schließt das zwar aus (Attribute dürfen keine Funktionen enthalten, sondern müssen eindeutig sein) aber ich habe etwas gelesen wo die 1. NF außer Acht gelassen werden kann. Stimmt das und wenn ja, wie kann man sowas dann abbilden? Mit Nested Sets bekomme ich zwar eine Baumstruktur abgebildet, aber auch eine Rekursion die sich selbst beinhaltet? Oder sollte man das generell in einer Datenbank nicht abbilden, da dann die Abfrage viel zu lange dauert und die Datenbank nicht mehr performant genug ist?
Vielen Dank für jede Hilfe!
-
Nested Sets -> klingt nach übler Sache
1.NF hat nichts damit zu tun ob Attribute Funktionen haben dürfen (wie soll das überhaupt sein?!)Rekursion:
TABLE Mitarbeiter ( ID number, vorgesetzter number )
Jetzt kannst du mit speziellen SQL-Queries die Rekursion durchgehen und so bspw. den Vorgesetzen (Vor-Vor-Gesetzten, usw.) eines Mitarbeiters auslesen.
Oracle-Stichwort: CONNECT BY, Postgres: WITH RECURSIVE
MfG SideWinder
-
Ich denke DBNeuer trinkt ganz übles zeug.
eine DATENbank hat schonmal garnix mit funktionen oder rekursionen zu tun, sondern mit DATEN.
-
Danke für den Tipp. WITH RECURSIVE scheint der richtige Ansatz zu sein (ich arbeite mit PostGreSQL).
-
DBNeuer schrieb:
Danke für den Tipp. WITH RECURSIVE scheint der richtige Ansatz zu sein (ich arbeite mit PostGreSQL).
Ich habe ja schon viele Schreibweisen gesehen, aber "PostGreSQL" erscheint mir am übelsten gelungen.
MfG SideWinder
-
SideWinder schrieb:
Ich habe ja schon viele Schreibweisen gesehen, aber "PostGreSQL" erscheint mir am übelsten gelungen.
Laß ihn. Lt. Ansi-SQL sind Bezeichner case insensitive.