Aufbau einer Datenbank

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Roxianna
***
Beiträge: 78
Registriert: Di, 13.10.2020 01:08
Wohnort: Essen
Kontaktdaten:

Aufbau einer Datenbank

Beitrag von Roxianna »

Hallo,

nachdem ich jetzt die 2 Tabellen erstellt habe, versuche ich jetzt die Beziehungen zwischen den beiden Tabellen herzustellen. Als Anleitung habe ich mir eigentlich das Handbuch von Open Office genommen "Entwurf einer Beispieldatenbank" . Leider funktioniert es nicht so wie es dort geschrieben wird, in Libre Office. Ich kann die ID von der Tabelle Mitgliederliste nicht in die Tabelle Pacht ziehen und auch umgedreht geht es nicht. Ich kann lediglich die ID´s übereinanderziehen.

Dann habe ich auf "Beziehungen" geklickt.
Beziehungen
Beziehungen
Screenshot 2020-11-02 020020.jpg (22.52 KiB) 6217 mal betrachtet
Screenshot 2020-11-02 020111.jpg
Screenshot 2020-11-02 020111.jpg (48.02 KiB) 6217 mal betrachtet
Daraufhin kam folgende Fehlermeldung:
Fehlermeldung
Fehlermeldung
Screenshot 2020-11-02 020117.jpg (32.16 KiB) 6217 mal betrachtet
Daraufhin habe ich die ID Pacht genommen und auf die ID Mitgliederliste gezogen:
Screenshot 2020-11-02 020126.jpg
Screenshot 2020-11-02 020126.jpg (52.03 KiB) 6217 mal betrachtet
Ist das richtig so?

Falls es richtig so ist, wie geht es weiter? Ich will Serienbriefe für die Pacht verschiedener Gartengruppen erstellen.
Jede Gartengruppe hat andere Gebühren. Städtisch zahlt Pacht, Privat nur eine Gebühr und Bahn zahlt nur Mitgliedsbeitrag.

Danke

Gruß
Sylvia
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Aufbau einer Datenbank

Beitrag von RobertG »

Hallo Sylvia,

in dem 2. Screenshot steht eine 1:1-Beziehung. Die ist in den seltensten Fällen sinnvoll. Sie wird nur dann gewählt, wenn es z.B. viele Mitglieder ohne Pacht gibt, die Pacht aber immer an ein Mitglied fest gebunden ist - kein Wechsel der Pacht von einem Mitglied zum anderen.

3. Screenshot: Wenn bei der Verbindung von einer Tabelle zur anderen Tabelle eine Standardverbindung gesetzt werden soll, dann musst Du auch den Standard vorher definieren. Und dabei handelt es sich nicht um den Standard, der in den Tabellen gesetzt werden. Lies einmal im Handbuch zu "Default".

Tabellennamen mit dem Jahr in der Bezeichnung lassen mich befürchten, dass Du für jedes Jahr eine neue Tabelle erstellen willst - und alle Formulare, Serienbriefe usw. anpassen möchtest. Mach' das nicht. Nimm ein Datum für den Beitritt und ein Datum für den Austritt oder ähnliches mit in die Tabellen auf.

Wenn Du Schwierigkeiten mit der Beispieldatenbank hast,dann melde das hier. Und wenn Du Verknüpfungsprobleme mit den Tabellen hast: Schau Dir die Fehlermeldung an. Da steht in der Regel alles drin - leider auf Englisch.

Gruß

Robert
Roxianna
***
Beiträge: 78
Registriert: Di, 13.10.2020 01:08
Wohnort: Essen
Kontaktdaten:

Re: Aufbau einer Datenbank

Beitrag von Roxianna »

So, ich glaube die Beziehung ist geschafft.
Screenshot 2020-11-03 014549.jpg
Screenshot 2020-11-03 014549.jpg (63.58 KiB) 6149 mal betrachtet
Mit default konnte ich trotzdem nichts anfangen, außer das es Standard bedeutet.

