Datenbankmodell für Messwerte

Hallo !

Ich führe Messungen durch und bei jeder Einzelmessung fallen ca. 150 ASII-Files an, in denen in Matrixform jeweils Werte stehen. Da diese 150 Dateien ja zusammen gehören, möchte ich diese alle zusammen in eine Datenbanktabelle einlesen, um sie von da weiter zu analysieren.

Ich hab mir folgendes überlegt:
Ich erstelle eine Tabelle mit Datensätzen, in denen erstmal die Eigenschaften der Messung stehen: Datum der Messung, Messparameter, Bemerkungen usw.

Für jeden Datensatz in dieser „Übersichtstabelle“ würde ich jetzt je eine Tabelle mit den Messwerten erstellen. Da die Messwerte aus Zeilen und Spalten mit Werten bestehen, nenne ich die Spalten z.B. x1, x2, x3 … Eine Spalte „y-Wert“ ist der Primärschlüssel und zählt von 1 bis (in diesem Fall) 150*AnzahlDerZeilenProDatei hoch, weil alle Messwerte aus den 150 Datein in EINER Tabelle stehen sollen!

So, aber jetzt hakt’s: Wie kann man einigermaßen elegant die beiden Tabellen „verknüpfen“ ? Gibt es sowas wie einen Tabellenschlüssel, den man als Spalte in die Übersichtstabelle einfügen kann ?
Im Programm soll nämlich später Bezug auf die Übersichtstabelle genommen werden, z.B. durch Auswahl in einer ListBox und die dort angewählten Messungen sollen analysiert werden.

Das soll mein erstes Projekt in Sachen Datenbank sein, vielleicht sind die obigen Ansätze ja an sich völlig falsch.

Vielen Dank im Voraus für die Hilfe,

Bastian

Hallo Bastian,

der Ansatz ist schon fast richtig. In der Tabelle mit den Eigenschaften der Messungen gehört noch eine ID für die Messung. Dann würde ich Dir empfehlen ein Tabelle zu erstellen, die die Zuordnung der eingelesenen Dateien zu den Messungen sicherstellt (falls mal ein Einlesen der Daten wiederholt werden muß).Also

Tab\_Mess\_Datei
ID\_INFO
ID\_MESSUNG
ID\_DATEI
VERZEICHNIS
DATEINAME
EINGELESEN\_AM

Die ID_INFO kannst Du dann in der Tabelle der eigentlichen Messwerte aufnehmen (dort inklusive Zeilennummer).

Übrigens Messautomaten schreiben auch gerne gleiche Informationen von z.B. verschiedenen Orten (°Grad Brennkammer, °Grad Auspuff) in eine Datenzeile. Hier macht es Sinn die Messwerte nicht als x47 und x11 zu speichern, sondern einen Ort, Typ der Messung und Messwert aufzusplitten.

MfG Georg V.

Hallo Georg,

Super! Vielen Dank für die Antwort. Mir als Datenbankneuling sind aber einige Dinge noch nicht so klar:

Dann würde ich Dir empfehlen ein Tabelle zu
erstellen, die die Zuordnung der eingelesenen :smiley:ateien zu den
Messungen sicherstellt (falls mal ein Einlesen :der Daten
wiederholt werden muß).

Meinst Du, dass ich dann drei Tabellen hab, und die Zurodnungstabelle ist von der Relation her sowas wie eine 1:1-Tabelle, die aus zwei Spalten besteht? Macht es Sinn, diese Tabelle wegen dem Löschen der Originaldateien (siehe unten) und dem Schlüssel ID_INFO, der auch in die Messtabelle soll, einfach wegzulassen?

Tab_Mess_Datei
ID_INFO
ID_MESSUNG
ID_DATEI
VERZEICHNIS
DATEINAME
EINGELESEN_AM

Ich denke, ich schreib ein kleines Unterprogramm, in dem die Werte eingelesen werden und von da an unangetastet (also nur ReadOnly) in der DB bleiben werden. Dann wollte ich die Originaldateien löschen, deswegen beschränke ich mich vielleicht auf diese Spalten:

ID\_INFO
ID\_MESSART
MESSDATUM
MESSART
PARAMETER1
PARAMETER2
...
PARAMETERN

Die ID_INFO kannst Du dann in der Tabelle der :eigentlichen
Messwerte aufnehmen (dort inklusive Zeilennummer).

Heißt das, eine extra Spalte ID_INFO in der Messwerttabelle und in jeder ID_INFO Zeile steht dann für Messung eins z.B. ‚1‘ ? Zur Tabellenverknüpfung muss ja ID_INFO ein Schlüssel sein, oder? Darf der auch uneindeutig sein, weil in diesem Fall würde ja in jeder Zeile eine eins stehen?

Übrigens Messautomaten schreiben auch gerne :gleiche
Informationen von z.B. verschiedenen Orten (°Grad :Brennkammer,
°Grad Auspuff) in eine Datenzeile. Hier macht es :Sinn die
Messwerte nicht als x47 und x11 zu speichern, :sondern einen
Ort, Typ der Messung und Messwert aufzusplitten.

OK, um genau zu sein, bei den Messungen handelt es sich um Wärmebildaufnahmen (50 Hz, 3s Aufnahmezeit => 150 Dateien) und jeder Pixel einer Datei wird dann zu einem Temperaturwert in der ASCII-File-Matrix. Und da es sich um eine Matrix handelt, dachte ich, sind Spaltennamen wie x1 … xN richtig.

Hab aber noch eine Frage:
Es wird nicht bei Wärmebildaufnahmen bleiben, sondern das gleiche Phänomen soll mit anderen Sensoren geprüft (daher oben ID_MESSART) werden, die dann natürlich andere Matrixgrößen auswerfen als die Wärmebildkamera, oder auch nur aus einer Zeile bestehen. Was allerdings alle Messungen gemeinsam haben werden ist dir Zuordnung jeder Messzeile zu einer Position des Messobjekts.
Jetzt die Frage: Wie entwirft man für sowas eine Messwerttabelle, da ja die Spaltenzahl nicht konstant ist? Soll ich im SQL Managementstudio nur die Übersichtstabelle erstellen und dann zur Laufzeit die Messwerttabelle?

Gruß

Bastian

Hallo Bastioan,

ID_INFO war als Zusammenfassung der ID_MESSUNG und ID_DATEI gedacht und ist damit nicht immer 1. Auch Deine Erläuterung deuten direkt an, dass man die Messwerte besser transponiert.

MfG Georg V.