Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Datenbank Struktur

Begonnen von ChrisBaum, Juli 18, 2023, 10:01:39

⏪ vorheriges - nächstes ⏩

ChrisBaum

Hallo,

ich möchte die Betriebszeiten von unseren Maschinen überwachen bzw. führen.
Die Maschinen bestehen zum einen aus einer Hauptkomponente (Zelle) für die die Betriebszeit gepflegt werden soll.
In dieser Hauptkomponente sind wiederum mehrere Einzelkomponenten (Wie Motor, Kupplung, Getriebe) verbaut.
Aufgrund von Störungen oder Wartungen kann es vorkommen, das Einzelkomponenten aus der Hauptkomponente (Zelle) ausgebaut bzw. untereinander getauscht werden. Dabei soll die Einzelkomponente Ihre bisherige Betriebszeit mitnehmen und dann die weiteren Betriebszeiten von der neuen Hauptkomponente (in der sie dann verbaut ist) erhalten.
Der körperliche Umbau einer Einzelkomponente in eine andere Maschine muss dann auch in der Datenbank erfolgen.
Alle Komponenten sind serialisiert und können darüber eindeutig identifiziert werden.
Außerdem möchte ich nicht nur die Betriebszeiten der Einzelkomponenten dokumentieren sondern auch einen Überblick welche Einzelkomponente bereits in welcher Hauptkomponente verbaut war.

Ich habe angefangen und eine Tabelle mit allen Hauptkomponenten (Serialnummer der Maschine und benötigte weitere Daten entspricht einem Datensatz), eine Tabelle mit allen Motoren, eine Tabelle für alle Kupplungen und so weiter erstellt und wollte dann dort einzelne Betriebszeiten speichern. Komme mit diesem Ansatz aber nicht wirklich weiter.

Eine anderer Idee die ich habe ist für jede einzelne Komponente ein Tabelle anzulegen und alle Daten jeweils einer Komponente in einer separaten Tabelle zu speichern. Das würde aber bedeuten, das es dann ca 30 Tabellen gibt und wenn wir weitere Maschinen produzieren, würden pro neuer Maschine jeweils 4 Tabellen dazu kommen.

Ich bin mir nicht sicher wie ich hier vorgehen kann.
Schon mal vielen Dank im voraus für eure Unterstützung.

MzKlMu

Hallo,
ZitatTabelle mit allen Motoren, eine Tabelle für alle Kupplungen und so weiter erstellt
Falscher Ansatz.
Alle Einzelkomponenten kommen in eine Tabelle. Dann brauchst Du eine weitere Tabelle zur Zuordnung der Komponenten zur Maschine. Die Tabelle ergibt eine n:m Beziehung mit einem Fremdschlüssel zur Maschine und einem FS zur Komponente.
Zur Erfassung der Betriebszeiten brauchst Du eine Tabelle in der die echten Einbauten erfasst werden. Mit FS zur Maschine und FS zur Komponente und ein Feld für Einbau und Ausbau jeweils als Datum/Zeit. Die Differenz zwischen Ausbau und Einbau ist dann die Betriebszeit.

Zitat... würden pro neuer Maschine jeweils 4 Tabellen dazu kommen.
Eine Struktur bei der regelmäßig neue Felder angelegt werden müssen, kannst Du gleich wieder zu den Akten legen. So etwas ist für eine Datenbank untauglich.

Das ist schon ein ambitioniertes Vorhaben, welche Kenntnisse hast Du in Access ?
Es wird auch ohne VBA nicht funktionieren.

Auch wenn mehrere Anwender auf die DB zugreifen ist ein spezielle Aufbau (Backend/Frontend) erforderlich.
Gruß Klaus

ChrisBaum

Hallo Klaus,

erst mal Danke für deine schnelle Antwort.
Also soll ich alle Motoren, Kupplungen und Getriebe in eine einzige Tabelle packen oder für eine Tabelle für Motoren, eine für Kupplungen, eine für Getriebe anlegen?
Ich habe eine Tabelle Maschinen in der ich Alle Maschinen aufgelistet habe. Dort kann ich den Maschinen dann über Kombinationsfelder ihre Einzelkomponenten zu weißen.

Ich habe schon eine grobe Lösung aber es könnte sicher besser gehen. Mit VBA habe ich leider keine Erfahrungen.