ich habe ein neues Feld gemacht in der Mitgliederliste und dann die Beziehung dazu . Allerdings wußte ich jetzt nicht, was ich als Feldtyp nehmen sollte. Ich habe dort auch Integer genommen.

Zu den ausgeschiedenen Mitgliedern bzw. die den Garten abgegeben haben, würde ich gerne eine extra Tabelle machen. Das ist mir sonst zu viel durcheinander. Ich würde sie gerne auch suchen können zusammen mit den Mitgliedern. Aber diejenigen brauchen wir ja nur, um später zu sehen, wer alles welchen Garten hatte.

Gruß

Sylvia
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Aufbau einer Datenbank

Beitrag von RobertG »

Hallo Sylvia,

das Blöde an den Übersetzungen ist: Es gibt in den Tabellen in der grafischen Benutzeroberfläche eine Einstellung "Standardwert". Dieser Standardwert wird bei Aufruf einer neuen Tabellenzeile direkt sichtbar in die Zeile geschrieben. Der Standardwert ist der Datenbank nicht bekannt.

Es gibt auch einen Default-Wert, der über SQL für ein Feld angegeben werden kann, Dieser Wert wird in ein Feld geschrieben, wenn es bei der Neueingabe leer bleibt. So kann z.B. von der Datenbank automatisch das aktuelle Datum oder sogar die genaue Abspeicherungszeit in ein Feld eingefügt werden. Das geht beim Datum ohne dieses Default-Wert mit Formularen nur über Tricks, bei der genauen Zeit nur annähernd über Makros.

Für die Angabe von Standardwerten in den Beziehungen brauchst Du die Default-Werte, die in SQL angegeben werden müssen. Sonst steht dort eher "NULL setzen".

Die Felder, die Du verbindest, müssen grundsätzlich immer den gleichen Typ und gegebenenfalls (bei Textfeldern) die gleiche Länge haben. Sie müssen schließlich den gleichen Inhalt speichern können.

Ich würde die ausgeschiedenen Mitglieder drin lassen. Denn das Durcheinander produzierst Du dadurch, dass Du beim Ausscheiden Datensätze kopieren musst. In einer Bibliotheksdatenbank (war mein erstes Projekt) sind auch tausende Datensätze in der Haupttabelle. Wird ein Buch ausgemustert, so wird es zuerst einmal als ausgemustert markiert. Ob es je gelöscht wird hängt vom Wunsch des Nutzers ab. Und trotzdem kann ich da jeden beliebigen Datensatz raus filtern und bekomme immer die passenden Daten angezeigt.

Gruß

Robert
Roxianna
***
Beiträge: 78
Registriert: Di, 13.10.2020 01:08
Wohnort: Essen
Kontaktdaten:

Re: Aufbau einer Datenbank

Beitrag von Roxianna »

Hallo,

jetzt habe ich erstmal keine technischen Probleme, sondern eher organisierte.

Es gibt ein Pachtkonto , dazu wurden in einer Tabelle übersichtlich jeder Ein-und Ausgang aufgeschrieben (Keine Buchungen) . Das würde ich gerne so beibehalten und mit in die Datenbank einpflegen. Das auf diesem Pachtkonto u.a. auch die Pacht eingeht, sollte jedem klar sein. Das Pachtkonto ist ein Durchlaufkonto. Die Zahlungseingänge werden dann weitergeleitet. Dazu möchte ich gerne eine Buchhaltung aufbauen ( hat bisher niemand gemacht) .

Ich möchte es eigentlich so gestalten, daß alles automatisiert geht. D.h. die gezahlte Pacht soll vom Kontoauszug direkt dem Mitglied zugeordnet werden und bestenfalls gleich in die Buchhaltung eingepflegt werden. Alle weiteren Posten sollen auch vom Kontoauszug (diese Tabelle die ich behalten will und in die Datenbank einpflegen) direkt in die Buchhaltung eingetragen werden. So daß ich nur noch die Kontoauszüge der Bank in die Kontoauszugstabelle eintragen muß.

