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?
Referentielle Integrität bei Eingabe in der Tabellensicht
Moderator: Moderatoren
Re: Referentielle Integrität bei Eingabe in der Tabellensicht
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
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
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Re: Referentielle Integrität bei Eingabe in der Tabellensicht
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!
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
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
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
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Re: Referentielle Integrität bei Eingabe in der Tabellensicht
Hallo,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
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

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
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
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
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Re: Referentielle Integrität bei Eingabe in der Tabellensicht
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!

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!