MzKlMu

Hallo,
ZitatAlso soll ich alle Motoren, Kupplungen und Getriebe in eine einzige Tabelle packen
ja, so wie ich es bereits beschrieben habe.

ZitatIch habe eine Tabelle Maschinen in der ich Alle Maschinen aufgelistet habe. Dort kann ich den Maschinen dann über Kombinationsfelder ihre Einzelkomponenten zu weißen.
Das ist falsch.
Die Zuordung der Einzelkomponenten erfolgt über eine extra Tabelle (n:m), so wie ich es beschrieben habe.
ZitatMit VBA habe ich leider keine Erfahrungen.
Ohne VBA wirst Du nicht weit kommen.

Und die Grundlagen zu Access brauchst Du auch.
Hierzu 2 Links:

https://www.hdm-stuttgart.de/~riekert/lehre/db-kelz/

https://www.access-tutorial.de/

Gruß Klaus

ChrisBaum


MzKlMu

#5
Hallo,
ich kann beide Zip Files nicht öffnen. Bitte verwende zum Zippen direkt die eingebaute Zip Funktion von Windows. Datei im Explorer markieren > Rechtsklick > Senden an > Zip komprimierter Ordner

In dem dann angelegten Zipfile sollte von accdb nichts mehr zu sehen sein.
Und nenne das Beispiel nicht einfach Database sondern vergib einen ordentlichen Namen.

Warum hast Du da 2 Beispiele angelegt ?
Wie unterscheiden sich diese ?
Gruß Klaus

ChrisBaum

#6
Die Uploadfunktion ist ziemlich 2000....
Ich kann nur 2 MB große Dateien hochladen. Welche Datei ist schon noch 2 MB groß?


Habe ich so gemacht. Aber dann ist die Datei leider zu groß...Mir erschließt sich nicht was der Name der Datenbank für Auswirkungen auf die Funktion der Datenbank hat?!

Ich probiere später meine Datenbank erneut hoch zu laden.
Bin die nächsten zwei Wochen nicht da...
Würde mich danach wieder melden.

Danke.

MzKlMu

Hallo,
Du musst die DB erst mit dem Access Tool "komprimieren/reparieren" bearbeiten und dann erst zippen.

Der Name der DB hat rein praktische Gründe für mich. Ich habe ja einige Beispiele und die muss ich ja irgendwie unterscheiden können.

Ps:
Deine Antwort ist nur teilweise verständlich.
Und bitte keine vollständigen Beiträge zitieren. Verlängert nur unnötigerweise die Themen.
Gruß Klaus

PhilS

Zitat von: ChrisBaum am Juli 18, 2023, 16:20:03Mir erschließt sich nicht was der Name der Datenbank für Auswirkungen auf die Funktion der Datenbank hat?!
Der Dateiname wird standardmäßig auch als Name des VBA-Projektes verwenden. Dort hast du dann einen Namenskonflikt zwischen deiner Database und dem Database-Objekt aus der DAO-Bibliothek. - Ändern des Dateinamens um Nachhinein hat darauf allerdings keine Auswirkung mehr.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

ChrisBaum

Guten Morgen,

Danke für die weiteren Anmerkungen.
Hier noch mal eine Version meiner Datenbank mit der ich die Maschinen verwalten möchte.
Zum einen möchte ich eine Historie der einzelnen Bauteile (Motor, Kupplung, Getriebe) über Einbauort (in welcher Maschine) und die Betriebszeit der einzelnen Komponenten haben.
Ich habe ein "Start-Formular" erstellt, von welchem aus Absprünge zu Berichten und Formularen gemacht werden.

MzKlMu

#10
Hallo,
es ist viel zu früh jetzt schon Formulare zu machen.
Das Datenmodell passt so nicht, das ist unbrauchbar. Da gibt es auch jede Menge redundante Felder. Es entspricht auch nicht meinen Vorschlägen.
Die Komponenten müssen in eine Tabelle, mit einem Feld für die Art (extra Tabelle).

Weitere Hinweise:
- Keine Nachschlagefelder in Tabellen verwenden
- Keine Anlagenfelder verwenden, die vergrößern nur die DB. Ein einfaches Textfeld mit Dateiname zur Anlage reicht vollkommen.
- Keine Leer und Sonderzeichen in Feld und Objektnamen.
Gruß Klaus