Wie einfache Datenbank anlegen für Statistische Auswertung?

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Heike92
Beiträge: 4
Registriert: Di, 14.02.2017 11:16

Wie einfache Datenbank anlegen für Statistische Auswertung?

Beitrag von Heike92 »

Hallo zusammen ,
als "Anfängerin" bräuchte ich eure Hilfe, wie ich am Besten eine Datenbank "starte" um meine Anfordungen zu erfüllen. Auch bin ich mir nicht sicher was alles möglich ist. Habe mich zwar schon etwas eingearbeitet, aber noch sehe ich kein Licht am Ende des Tunnels, so dass ich hoffe hier kann mir schnell geholfen werden. Für einen Geübten dürfte es wohl äußerst trivial sein, was ich vorhabe und hoffentlich in wenigen Sätzen geholfen.

Ich möchte mit mit der Datenbank ein Gipfelbuch erstellen. Felder reichen mit eigentlich Bergname, Höhe und Tourdatum. Jetzt möchte ich dazu aber viel Statistik und da bin ich dann leider überfragt, wie ich die Datenbank für meine Anforderung am besten anlege, um die gwünschten Satistiken zu erhalten und ob alle Statistiken überhaupt möglich sind. Einfache (für mich) Abfragen wie z. B. alle Zweitausender, Dreitausender oder in einem Jahr habe ich schon hinbekommen. Jetzt habe ich allerdings das "Problem", dass ich zahlreiche Gipfel auch öfters besucht habe und hier bin ich dann mit meinem Latein am Ende, wie ich die Datenbank anlegen muss.
Wie kann ich einem Bergnamen am sinnvollsten mehrer Tourdaten zuordnen, so dass dann bei der Statistik auch ein öfters besuchter Gipfel nur einmal bei z.B. Zweitausender auftaucht und zusätzlich noch eine Statistik möglich ist, welcher Bergnamen (auch unter Berücksichtigung der Höhe, da es zahlreiche Bergnamen ja öfters gibt und erst die selbe Höhe dann auch auf den selben Berg schließt) wie oft besucht wurde. Gibt es dafür ein Feld, in dem ich mehrer Daten (meine "Datums") eintragen kann, muss man selben Bergnamen für jedes Tourdatum neu anlegen und dann nur die Abfrage richtig definieren, oder gibt es noch eine andere Idee/Möglichkeit?

Mir würde vorerst schon mal helfen wie ich die Datenbank richtig anlege, damit ich dann mit den richtigen Abfragen auch alle gewünschten Statistiken erhalte. Nochmals als Überblick alle Satistiken die ich aus der Datenbank erhalten möchte:
-Alle Bergnamen durchgezählt in einem Höhenbereich
-Alle unterschiedlichen Bergnamen/Höhe (gleicher Gipfel wird nur einmal gezählt, auch wenn zig mal eingetragen) durchgezählt in einem Höhenbereich
-Alle Bergnamen durchgezählt in einem Zeitraum
-Bergnamen/Höhe sortiert nach Anzahl der Besuche
Denke wenn das alles geht, dürften alle weiteren Statistiken (die mir jetzt spontan nicht einfallen) auch kein Problem mehr sein

Schon mal Danke für eure Tipps und Hilfe!
Heike
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Wie einfache Datenbank anlegen für Statistische Auswertung?

Beitrag von RobertG »

Hallo Heike,

Tabelle Berg
ID Bergname Höhe

Tabelle Tour
ID BergID Datum

Die ID-Felder würde ich als AutoWert (Integer) anlegen. BergID muss dann auch Integer sein.

Extras > Beziehungen
Beide Tabellen auswählen, Verbindung von Berg.ID zu Tour.BergID (geht nur, wenn beide Felder den gleichen Feldtyp, z.B. Integer, haben).

Formular
Tabelle Berg im Hauptformular, das Feld ID brauchst Du Dir nicht anzeigen zu lassen
Tabelle Tour im Unterformular. Du brauchst hier nur das Feld Datum.

Das reicht für Deine Datenbank. Du kannst jeden Berg mehrmals besteigen und entsprechend das Datum der Tour eintragen. Du kannst nach Höhen sortieren und auch das Datum der letzten Besteigung zuordnen.

Gruß

Robert
Heike92
Beiträge: 4
Registriert: Di, 14.02.2017 11:16

Re: Wie einfache Datenbank anlegen für Statistische Auswertung?

