Matroids Matheplanet Forum Index
Moderiert von matroid
Informatik » Datenbanken » Kann eine Tabelle mit zwei identischen Zeilen Teil einer relationalen DB sein?
Autor
Universität/Hochschule Kann eine Tabelle mit zwei identischen Zeilen Teil einer relationalen DB sein?
Gogosch
Neu Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 22.01.2020
Mitteilungen: 4
  Themenstart: 2020-01-22

Heute hatte ich eine Diskussion zu einer Frage, die für mich sonnenklar schien: Kann man von einer relationalen Datenbank sprechen, wenn in ihr Tabellen mit identischen Zeilen in ein und der selben Tabelle vorkommen? Meine Antwort mit Begründung hier: Nein! Relationen werden in einer Datenbank durch Mengen von Zeilen (Tupeln) abgebildet. Eine Menge enthält per definitionem jedes Element nur einmal (im Gegensatz zur Multimenge). Doppelte Tupel sind daher schlicht nicht erlaubt in einer Relation und daher auch nicht in einer relationalen Datenbank. Eine Tabelle mit identischen Zeilen kann daher nicht Bestandteil einer relationalen DB sein. Erkennt jemand Schwächen in meiner Argumentation? Kann man das anders sehen? Oder liege ich gar völlig daneben?


   Profil
Diophant
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 18.01.2019
Mitteilungen: 7831
Wohnort: Rosenfeld, BW
  Beitrag No.1, eingetragen 2020-01-22

Hallo Gogosch und willkommen hier im Forum! Ich kann hier nur aus der Praxis sprechen. Abgesehen davon, dass sich mir der Sinn von mehreren identischen Zeilen in einer Tabelle nicht erschließt, ist es doch so: - wenn diese Tabelle auf der "1"-Seite einer 1:n-Beziehung steht, dann gibt es einen eindeutigen Primärschlüssel und somit ist es gar nicht möglich, dass identische Zeilen existieren (denn im Primärschlüssel müssen die sich ja unterscheiden). - wenn die Tabelle auf der "n" Seite einer 1:n-Beziehung oder Teil einer m:n-Beziehung ist, dann sollte es theoretisch egal sein (bis auf die Sinnfrage). Welchen Hintergrund hat deine Frage denn? Gruß, Diophant [Verschoben aus Forum 'Datenbanken' in Forum 'Datenbanken' von Diophant]


   Profil
Gogosch
Neu Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 22.01.2020
Mitteilungen: 4
  Beitrag No.2, vom Themenstarter, eingetragen 2020-01-22

\quoteon(2020-01-22 19:32 - Diophant in Beitrag No. 1) Hallo Gogosch und willkommen hier im Forum! Ich kann hier nur aus der Praxis sprechen. Abgesehen davon, dass sich mir der Sinn von mehreren identischen Zeilen in einer Tabelle nicht erschließt, ist es doch so: - wenn diese Tabelle auf der "1"-Seite einer 1:n-Beziehung steht, dann gibt es einen eindeutigen Primärschlüssel und somit ist es gar nicht möglich, dass identische Zeilen existieren (denn im Primärschlüssel müssen die sich ja unterscheiden). - wenn die Tabelle auf der "n" Seite einer 1:n-Beziehung oider Teil einer m:n-Beziehung ist, dann sollte es theoretisch egal sein (bis auf die Sinnfrage). Welchen Hintergrund hat deine Frage denn? Gruß, Diophant [Verschoben aus Forum 'Datenbanken' in Forum 'Datenbanken' von Diophant] \quoteoff Hallo Diophant! Danke für Deine Antwort. Zum Sinn einer Tabelle mit identischen Zeilen: In der Praxis passiert das oft, ohne dass Absicht dahinter steckt. Z.B. durch fehlerhafte CREATE TABLE AS SELECT Statements. Meiner Meinung ist es gerade einer der wichtigsten Anwendungen eines RDBMS, dass solche Fehler verhindert werden, indem keine Tabellen mit Duplikaten zugelassen werden und man beim Versuch eine solche Tabelle anzulegen einen Fehler bekommt. Ich kann mir durchaus auch sinnvolle Anwendungen einer (nicht-relationalen) DB vorstellen, die Duplikate zulässt. Z.B. wenn ich einfach Daten sammle und von vornherein nicht weiß, ob ich identische Daten erhalten werde und ich wissen will, wie oft identische Daten ins System gelangen. Mit dem Primärschlüssel meinst du vermutlich - korrigiere mich, wenn es nicht so ist - einen automatisch generierten Surrogat-Schlüssel der zusätzlich (sichtbar oder unsichtbar) als Spalte angehängt wird. So etwas existiert zwar in einer realen Implentierung im Computer immer, ist aber rein algebraisch nicht erforderlich. Der Primärschlüssel ist letztlich frei definierbar. Zwei Zeilen mit identischen Attributen würden bedeuten, dass es keinen Primärschlüssel gibt, weil der Schlüssel dann nicht mehr eindeutig zur Identifzierung einer Zeile verwendet werden kann. Es geht mir bei meiner Frage darum, ob meine mir bisher offensichtlich erscheinende Annahme, dass es gar nicht möglich ist, in eine Tabelle einer relationalen DB identische Zeilen einzutragen, gerechtfertigt ist. Für betrachtete z.B. MySQL bestehend aus ISAM-Dateien nicht als relationale DBs, sondern als nicht-relationale DB. Gruß Gogosch


   Profil
