Tabellen Beziehung
Moderator: Moderatoren
Tabellen Beziehung
Hallo liebe Community,
beschäftige mich seit kurzem mit Base.
Habe mir eine Objektdatenbank aufgebaut. Bei der alltäglichen Dateneingabe, ist mir die Idee gekommen, dass ich mir die Arbeit etwas erleichtern könnte, wenn ich einen kleinen Teil an Datenfeldern als eigenständige Tabelle auslagere.
In einer Tabelle, sind der Namen des Objekts, die Adresse, Name des Inhabers und die Geschäftsbeteiligungen aufgelistet.
Objekt A, Inhaber ist Herr Muster.
Objekt B gehört auch zu Herr Muster.
In dem Datenfeld Ges.beteilig. habe ich nun im jeweiligen Objekt, den anderen Namen des verwandten Objekt hinterlegt.
Nun habe ich mir gedacht, ich lagerer genau diese Datenfelder, welche die Ges.beziehungen beinhalten in eine seperate Tabelle aus, welche ich über Beziehung dann mit der Haupttabelle einander verbinde. Nur gelingt es mir nicht, wenn ich Abfrage machen, das die gesuchten Objekte von Herrn Muster mir aufgelistet werden.
Liegt es daran, dass ich aus einer bestehenden Tabelle keine Datenfelder entfernen kann und diese in eine neue Tabelle einfügen kann?
Kann ich keine Beziehung zwischen beiden Tabellen aufbauen, weil in der Haupttabelle schon Daten eingepflegt wurden?
Hoffe, dass Ihr mir, ein klein wenig auf die Sprünge helfen könnt.
Mit freundlichen Grüßen
owenstone
beschäftige mich seit kurzem mit Base.
Habe mir eine Objektdatenbank aufgebaut. Bei der alltäglichen Dateneingabe, ist mir die Idee gekommen, dass ich mir die Arbeit etwas erleichtern könnte, wenn ich einen kleinen Teil an Datenfeldern als eigenständige Tabelle auslagere.
In einer Tabelle, sind der Namen des Objekts, die Adresse, Name des Inhabers und die Geschäftsbeteiligungen aufgelistet.
Objekt A, Inhaber ist Herr Muster.
Objekt B gehört auch zu Herr Muster.
In dem Datenfeld Ges.beteilig. habe ich nun im jeweiligen Objekt, den anderen Namen des verwandten Objekt hinterlegt.
Nun habe ich mir gedacht, ich lagerer genau diese Datenfelder, welche die Ges.beziehungen beinhalten in eine seperate Tabelle aus, welche ich über Beziehung dann mit der Haupttabelle einander verbinde. Nur gelingt es mir nicht, wenn ich Abfrage machen, das die gesuchten Objekte von Herrn Muster mir aufgelistet werden.
Liegt es daran, dass ich aus einer bestehenden Tabelle keine Datenfelder entfernen kann und diese in eine neue Tabelle einfügen kann?
Kann ich keine Beziehung zwischen beiden Tabellen aufbauen, weil in der Haupttabelle schon Daten eingepflegt wurden?
Hoffe, dass Ihr mir, ein klein wenig auf die Sprünge helfen könnt.
Mit freundlichen Grüßen
owenstone
Mit freundlichen Grüßen
owenstone
owenstone
Re: Tabellen Beziehung
Natürlich kannst Du Daten aus einer Tabelle auslagern. Das solltest Du immer dann tun, wenn bestimmte Felder häufig mehrfach auftauchen. Ich mache das einmal an einem kleinen Beispiel klar:
Adressverwaltung an einer Schule. In der Adressdatenbank werden Straßen, Hausnummern, Postleitzahlen und Orte gespeichert. Die Postleitzahlen und Orte dürften bei einer Schule sehr häufig gleich sein, bei Grundschulen sogar fast überall. Also wird aus der Tabelle "Adressen" die Eingabe von "Postleitzahl" und "Ort" ausgelagert. Das geht so:
Vorher:
Tabelle "Adresse", Felder "ID"(Primärschlüssel), "Straße", "Nr", "Postleitzahl", "Ort"
Nachher:
Tabelle "Ort", Felder "ID"(Primärschlüssel), "Postleitzahl", "Ort"
Tabelle "Adresse", Felder "ID"(Primärschlüssel), "Straße", "Nr", "OrtID"(Primärschlüssel aus der Tabelle "Ort" wird hier zum Fremdschlüssel)
Unter Extras → Beziehungen werden diese Tabellen miteinander verbunden.
In der Tabelle "Adresse" muss jetzt natürlich der Fremdschlüssel eingetragen werden, der den Verweis auf die Tabelle "Ort" liefert.
Wenn Du viele Daten in Deiner Haupttabelle bereits stehen hast ist das natürlich eine ziemliche Arbeit. Dann musst Du einen anderen Weg für die Eingabe des Schlüsselfeldes suchen - über die direkte SQL-Eingabe. Melde Dich, falls das erforderlich sein sollte.
Gruß
Robert
Adressverwaltung an einer Schule. In der Adressdatenbank werden Straßen, Hausnummern, Postleitzahlen und Orte gespeichert. Die Postleitzahlen und Orte dürften bei einer Schule sehr häufig gleich sein, bei Grundschulen sogar fast überall. Also wird aus der Tabelle "Adressen" die Eingabe von "Postleitzahl" und "Ort" ausgelagert. Das geht so:
Vorher:
Tabelle "Adresse", Felder "ID"(Primärschlüssel), "Straße", "Nr", "Postleitzahl", "Ort"
Nachher:
Tabelle "Ort", Felder "ID"(Primärschlüssel), "Postleitzahl", "Ort"
Tabelle "Adresse", Felder "ID"(Primärschlüssel), "Straße", "Nr", "OrtID"(Primärschlüssel aus der Tabelle "Ort" wird hier zum Fremdschlüssel)
Unter Extras → Beziehungen werden diese Tabellen miteinander verbunden.
In der Tabelle "Adresse" muss jetzt natürlich der Fremdschlüssel eingetragen werden, der den Verweis auf die Tabelle "Ort" liefert.
Wenn Du viele Daten in Deiner Haupttabelle bereits stehen hast ist das natürlich eine ziemliche Arbeit. Dann musst Du einen anderen Weg für die Eingabe des Schlüsselfeldes suchen - über die direkte SQL-Eingabe. Melde Dich, falls das erforderlich sein sollte.
Gruß
Robert
Re: Tabellen Beziehung
Hallo Robert,
vielen Dank für Deine Antwort.
Wenn ich es richtig sehe, dann ist Deine Tabelle Ort mit jedem Datensatz aus Tabelle Adresse verbunden.
Bei mir ist es aber so, dass nicht jeder Datensatz aus Tabelle Objekt, mit einem Datensatz aus Tabelle Gesellschaft verbunden ist.
Wenn ich ein wenig von Base verstanden habe, so habe ich folgende Verbindung: Tabelle Objekt 1 zu Tabelle Gesellschaft N, weil mich in dieser Tabelle, ist ein Eintrag vorgenommen worden, alle Datenfelder interessieren.
Diese muss ich also mit einem bestimmten Datensatz aus Tabelle Objekt verbinden.
Hab gedacht, es würde ungefähr so gehen: In Tabelle Objekt ein Datenfeld mit Bez. GesId (integer). Verbunden mit dem Datenfeld Ges-Id (integer) in Tabelle Gesellschaft.
Ergebnis: nichts, entweder werden bei den Abfragen nur die Datenfelder angezeigt, ohne die Datensätze. Oder es werden mir alle Datensätze angezeigt.
Irgendwo mache ich einen Fehler mit den Beziehungen, aber ich bin noch nicht dahinter gestiegen, woran es liegen könnte.
Gruß
ownstone
vielen Dank für Deine Antwort.
Wenn ich es richtig sehe, dann ist Deine Tabelle Ort mit jedem Datensatz aus Tabelle Adresse verbunden.
Bei mir ist es aber so, dass nicht jeder Datensatz aus Tabelle Objekt, mit einem Datensatz aus Tabelle Gesellschaft verbunden ist.
Wenn ich ein wenig von Base verstanden habe, so habe ich folgende Verbindung: Tabelle Objekt 1 zu Tabelle Gesellschaft N, weil mich in dieser Tabelle, ist ein Eintrag vorgenommen worden, alle Datenfelder interessieren.
Diese muss ich also mit einem bestimmten Datensatz aus Tabelle Objekt verbinden.
Hab gedacht, es würde ungefähr so gehen: In Tabelle Objekt ein Datenfeld mit Bez. GesId (integer). Verbunden mit dem Datenfeld Ges-Id (integer) in Tabelle Gesellschaft.
Ergebnis: nichts, entweder werden bei den Abfragen nur die Datenfelder angezeigt, ohne die Datensätze. Oder es werden mir alle Datensätze angezeigt.
Irgendwo mache ich einen Fehler mit den Beziehungen, aber ich bin noch nicht dahinter gestiegen, woran es liegen könnte.
Gruß
ownstone
Mit freundlichen Grüßen
owenstone
owenstone
Re: Tabellen Beziehung
Hallo Ownstone,
Ich hänge einmal ein kleines Beispiel an. Achte dabei auch darauf, dass unter
Extras → Beziehungen
die Beziehungen definiert wurden, damit eben nicht eine Nummer in Objekt steht, zu der es keine Gesellschaft gibt.
Gruß
Robert
Das kann so sein, muss es aber nicht. Was vor allem für die weitere Behandlung wichtig ist: In der Tabelle Adresse darf kein Eintrag "OrtID" vorhanden sein, den es als "ID" in der Tabelle "Ort" nicht gibt. Außerdem muss das Feld die gleichen Eigenschaften haben wie als Primärschlüssel in "Ort", z.B. beide "Integer".owenstone hat geschrieben: Wenn ich es richtig sehe, dann ist Deine Tabelle Ort mit jedem Datensatz aus Tabelle Adresse verbunden.
Genau so müsste es gehen. Du nimmst den Primärschlüssel der Tabelle "Gesellschaft" und verbindest ihn mit einem Feld in der Tabelle "Objekt", das die gleiche Eigenschaft "Integer" hat.owenstone hat geschrieben: Wenn ich ein wenig von Base verstanden habe, so habe ich folgende Verbindung: Tabelle Objekt 1 zu Tabelle Gesellschaft N, weil mich in dieser Tabelle, ist ein Eintrag vorgenommen worden, alle Datenfelder interessieren.
Diese muss ich also mit einem bestimmten Datensatz aus Tabelle Objekt verbinden.
Hab gedacht, es würde ungefähr so gehen: In Tabelle Objekt ein Datenfeld mit Bez. GesId (integer). Verbunden mit dem Datenfeld Ges-Id (integer) in Tabelle Gesellschaft.
Ich hänge einmal ein kleines Beispiel an. Achte dabei auch darauf, dass unter
Extras → Beziehungen
die Beziehungen definiert wurden, damit eben nicht eine Nummer in Objekt steht, zu der es keine Gesellschaft gibt.
Gruß
Robert
- Dateianhänge
-
- Tabellenbeziehungen.odb
- (4.17 KiB) 81-mal heruntergeladen
Re: Tabellen Beziehung
Hi Robert,
vielen herzlichen Dank für Deine schnelle Antwort.
Werde es ausprobieren und Bescheid geben.
Jetzt ist WE, und family geht vor.
Gruß
owenstone
vielen herzlichen Dank für Deine schnelle Antwort.
Werde es ausprobieren und Bescheid geben.
Jetzt ist WE, und family geht vor.
Gruß
owenstone
Mit freundlichen Grüßen
owenstone
owenstone
Re: Tabellen Beziehung
Hallo Robert,
gestern nach dem Spiel, hatte ich dann die Muse, und mich damit beschäftigt.
Vielen Dank, jetzt klappts.
Wenn ich es richtig verstanden habe, muss die eine Beziehung zwischen 2 Tabellen, im Vorfeld schaffen, bevor ich eine Abfrage starte.
Und es muss eine Verbindung hergestellt werden über einen Eintrag, der sagt, dass Datensatz f aus Tabelle Objekt zu dem Datensatz zi aus Tabelle Gesellschaft.
Dies haw ich auch vergessen.
Kleine Frage hab ich noch zum Schluß.
Wie kann ich bei einer Abfrage erreichen, dass alle Datensätze angezeigt werden. Zur Zeit werden in meiner Abfrage nur die Datensätze angezeigt, in der beide Tabellen einen gemeinsamen Nenner haben. Aber nicht zu jedem Objekt gehören andere Gesellschaften.
gestern nach dem Spiel, hatte ich dann die Muse, und mich damit beschäftigt.
Vielen Dank, jetzt klappts.
Wenn ich es richtig verstanden habe, muss die eine Beziehung zwischen 2 Tabellen, im Vorfeld schaffen, bevor ich eine Abfrage starte.
Und es muss eine Verbindung hergestellt werden über einen Eintrag, der sagt, dass Datensatz f aus Tabelle Objekt zu dem Datensatz zi aus Tabelle Gesellschaft.
Dies haw ich auch vergessen.
Kleine Frage hab ich noch zum Schluß.
Wie kann ich bei einer Abfrage erreichen, dass alle Datensätze angezeigt werden. Zur Zeit werden in meiner Abfrage nur die Datensätze angezeigt, in der beide Tabellen einen gemeinsamen Nenner haben. Aber nicht zu jedem Objekt gehören andere Gesellschaften.
Mit freundlichen Grüßen
owenstone
owenstone
Re: Tabellen Beziehung
Hallo Owenstone,
In der grafischen Oberfläche sieht das so aus:
Du hast zwei Bilder der Tabellen mit einer Verbindungslinie. Gehe mit der Maus auf diese Verbindungslinie. Rechte Maustaste - Beziehung bearbeiten (oder so ähnlich). Dann musst Du eine Beziehung auswählen, bei der alle Datensätze aus "Objekt" abgebildet werden, auch wenn keine Gesellschaft dazu existiert.
In der SQL-Ansicht sieht das so aus:
SELECT ... FROM "Objekt" LEFT JOIN "Gesellschaft" ON "Objekt"."Gesellschaft_ID" = "Gesellschaft"."ID"
Mit diesem LEFT JOIN zeigst Du alle Datensätze der links von dem Begriff liegenden Tabelle (LEFT ...) und von der rechts liegenden Tabelle nur die, die dazu passen.
Ich habe das einmal als zusätzliche Abfrage gemacht. Schau Dir dabei ruhig den SQL-Code an.
Gruß
Robert
Du musst die in dem Abfrageentwurf abgebildete Beziehung zwischen den Tabellen bearbeiten.owenstone hat geschrieben: Wie kann ich bei einer Abfrage erreichen, dass alle Datensätze angezeigt werden. Zur Zeit werden in meiner Abfrage nur die Datensätze angezeigt, in der beide Tabellen einen gemeinsamen Nenner haben. Aber nicht zu jedem Objekt gehören andere Gesellschaften.
In der grafischen Oberfläche sieht das so aus:
Du hast zwei Bilder der Tabellen mit einer Verbindungslinie. Gehe mit der Maus auf diese Verbindungslinie. Rechte Maustaste - Beziehung bearbeiten (oder so ähnlich). Dann musst Du eine Beziehung auswählen, bei der alle Datensätze aus "Objekt" abgebildet werden, auch wenn keine Gesellschaft dazu existiert.
In der SQL-Ansicht sieht das so aus:
SELECT ... FROM "Objekt" LEFT JOIN "Gesellschaft" ON "Objekt"."Gesellschaft_ID" = "Gesellschaft"."ID"
Mit diesem LEFT JOIN zeigst Du alle Datensätze der links von dem Begriff liegenden Tabelle (LEFT ...) und von der rechts liegenden Tabelle nur die, die dazu passen.
Ich habe das einmal als zusätzliche Abfrage gemacht. Schau Dir dabei ruhig den SQL-Code an.
Gruß
Robert
- Dateianhänge
-
- Tabellenbeziehungen.odb
- (4.35 KiB) 72-mal heruntergeladen
Re: Tabellen Beziehung

vielen Dank für Deine tolle Bemühung mir zu helfen.
Läuft alles prima

Mit freundlichen Grüßen
owenstone
owenstone