Beitrag von Heike92 »

Danke Robert,
genau das was ich gesucht habe!
Jetzt habe ich allerdings noch das Problem, dass ich mit dem Formular nicht so ganz glücklich bin. Komme da mit dem Erstellen nur mit dem Assistenten klar. Oben steht somit Bergname und Höhe und ich kann über Datensatznummer durchwechseln. Befürchte das könnte mit der Zeit unangenehm werden den richtigen zu finden, wenn ich ein neues Tourdatum hinzufügen möchte, da es sicher über 1000 Datensätze werden. Aktuell sehe ich nur die Lösung in Tabelle Berge nach dem Namen zu suchen und dann über die ID im Formular schnell zum richtigen Gipfel zu kommen. Gibt es da vielleicht die Möglichkeit im Formular die Datensätze nach Bergnamen alphabetisch zu sortieren (wenn ich das in der Tabelle mache, dann hat es auf das Formular keine Auswirkung), so dass es ohne den Umweg über Tabelle und ID geht? Vielleicht auch eine andere Idee, wie ich im Formular schnell den richtigen Datensatz (Gipfel) finde?
Noch mehr stört mich, dass sich nur ein Feld mit Datum findet und ich hier ebenfalls per Datensatz die einzelnen Daten durchwechseln muss. Gibt es hier vielleicht die Möglichkeit, dass alle Datensätze untereinander angezeigt werden. Ein Gipfel mit einer Besteigung hat somit 1 Datumsfeld darunter und einer mit z. B. fünf eben 5 Datumsfelder?

Kann aber so damit auch leben, da es mir primär um die Statistik geht, aber eine etwas komfortable/übersichtlichere Eingabe/Formulardarstellung wäre nicht verkehrt ;-)

Nochmals Danke!
Heike
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Wie einfache Datenbank anlegen für Statistische Auswertung?

Beitrag von RobertG »

Hallo Heike,

öffne das Formular zum Bearbeiten, nicht zur Dateneingabe. Gehe auf ein Feld im Hauptformular, z.B. Bergname. Rechte Maustaste > Formular. Es öffnen sich die Formulareigenschaften. Dort Reiter Daten > Sortierung und hier den Button mit den 3 Punkten drücken.
Schon für das Hauptformular bietet sich statt einzelnen Kontrollfelder ein Tabellenkontrollfeld an. Dann siehst Du mehrere Datensätze auf einmal.

Für das Unterformular nimmst Du ein Tabellenkontrollelement: Auf der linken Seite des Formulars müsste die Symbolleiste "Formular-Steuerelemente" zu sehen sein. Da gibt es recht weit unten den Button "Weitere Steuerelemente". In den weiteren Steuerelementen taucht das Tabellen-Kontrollfeld auf. Ziehe das Feld entsprechend weit nach unten. Dann siehst Du auch genug Datumswerte untereinander für das eine Feld, das aus dem Hauptformular ausgesucht wurde.

Wenn das alles läuft, dann melde Dich noch einmal. Bei 1000 Datensätzen im Hauptformular würde ich zusätzlich noch einen Filter einbauen, damit Du schneller zum Ziel kommst.

Gruß

Robert
Heike92
Beiträge: 4
Registriert: Di, 14.02.2017 11:16

Re: Wie einfache Datenbank anlegen für Statistische Auswertung?

Beitrag von Heike92 »

Deine Hilfe ist echt super Robert!

Leider komme ich wohl vorm Wochenende nicht zum Testen und das eingeben der Daten wird wohl Aufgrund der Menge auch etwas dauern. Gebe auf alle Fälle hier wieder Bescheid, bzw. komme auf dein Angebot zurück wenn ich so weit bin. Kann halt noch etwas Dauern. Vielleicht kommt auch noch die ein oder andere Frage dazu, um das Ganze zu perfektionieren ;-)

Ein wäre mir spontan eh noch eingefallen:
Wenn einer BergID mehrere Tourdaten zugeordnet sind, wäre es dann möglich in der Tabelle Berg neben Bergname und Höhe auch noch ein Feld/Wert "Anzahl Besteigungen" anzuzeigen, in dem die Summe der eingetragenen Tourdaten angezeigt werden? Aktuell sehe ich das ja nur über die Anzahl der Datensätze in der Tourtabelle.

Liebe Grüße
Heike
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Wie einfache Datenbank anlegen für Statistische Auswertung?

Beitrag von RobertG »

Hallo Heike,