In diesem Konto sind auch Zahlungseingänge und -ausgänge , die keinem Garten zugeordnet werden. Z.b. Kontoführungsgebühren.
Für diese müsste ich jetzt eine extra Tabelle anlegen. Denen gebe ich zusätzlich vielleicht sowas ähnliches wie Kundennummern. Dann kann ich sicherlich später der Datenbank sagen, "wenn Kundennummer 101 , dann ordne es dem Kunden Sparkasse zu und verbuche es in deren Konto" irgendwie so ähnlich. So daß er auf die Tabelle mit der ID 3 Kunden zugreift und auf die Tabelle ID 4 Buchhaltung . Dort sucht er dann nach dem Kunden 101 . Bei der Pacht würde es noch komplizierter laufen. Dort soll es dann dem jeweiligen Garten zugeordnet werden.
Die Pacht - GartenTabelle (Gartengruppen) müsste jedes Jahr dupliziert werden und neu den Mitgliedern zugeordnet werden. Es können ja Erhöhungen durch die Kommunen sein, es passiert häufig, daß wir Mahngebühren schreiben müssen. Die Gesamtkosten der Pacht varieren.

Später , nach der Jahreshauptversammlung , kommt dann noch die ganze Kasse hinzu. Ein Geschäfts- und ein Vereinskonto.
Vielleicht kann ich dann die Kunden aus den beiden anderen Konten zu den Kunden der Pacht hinzufügen. Kunden ist jetzt vielleicht nicht richtig, wir haben ja auch Verbindlichkeiten. Ich glaube ich nenne die Tabelle A-Z . Ist vermutlich das einfachste.

Wie soll ich das alles aufbauen? Passt das alles so wie ich mir das vorstelle?

Danke

Gruß

Sylvia
Roxianna
***
Beiträge: 78
Registriert: Di, 13.10.2020 01:08
Wohnort: Essen
Kontaktdaten:

Re: Aufbau einer Datenbank

Beitrag von Roxianna »

Gerade noch ein Problem entdeckt. Im Formular:
Screenshot 2020-11-05 024504.jpg
Screenshot 2020-11-05 024504.jpg (136.03 KiB) 6000 mal betrachtet
In dem unteren Feld ID2 Pacht steht nix drin. Ich wurde beim Erstellen des Formulars und Subformular nach irgendwas gefragt bezüglich der über- und Unterordnung. Auf beiden Seiten habe ich Gartengruppe und Gartennummer angegeben.

Hätte ich mehr angeben müssen oder irgendwas anderes?

Ich wollte eigentlich im Formular suchen, wer alles keine Pflichtstunden bezahlt. Funktionierte nicht.

Gruß

Sylvia

P.S: Bezüglich Datenschutz: Mein Vater ist mit dem Screenshot einverstanden. Ich bin zwar auch in der Mitgliederliste, aber ich habe keinen eigenen Garten.
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Aufbau einer Datenbank

Beitrag von RobertG »

Hallo Sylvia,

von Deiner Tabellenkonstruktion her ist das Hauptformular "Pacht 2021" und das Unterformular "Mitgliederliste 2021". Das sagt die Beziehung von 1:n aus. Es müsste also möglich sein, dass mehrere Mitglieder einer Pacht zugeordnet werden können.

Nach dem Bild des Formulars meinst Du das umgekehrt: Du möchtest gerne einem Mitglied mehrere Pachten zuordnen können.

Die Formulare werden über den Fremdschlüssel verbunden. Das muss reichen. Nicht irgendwelche anderen Konstruktionen. Die sind von der Tabellenkonstruktion her nicht vorgesehen.

Gruß

Robert
Roxianna
***
Beiträge: 78
Registriert: Di, 13.10.2020 01:08
Wohnort: Essen
Kontaktdaten:

Re: Aufbau einer Datenbank

Beitrag von Roxianna »

Hallo Robert,

