Referentielle Integrität bei Eingabe in der Tabellensicht

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Referentielle Integrität bei Eingabe in der Tabellensicht

Re: Referentielle Integrität bei Eingabe in der Tabellensicht

von keksler » Mo, 30.03.2009 22:39

Vielen Dank für die gute Beratung!

Vielleicht ergibt sich ja die Möglichkeit der Löschweitergabe in den folgenden Versionen von Base. Meines Wissens ist dieser Programmteil auch bei weitem nicht so alt und entwickelt wie die anderen Teile, z.B. Writer oder Calc!

Daumen hoch für alle Programmierer von OOo! :D :D :D

Re: Referentielle Integrität bei Eingabe in der Tabellensicht

von eBayer » Mo, 30.03.2009 00:13

Ok, ich versuchs mal....
Wenn Du in der Abteilungstabelle die Nummer des Mitarbeiters, der Abteilungsleiter sein soll, hinterlegen willst, brauchst Du doch nur einen eindeutigen Index auf das Feld zu legen. Dann eine Beziehung von Abteilungleiter nach Mitarbeiter aufbauen. Ist zwar n:1, aber durch den eindeutigen Index auf die Nummer des Mitarbeiters ist damit zumindest eine Doppelbelegung ausgeschlossen und DER Mitarbeiter kann keine andere Abteilung leiten. Andererseits ist es damit nicht möglich, eine Abteilung mit einem nicht existierenden Mitarbeiter anzulegen.
Kaskadierendes Löschen ist so allerdings nicht einstellbar.
Vielleicht hilft's ja weiter.
Gruß eBayer

Re: Referentielle Integrität bei Eingabe in der Tabellensicht

von keksler » So, 29.03.2009 23:04

eBayer hat geschrieben:trotz Deiner nicht gerade freundlichen Antwort.....
Eine 1 : 1 Beziehung bekommst Du wenn Du PrimaryKey mit PrimaryKey verbindest.
Hättest Du auch durch einen kleinen Test selbst herausfinden können, Du Schlaumeier
Trotzdem Gruß
eBayer
Hallo,
ich versuche maximal vorsichtig zu formulieren, da ich keinesfalls unhöflich sein will und wollte:
Wenn du dich auf die Verknüpfung von Löschweitergabe und referentieller Integrität beziehst, so ist das ja nicht dein Einfall gewesen, also mache ich mich auch nicht über dich lustig oder ähnliches :D Im Gegenteil, ich freue mich, dass mir jemand die Überlegungen der Entwickler näher bringt, die ich selbst nicht nachvollziehen kann!

Ich bin mir nicht sicher, ob ich die Antwort 100%ig verstanden habe:
Nehmen wir an, wir haben eine Mitarbeitertabelle und eine Abteilungstabelle (Daten der Abteilung).
Die Mitarbeitertabelle hat die MitarbeiterNr als Primary Key, die Abteilungstabelle die AbteilungsNr. Ein Attribut der Abteilungstabelle ist der Abteilungsleiter. Dieser Fremdschlüssel bezieht sich auf die MitarbeiterNr. Ein Mitarbeiter darf nur eine Abteilung leiten, Co-Abteilungsleitungen existieren nicht. Daraus ergibt sich eine 1:1-Beziehung.
Aber wie kann ich die über die zwei Primary-Keys herstellen?

Re: Referentielle Integrität bei Eingabe in der Tabellensicht

von eBayer » So, 29.03.2009 22:44

trotz Deiner nicht gerade freundlichen Antwort.....
Eine 1 : 1 Beziehung bekommst Du wenn Du PrimaryKey mit PrimaryKey verbindest.
Hättest Du auch durch einen kleinen Test selbst herausfinden können, Du Schlaumeier
Trotzdem Gruß
eBayer

Re: Referentielle Integrität bei Eingabe in der Tabellensicht

von keksler » So, 29.03.2009 20:20

LOL! Ich danke Dir! Ich wäre nie im Leben darauf gekommen, dass die Löschweitergabe gleichzeitig die referentielle Integrität sicherstellt. Das sind ja zwei Paar Konzepte!

Vielleicht kannst Du mir noch bei einem zweiten Problem weiterhelfen: Wie kann ich die standardmäßige 1:n-Beziehung in eine 1:1-Beziehung ändern? Mit Draufklicken auf die Verbindung bin ich nicht im Detail weitergekommen.

Vielen Dank!

Re: Referentielle Integrität bei Eingabe in der Tabellensicht

von eBayer » So, 29.03.2009 15:04

Das kannst Du durch einen einfachen Test selbst herausfinden.
Ich habs auch so getan.
1. zwei Tabellen anlegen
- Familie (ID=PrimaryKey, Name als Text)
- Personen (Pers_ID=PrimaryKey, ID als Integer, Vorname als Text)
2. Beziehungen definieren (ID nach ID)
- Kaskadiertes Löschen anhaken
Wenn Du jetzt versuchst, eine Person zu erfassen, wird Dir das nicht gelingen.
Wenn Du aber zuvor die Familie (Nachname) für die Person angelegt hast, kannst Du auch dazu passend die Personen erfassen.
Wenn Du eine Familie löscht, werden nun auch alle Personen der Familie gelöscht.
Den Rest mußt Du mit Logik in Deinem Programm erschlagen.
Gruß
eBayer

Referentielle Integrität bei Eingabe in der Tabellensicht

von keksler » So, 29.03.2009 10:53

Hallo,

ich will sicherstellen, dass bei der Eingabe in der Tabellensicht nur solche Werte als Fremd-/Sekundärschlüssel eingegeben werden können, die bereits als Primärschlüssel definiert sind.

Laut dieser Quelle http://books.google.de/books?id=Jlpc6xt ... #PPA142,M1 ist es möglich, laut dieser Quelle http://de.openoffice.org/doc/einfuehrun ... ehrung.pdf (S. 97, 7 MB) nicht.

Was stimmt jetzt?

Nach oben