die Anzahl der Besteigungen eines Berges bekommen wir durch eine Abfrage aus der 2. Tabelle ohne Probleme hin. Mache erst einmal die Anfänge so weit fertig und stelle dann das Grundgerüst hier online. Dann kann ich Dir den entsprechenden Code für die Abfrage posten - oder Du schaust selbst einmal im Handbuch unter "Abfragen" > "Korrelierende Unterabfragen" nach. Das ist für den Anfang aber schon etwas schwieriger zu verstehen.

Gruß

Robert
Heike92
Beiträge: 4
Registriert: Di, 14.02.2017 11:16

Re: Wie einfache Datenbank anlegen für Statistische Auswertung?

Beitrag von Heike92 »

Hallo Robert,
jetzt habe ich die beiden Tabellen angelegt, schon einige Datensätze eingegeben und Formulare zur Dateneingabe erstellt. Bis hierher denke ich passt alles bzw. ist für mich praktisch genug um Daten anzulegen und zu erweitern.
Abfrage habe ich auch schon "rumgespielt", aber für meine Ansprüche dann doch wohl noch viel zu komplex :-( Einfache Abfragen hauen problemlos hin, allerdings das was ich eigentlich möchte klappt noch hinten und vorne nicht.

Bin mir nicht sicher was du unter Grundgerüst verstehst, für mich wären das die beiden Tabellen:
Gipfeltabelle.ID (INTEGER)
Gipfeltabelle.Gipfel (VARCHAR)
Gipfeltabelle.Höhe (INTEGER)
Gipfeltabelle.Region (VARCHAR)
Tourentabelle.ID (INTEGER)
Tourentabelle.GipfelID (INTEGER)
Tourentabelle.Tourdatum (DATE)
Beziehung dabei: Gipfeltabelle.ID -> Tourentabelle.GipfelID

Jetzt würde ich gerne als erstes in einem Höhenbereich (Gipfeltabelle.Höhe) sortieren. Aktuell werden mir aber da Gipfel mit mehreren Tourentabelle.Tourdatum auch öfters angezeigt. Ich hätte gerne jeden Gipfel auch nur einmal angezeigt, dazu ein Feld mit der Anzahl in Tourentabelle.Tourdatum und super wäre noch, wenn eine Spalte (erst) einfach eine fortlaufende Nummer hat um sofort zu sehen, welcher erster, zweiter ... zehnter ... zwanzigster usw. Gipfel in der Sortierung ist. In etwa so:
Nummer Gipfel Höhe Anzahl
1 BergA 2999 1
2 BergB 2985 3
3 BergC 2879 2

27 BergZ 2003 1


Ich hoffe ich mache dir damit nicht zu viele Umstände, aber ich gebe ehrlich zu es ist einfach angenehmer die Antwort auf dem Tablett serviert zu bekommen, wie sich selbst Stunden einzulesen (um dann womöglich noch immer nicht die richtige Lösung gefunden zu haben) ;-)

PS: Wegen Sortierung nach Datumsbereich, so du noch gewillt bist zu helfen, würde ich dann später noch darauf zurück kommen, wenn das mal läuft.

edit: Habe jetzt noch etwas rumprobiert und bin bis auf das Durchzählen auf eine Lösung gekommen :) Sieht jetzt wie folgt aus:
SELECT "Gipfeltabelle"."Gipfel" AS "Gipfel", "Gipfeltabelle"."Region", AVG( "Gipfeltabelle"."Höhe" ) AS "Höhe", COUNT( "Tourentabelle"."GipfelID" ) AS "Anzahl" FROM "Tourentabelle", "Gipfeltabelle" WHERE "Tourentabelle"."GipfelID" = "Gipfeltabelle"."ID" GROUP BY "Gipfeltabelle"."Gipfel", "Gipfeltabelle"."Region" ORDER BY "Höhe" DESC
Ist mal die Ausgabe der kompletten Liste, aber das Eingrenzen auf eine bestimmte Höhe dürfte auch kein Problem mehr sein. Wie gesagt ein Durchnummerierung wäre dazu noch ganz nett.

Vielen Dank!
Heike
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Wie einfache Datenbank anlegen für Statistische Auswertung?

Beitrag von F3K Total »

Hallo Heike,
ich bin zwar nicht Robert, aber möchte dir den Tipp geben, deine DB einfach mal hier hochzuladen, dann ist Hilfe leichter.
Gruß R
Antworten