jetzt habe ich erstmal die Beziehungen gelöscht. Auch ID Pacht in der Mitgliederliste. Allerdings kann ich in der Pacht kein Feld ID Mitgliederliste erstellen.
Screenshot 2020-11-06 025853.jpg
Screenshot 2020-11-06 025853.jpg (28.88 KiB) 5937 mal betrachtet
Im Handbuch steht diese Fehlermeldung erst bei den Relationen, aber soweit bin ich noch nicht. Kann ja noch nicht mal ein neues Feld erzeugen mit einer ID. Selbst wenn ich Mitgliederliste ID schreibe geht es nicht.

Was mache ich falsch?

Gruß
Sylvia
Hiker
******
Beiträge: 590
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: Aufbau einer Datenbank

Beitrag von Hiker »

Hallo,

nach der Fehlermeldung darfst Du keine Column constraint in ALTER TABLE nutzen.
Versuch also mal das NOT NULL erst wegzulassen und hinterher einzusetzen indem du die COLUMN modifiziert.

Mfg, Jörn

https://www.w3schools.com/sql/sql_notnu ... is%20field.
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Aufbau einer Datenbank

Beitrag von RobertG »

Hallo Sylvia,

NOT NULL funktioniert natürlich nur dann, wenn die gesamte Tabelle leer ist. Was soll die Datenbank denn sonst dort einsetzen, wenn eben kein leeres Feld. Das wäre dann der Einsatz für DEFAULT. Vielleicht würde so etwas wie

Code: Alles auswählen

ALTER TABLE "Pacht 2021" ADD "ID Mitgliederliste" INTEGER DEFAULT 0  NOT NULL;
als Eingabe in Extras → SQL das machen, was Du willst. Gibt es denn sicher zu jeder "Pacht 2021" immer einen Datensatz aus der Mitgliederliste? Nur dann macht NOT NULL Sinn. Und 0 würde nachher automatisch zum Mitglied mit der ID 0 verbinden.

Gruß

Robert
Roxianna
***
Beiträge: 78
Registriert: Di, 13.10.2020 01:08
Wohnort: Essen
Kontaktdaten:

Re: Aufbau einer Datenbank

Beitrag von Roxianna »

Hallo Robert und Jörn,

in der Mitgliederliste und in der Pacht sind nur Gartengruppen und Gartennummer indentisch. In der Mitgliederliste sind nur die reinen Mitglieder mit ihren Gärten (in der jeweiligen Gartenanlage und Gartennummer) und Privatanschrift. Die Pacht ist den Gartengruppen und Gärten zugeordnet. Jeder Garten hat ja andere Details für die Pacht. Sowie jede Wohnung in der wir wohnen.

@Jörn: Das was du geschrieben hast, verstehe ich nicht.

Ich habe nirgendwo was eingegeben von "Not Null" Ich habe lediglich ein Feld mit dem Namen "ID Mitgliederliste" erstellt und Integer eingestellt.

Ich habe es mit Autowert ja und nein versucht. Alles andere so gelassen.
Screenshot 2020-11-06 170036.jpg
Screenshot 2020-11-06 170036.jpg (108.81 KiB) 5876 mal betrachtet
Bei Autowert "Ja" hat er mir einen Primärschlüssel gesetzt.

Als ich das gleiche bei der Mitgliederliste gemacht habe und die ID Pacht erstellt habe, da hatte es geklappt. Nur nicht in Pacht die ID Mitgliederliste.

Gruß

Sylvia
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Aufbau einer Datenbank

Beitrag von RobertG »

Hallo Sylvia,

wenn Du ein Primärschlüsselfeld haben willst, dann kannst Du das Integer-Feld zum Autowert-Feld machen. Sonst nicht. Es macht nur Sinn, ein einziges Auto-Wert-Feld in einer Tabelle zu haben.