raptrix
Ehemals Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 18.01.2020
Mitteilungen: 29
  Beitrag No.3, eingetragen 2020-01-22

Hallo Gogosch, es ist Bestandteil des Paradigmas der relationalen Datenbank, dass jeder Datensatz durch einen oder mehrere Schlüssel eindeutig identifizierbar ist (dh es reicht nicht einmal, wenn Datensätze sich in irgendwelchen Feldern unterscheiden, sondern sie müssen sich in mindestens einem Schlüsselfeld unterscheiden). Das kann natürlich, je nach Realisierung, anders umgesetzt sein. MySQL zum Beispiel erlaubt es, so Doubletten einzutragen, du kannst sie dann aber nicht mehr einzeln manipulieren, da du sie nicht einzeln durch eine WHERE Klausel ansprechen kannst (man kann sich aber drüber streiten, ob MySQL wirklich eine relationale Datenbank ist). Grüsse, Raptrix [Die Antwort wurde nach Beitrag No.1 begonnen.]


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2699
  Beitrag No.4, eingetragen 2020-01-22

\quoteon(2020-01-22 20:04 - Gogosch in Beitrag No. 2) Es geht mir bei meiner Frage darum, ob meine mir bisher offensichtlich erscheinende Annahme, dass es gar nicht möglich ist, in eine Tabelle einer relationalen DB identische Zeilen einzutragen, gerechtfertigt ist. \quoteoff Nein, diese Annahme ist nicht gerechtfertigt. Du musst hier zwischen einer tatsächlich existierenden relationalen Datenbank (genauer: DBMS) und dem ihr zugrundeliegenden abstrakten relationalen Modell unterscheiden: * Im relationalen Modell kann man über mehrfache identische Zeilen nicht mal sprechen. * Ein relationales DBMS wird dich aber nicht daran hindern, mehrfache identische Zeilen in eine Tabelle zu schreiben, solange du keinen Constraint definiert hast, der das verbietet. An diesem Punkt sind also die echte Welt und das abstrakte Modell nicht in Deckung. --zippy [Die Antwort wurde nach Beitrag No.2 begonnen.]


   Profil
Gogosch
Neu Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 22.01.2020
Mitteilungen: 4
  Beitrag No.5, vom Themenstarter, eingetragen 2020-01-22

Hallo raptrix! Danke für Deine Antwort! Ich sehe das ebenso wie Du. Deine Argumentation läuft, wenn ich sie richtig interpretiere, ebenso darauf hinaus, dass identische Datensätze in einer Tabelle dem grundlegenden Konzept einer relationalen DB widerstreben. Insofern denke ich, dass der Streit, ob MySQL ein RDBMS ist, zu Ungunsten von MySQL ausgeht. Erst durch die Verwendung von z.B. InnoDB wird MySQL vom einem DBMS zu einem RDBMS. Gruß Gogosch [Die Antwort wurde nach Beitrag No.3 begonnen.]


   Profil
Gogosch
Neu Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 22.01.2020
Mitteilungen: 4
  Beitrag No.6, vom Themenstarter, eingetragen 2020-01-22

\quoteon(2020-01-22 20:19 - zippy in Beitrag No. 4) \quoteon(2020-01-22 20:04 - Gogosch in Beitrag No. 2) Es geht mir bei meiner Frage darum, ob meine mir bisher offensichtlich erscheinende Annahme, dass es gar nicht möglich ist, in eine Tabelle einer relationalen DB identische Zeilen einzutragen, gerechtfertigt ist. \quoteoff Nein, diese Annahme ist nicht gerechtfertigt. Du musst hier zwischen einer tatsächlich existierenden relationalen Datenbank (genauer: DBMS) und dem ihr zugrundeliegenden abstrakten relationalen Modell unterscheiden: * Im relationalen Modell kann man über mehrfache identische Zeilen nicht mal sprechen. * Ein relationales DBMS wird dich aber nicht daran hindern, mehrfache identische Zeilen in eine Tabelle zu schreiben, solange du keinen Constraint definiert hast, der das verbietet. An diesem Punkt sind also die echte Welt und das abstrakte Modell nicht in Deckung. --zippy [Die Antwort wurde nach Beitrag No.2 begonnen.] \quoteoff Der Knackpunkt ist, denke ich, die Frage, ob ein DBMS ohne dem von Dir genannten Constraint überhaupt als relational bezeichnet werden darf, es also sich um einen systemimmanenten Constraint handelt. Eine Tabelle mit zwei identischen Zeilen ist algebraisch betrachtet eine Multimenge und keine Menge. Die Theorie der RDBMS beruht meinem Verständnis vollständig auf Mengen und nicht auf Multimengen. Gruß Gogosch


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2699
  Beitrag No.7, eingetragen 2020-01-22

\quoteon(2020-01-22 20:32 - Gogosch in Beitrag No. 6) Der Knackpunkt ist, denke ich, die Frage, ob ein DBMS ohne dem von Dir genannten Constraint überhaupt als relational bezeichnet werden darf, es also sich um einen systemimmanenten Constraint handelt. \quoteoff Du kannst den Begriff "relationales DBMS" natürlich so einschränken. Dann passt er besser zum relationalen Modell, deckt sich aber nicht mehr mit dem üblichen Gebrauch.


   Profil
Gogosch hat die Antworten auf ihre/seine Frage gesehen.
Gogosch wird per Mail über neue Antworten informiert.

Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2021 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]