🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

(gelöst) Bug bei 1:1-Beziehungen?

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Freischreiber
* LO-Experte *
Beiträge: 833
Registriert: Fr 28. Mär 2014, 10:41

(gelöst) Bug bei 1:1-Beziehungen?

Beitrag von Freischreiber » Mo 15. Dez 2014, 18:07

Hallo,

beim Versuch, eine Beziehung zwischen den Primärschlüsseln zweier Tabellen zu erstellen, bekomme ich folgende Fehlermeldung:
SQL-Status: 23000
Fehler-Code: -177

Integrity constraint violation - no parent abc, table: t-adressen in statement [ALTER TABLE "t-adressen" ADD FOREIGN KEY ("ID") REFERENCES "t-bemerkungen" ("AdressID")]
Fehlermeldung.gif
Fehlermeldung.gif (16.45 KiB) 3323 mal betrachtet
Einzige Besonderheit ist, daß das Primärschlüsselfeld Text-Varchar ist, und nicht Integer.

Als Abhilfe habe ich bei der zweiten Tabelle das Primärschlüssel-Kennzeichen entfernt, dann die Beziehung gezogen und dann den Primärschlüssel wiederhergestellt. Das geht ohne Fehlermeldung.

Ist das ein Bug oder soll mir die Fehlermeldung etwas sagen?

Gruß
Freischreiber

PS: Sehe gerade, es passiert auch, wenn die beiden Primärschlüsselfelder Integerfelder sind. Das ist seltsam, weil ich so eine Kombination schon lange in meiner Datenbank habe, und früher ist bei mir der Fehler nicht aufgetaucht...
Dateianhänge
Neue Datenbank.zip
Gezippt.
(3.03 KiB) 180-mal heruntergeladen
Zuletzt geändert von Freischreiber am Sa 3. Jan 2015, 16:48, insgesamt 1-mal geändert.
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Bug bei 1:1-Beziehungen?

Beitrag von RobertG » Mo 15. Dez 2014, 18:41

Hallo Freischreiber,

startest Du mit dem Ziehen der Verbindung bei "t-adressen", dann kommt keine Fehlermeldung. "t-adressen" wird als die Tabelle angenommen, die auf jeden Fall den entsprechenden Schlüsselwert haben muss. "t-bermerkungen" hat nur dann einen gleichlautenden Primärschlüsselwert, wenn eben eine Bemerkung anfällt.

Startest Du mit "t-bemerkungen", so wird untersucht, ob in der Zieltabelle "t-adressen" eventuell Werte für das Schlüsselfeld enthalten sind, die in "t-bermerkungen" nicht vorhanden sind. Das ist bei Dir der Fall.

Die GUI schafft es, die entsprechende Verbindung mit Fremdschlüsseln korrekt zu erstellen, wenn es sich um 1:n-Beziehungen handelt. Da ist es egal, wie herum Du ziehst. Wenn Du aber Schlüsselwerte zu einer 1:1-Verbindung verknüpfst, dann muss die GUI irgendwoher Ursprung und Ziel nehmen - und die sind durch den Inhalt bereits vorgegeben und müssen dann auch in der Mausbewegung so sein.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Freischreiber
* LO-Experte *
Beiträge: 833
Registriert: Fr 28. Mär 2014, 10:41

Re: Bug bei 1:1-Beziehungen?

Beitrag von Freischreiber » Mi 17. Dez 2014, 09:33

Hallo Robert,

unfaßbar. Vielen Dank für den Hinweis. Base unterscheidet also zwischen links- und rechtsdrehenden 1:1-Beziehungen.

Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Bug bei 1:1-Beziehungen?

Beitrag von RobertG » Mi 17. Dez 2014, 09:53

Hallo Freischreiber,
Freischreiber hat geschrieben:Base unterscheidet also zwischen links- und rechtsdrehenden 1:1-Beziehungen.
Nein, der Unterschied ergibt sich aus der Fehlermeldung der Datenbank bei falscher Verknüpfung:

Code: Alles auswählen

ALTER TABLE "Tabelle1" ADD FOREIGN KEY ("ID") REFERENCES "Tabelle2" ("ID")
Das kann in "Tabelle1" nicht funktionieren, wenn dort bereits Werte stehen. Schließlich gibt "Tabelle2" dann die Werte vor, die in "Tabelle1" vorkommen dürfen.

Code: Alles auswählen

ALTER TABLE "Tabelle2" ADD FOREIGN KEY ("ID") REFERENCES "Tabelle1" ("ID")
Das funktioniert, wenn in "Tabelle1" Werte vorhanden sind. "Tabelle1" hat die Referenzwerte. In "Tabelle2" dürfen sich nur die Referenzwerte wiederfinden - nicht mehr Werte als in "Tabelle1".

Eine 1:1-Beziehung heißt eben nicht, dass in beiden Tabellen gleich viele Datensätze vorhanden sein müssen. Eine Tabelle muss deshalb die führende Rolle übernehmen, und die definierst Du mit "von da → nach da".

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Freischreiber
* LO-Experte *
Beiträge: 833
Registriert: Fr 28. Mär 2014, 10:41

Re: Bug bei 1:1-Beziehungen?

Beitrag von Freischreiber » Mi 17. Dez 2014, 15:48

Hallo Robert,

aha! Das ist irgendwie einsichtig so - und auch gut zu wissen, wie man Beziehungen per SQL-Befehl einrichten kann.

Dieser Hintergrund erklärt auch, weshalb das Problem bisher nie bei mir aufgetaucht ist - beim Verknüpfen leerer Tabellen ;)

Danke und Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten