Daniel Thoma: Ist diese Datenbankstruktur optimal?

Beitrag lesen

Hallo Ilja,

das lese ich anderes, wobei ich auch kein mathematiker bin. ich zitiere mal die definition von relationen, die dort angegeben wurde: "eine Relation R ist eine Menge von n-Tupeln. Dinge, die in der Relation R zueinander stehen, bilden ein n-Tupel, das Element von R ist."

Ja klar. Es gibt abstrakt gesehen keinen unterschied zwischen "Beziehung zwischen Elementen" und "Menge von Tupeln". Dieser unterschied ist ein rein Sprachlicher. Relationale Datenbanken heißen relational, weil sie Bezeihungen zwischen Elementen verwalten können, dahinter steht die relationale Algebra die Operationen auf Relationen/Beziehungen wir joins u.ö. formalisiert. Eine Relationship-Algebra gibt es nicht, weil es schlicht ein solches Konzept, das sich von dem der Relation unterscheiden würde, nicht gibt.

verwirent ist sicherlich, dass in diesem kapitel im zusammenhang zwischen beziehungen von zwei dingen gesprochen wird. damit ist aber nicht die bezieung in einem E/R modell zwischen zwei objekten die rede, sondern die beziehungen innerhalb der tabelle (x/y).

Wenn man sich die relationale Algebra ansieht, sind nicht nur die Basis-Relationen, die man typischerweise in Tabellen darstellt, Relationen, sondern eben auch die, die indirekt bestimmt werden, bspw. durch join-Operationen. Von der mathematischen Seite her ist das Thema wirklich absolut klar.

nun kommen wir aber zu dem Kontext, in dem ich behaupte, relationensind tabellen und beizehungen sind relationships, nämlich im bereich der rdbms. und dort steht es eigentlich schwarz auf weis, wass relationen sind. ich denke, da ist wenig raum für missverständnisse. ich zitiere mal aus deinem link:

Hm, ich hätte den Artikel wohl ganz lesen sollen um zu erkennen, dass er ziemlich dürftig ist ;-)
Fremdschlüssel sind natürlich keine Relationen in diesem sinne. Eine Relation ist erst, was man berechnet, wenn man mehrere Tabellen aggregiert um zwei verbundene Tabellen zusammen zu führen.
Auf diesen Zusammenhang geht der Datenbankartikel nicht ein.
Ich habe allerdings auch nie von Fremndschlüsseln geredet. Fremdschlüssel stellen im wesentlichen ja nur Gültigkeitsbedingungen für eine Datenbank dar.
Die Relation, die man berechnen würde, um einem Fremdschlüssel zu folgen, könnte man genau so gut explizit in der Datenbank darstellen (auch wenn diese natürlich dann nicht normalisiert wäre).

oder mal anders ausgedrückt, um es deutlich zumachen. wenn du nur eine einzige tabelle hast (ohne selbstbezug), dann dürfte ich laut deiner aussage auch keine relation haben. schließlich gibt es ja keine weitere tabelle (von mir aus auch objekt), mit der es eine beziehung haben könnte.

Natürlich, Objekte in diesem Sinne sind nicht Datensätze sondern einzelne Werte. Zwischen diesen Werten gibt es Relationen. Einige davon repräsentiert man explizit als Tabellen. Das versucht man natürlich optimal zu tun um keine redundante Information zu speichern.

"Eine Relation beschreibt nicht den Zusammenhang zwischen verschiedenen Tabellen. Diese werden in Datenbanksystemen durch Fremdschlüssel beschrieben. Diese Beziehungen sind jedoch nicht Teil der Relationalen Algebra und haben auch nicht zur Namensgebung dieser beigetragen, wie dies oft fälschlich vermutet wird."

Nein, die Fähigkeit mit Relationen zu rechnen, hat dazu beigetragen. Fremndschlüssel sind eigentlich ein unbedeutenderes Konzept. Man benötigt sie nur um die Zulässigkeit der Daten zu prüfen, nicht um irgendwelche Beziehungen zwischen den Daten zu berechnen.

es gibt ein argument, dass macht es schwierig, dem entgegen zu wirken, nämlich dass die mehrheit unter relation eben eine beziehung versteht.

Nein, aber nachdem ich nun auch noch den englischen Artikel dazu gelesen habe, verstehe ich glaube ich das Missverständnis.
Das mathematische Konzept der Relation ist eindeutig eine Formalisierung des Konzeptes der Beziehung zwischen Dingen (als Tupel, aber das ist nur die Formalisierung).
Die Darstellung dieses Konzeptes findet aber nicht in Form von Primär-/Fremdschlüsseln statt. Das habe ich auch nicht behauptet.
Allerdings ist es falsch, dass nur Tabellen Relationen sind. Sie sind die einzig explizit repräsentierten Relationen, das ist richtig.
Fremdschlüssel aber auch nicht notwendig für eine Datenbank. Man kann ganz toll Beziehungen ohne sie darstellen. Natürlich ist dann in der Datenbank nicht mehr Dokumentiert, was man gemeint hat und nicht sicher gestellt, dass die Bedingungen eingehalten werden. Aber es geht prinzipiell keine Information über die Daten verloren.

nun ja, was soll ich dazu sagen, ich habe deine eigenen quellen benutzt, um meine meinung zu stützen, dort steh die gleiche aussage, dass relationen tabellen sind 1:1 so wort wörtlich drin. keine ahnung, was dich sonst noch überzeugen soll.

Dass sie die technische Darstellung von Relationen sind, habe ich selbst überall gesagt.
Überzeugen würde mich eine Definition des Begriffes "Relationship". Es gibt natürlich eine im Kontext von ERDs. Dort kommt aber wiederum der Begriff "Relation" gar nicht vor.

Relationship scheint mir im wesentlichen der im Englischen gebräuchlichere Begriff für "Beziehung" in diesem Kontext zu sein.
Von Relation habe ich gesprochen, weil ich das Thema eher abstrakt angehen wollte und erstmal den Blick von der Technik und dem Denken in Tabellen und Schlüsseln lösen wollte.
Mein Fokus lag also klar auf dem mathematischen Konzept der Relation und damit habe ich schon des öfteren Beziehungen modelliert ;-)

Ich habe den Eindruck, dass die ganze Diskussion im wesentlichen auf dem basiert, was mir manchmal als die Krankheit der Datenbankwelt erscheint.
Es gibt da unzählige technische Begriffe, Tabelle, Attribute, Fremdschlüssel, Vererbung (ja das machen DBs ja mittlerweile auch), Komponenten, Schemata, und was der Teufel noch alles und oft merkt keiner mehr, dass das alles Dinge sind, die man mathematisch schlicht als Relation modellieren würde.

Grüße

Daniel