Wenn die Fehlermeldung "NOT NULL" enthält, dann musst Du beim Anlegen des Datensatzes in dem Tabelleneditor Eingabe erforderlich → Ja gesetzt haben. Sonst dürfte das nicht passieren. Bei einem Feld für einen Primärschlüssel wird natürlich die Eingabe erforderlich sein. Nicht aber bei einem Feld, das nur auf den Primärschlüssel einer anderen Tabelle verweisen soll.

Am besten zeigst Du hier einmal Deine fesamte Tabellenkonstruktion. Die Tabellen brauchen ja nicht unter Extras → Beziehungen verbunden zu sein. Aber so, wie Du das im Moment häppchenweise präsentierst ist das Ganze ein munteres Raten, was Du denn da machst.

Gruß

Robert
Roxianna
***
Beiträge: 78
Registriert: Di, 13.10.2020 01:08
Wohnort: Essen
Kontaktdaten:

Re: Aufbau einer Datenbank

Beitrag von Roxianna »

Hallo Robert,

nachdem ich jetzt das Handbuch weiter gelesen habe, ist mir glaube ich etwas klar geworden.

"Not Null" bedeutet wohl, das die Tabelle nicht leer ist , um irgendwas zu ändern.

Wenn ich etwas ändern will, obwohl es nicht leer ist, dann löscht er es wohl damit es " Null " ist.
Nur mir ist nicht klar geworden, wenn ich die Beziehung aufbauen will, warum die Tabelle leer sein soll?

Aber die Beziehung hat vorhin geklappt, aber genauso habe ich es gestern abend auch schon gemacht.

Dann habe ich jetzt das Formular erstellt. Nachdem Libre Office mehrfach der Meinung war, das geht nicht, hat er es sich doch irgendwann anders überlegt. 3 Versuche, der 4. hat dann geklappt. Allerdings ist da wohl noch ein Fehler drin.
Vermutlich liegt es daran, das die Datenbanken nicht identisch sind. Garten 7 ist in der Mitgliederliste ID107 und in der Pachtliste ID 95 .
Wobei das Pachtformular bei der ID107 mir doch auch einen Wert anzeigen müsste, auch wenn es vielleicht der falsche ist.
Screenshot 2020-11-07 015713.jpg
Screenshot 2020-11-07 015713.jpg (117.76 KiB) 5837 mal betrachtet
Ich mache noch ein Beitrag nur mit allen Screenshots.

Gruß

Sylvia
Roxianna
***
Beiträge: 78
Registriert: Di, 13.10.2020 01:08
Wohnort: Essen
Kontaktdaten:

Re: Aufbau einer Datenbank

Beitrag von Roxianna »

Screenshot 2020-11-06 224254.jpg
Screenshot 2020-11-06 224254.jpg (95.52 KiB) 5834 mal betrachtet
Screenshot 2020-11-06 224216.jpg
Screenshot 2020-11-06 224216.jpg (8.51 KiB) 5834 mal betrachtet
Screenshot 2020-11-06 224205.jpg
Screenshot 2020-11-06 224205.jpg (78.93 KiB) 5834 mal betrachtet
Screenshot 2020-11-06 224145.jpg
Screenshot 2020-11-06 224145.jpg (68.26 KiB) 5834 mal betrachtet
Screenshot 2020-11-06 225447.jpg
Screenshot 2020-11-06 225447.jpg (81.95 KiB) 5834 mal betrachtet
Screenshot 2020-11-06 225558.jpg
Screenshot 2020-11-06 225558.jpg (86.06 KiB) 5834 mal betrachtet
Screenshot 2020-11-06 225615.jpg
Screenshot 2020-11-06 225615.jpg (59.17 KiB) 5834 mal betrachtet
Screenshot 2020-11-06 225841.jpg
Screenshot 2020-11-06 225841.jpg (93.8 KiB) 5834 mal betrachtet
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Aufbau einer Datenbank

Beitrag von RobertG »

Hallo Sylvia,

zum Formular: Steht denn in der Tabelle "Pacht 2021" irgendwo im Feld "ID Mitgliederliste" der Wert 107?

Gruß

Robert
Antworten