Fehlersuche Flask, mit Vue.js

Django, Flask, Bottle, WSGI, CGI…
Sirius3
User
Beiträge: 17911
Registriert: Sonntag 21. Oktober 2012, 17:20

Strings eignen sich nicht als IDs, und Du brauchst doch eh eine Tabelle mit allen Gasen. Ist der Name wirklich die einzige Eigenschaft?
Eine ID muß nur eindeutig sein, wenn sie der Primärschlüssel ist; für Tabellen die nur zwei andere Tabellen verknüpfen ist es nicht unüblich, keinen Primärschlüssel zu haben.
Benutzeravatar
__blackjack__
User
Beiträge: 13342
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Naja, da würde man die beiden IDs als Primärschlüssel setzen, was dann auch gleich verhindert das man die gleichen Datensätze aus den anderen Tabellen mehr als einmal verknüpft.
“It is easier to optimize correct code than to correct optimized code.” — Bill Harlan
Benutzeravatar
Dennis89
User
Beiträge: 1245
Registriert: Freitag 11. Dezember 2020, 15:13

Danke für eure Antworten.

Zur Zeit sind alle Gase die zur Auswahl möglich sind in einer Datei, genau so wie die Kühler, die zur Auswahl stehen. Daran habe ich noch gar nicht gedacht, ich könnte die Daten natürlich in die Datenbank schreiben.

Der Benutzer wählt nur den Gasname aus und gibt an wie viel Prozent er von diesem Gas haben möchte, bis er bei 100% ist. Die Eigenschaften, die für die Berechnung benötigt werden, ergeben sich erst dann wenn alle Bestandteile und Mengenanteile bekannt sind und werden dann im Berechnungsdurchgang abgefragt oder berechnet. Für mich würde das bedeuten, das pro Auftrag nur der Gasname und der dazugehörige Prozentanteil gespeichert werden muss.

Das ganze Zusammenspiel, wie das nachher funktionieren soll, kann ich mir gerade noch nicht wirklich vorstellen und würde das daher herunter brechen.
Wenn ich das richtig verstanden habe, dann erstelle ich jetzt eine Tabelle mit den Kühlerdaten wobei jeder Kühler eine eigene ID (eine Zahl) bekommt.
Macht es dann auch Sinn eine Tabelle zu erstellen mit den Gasnamen? Also ID und Gasname? Hätte ich jetzt so gemacht.

Danach dann eine Tabelle mit den Eingabewerten für den Kühler, darin findet sich die ID des ausgewählten Kühlers wieder und die zusätzlichen Eingaben?
Als zusätzliche Herausforderung habe ich hier noch folgendes: Mein Programm lässt zu, das man sich einen individuellen Kühler erstellen kann. Die Eigenschaften, die sich hinter dem Kühlername verbiergen, wie zum Beispiel Rohrdurchmesser, Rohranzahl,... kann man selbst festlegen. Wie ich das mit der Datenbank anstellen soll, kann ich mir auch noch gar nicht vorstellen.

Das wären jetzt meine ersten Ziele. Es sei denn, es macht Sinn anders vorzugehen?


Vielen Dank und Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Sirius3
User
Beiträge: 17911
Registriert: Sonntag 21. Oktober 2012, 17:20

Wenn man eine Datenbank hat, macht es wenig Sinn, Gase und andere Daten in anderen Dateien zu speichern.
Wenn man ein Datenbankdesign macht, ist es sinnvoll, vorzusorgen, dass die Tabellen einfach zu erweitern sind.
Etwas "individuelles" gibt es nicht, wenn es Standardkühler und Individualkühler gibt, dann landen die in der selben Tabelle, eventuell noch markiert, wessen Individualkühler das ist, damit man diese besser für die Eingabe filtern kann.
Benutzeravatar
Dennis89
User
Beiträge: 1245
Registriert: Freitag 11. Dezember 2020, 15:13

Guten Abend,

danke für die Antwort.
Das mit dem Individualkühler lasse ich vor erst weg und schaue mal, dass ich erst den einfachen Fall hinbekomme.

Ich würde jetzt so folgende Tabellen erstellen:

Code: Alles auswählen

CREATE TABLE coolers (
	id integer primary key auto_increment,
	name varchar(20),
	inside_diameter_outer_pipe integer,
        outside_diameter_cooling_pipe integer,
        inside_diameter_cooling_pipe integer
);

CREATE TABLE gases (
	id integer primary key auto_increment,
	name varchar(20)
);


CREATE TABLE cooler (
	id integer primary key auto_increment,
	cooler_id integer,
	order_number integer,
	cooling_countercurrent bool,
        gas_humidity_after_cooler float,
        gas_humidity_before_cooler float,
        gas_pressure float,
        gas_temperature_in float,
        gas_temperature_out float,
        inside_diameter_cooling_pipe float,
        inside_diameter_outer_pipe float,
        number_of_pipes float,
        outside_diameter_cooling_pipe float,
        temperature_cooling_fluid_in float,
        temperature_cooling_fluid_out float,
        number_of_cooler integer
);

CREATE TABLE general (
	id integer primary key auto_increment,
	order_number integer,
	glykohl_percent float,
        normvolume_flow float,
        suction_pressure float,
        temperature_suction_filter float
);
        
CREATE TABLE gas (
	id integer primary key auto_increment,
	order_number integer,
	gas_id integer,
        percentage float,
);

Würde das, auch mit der `order_number` so passen, damit ich nachher danach suchen kann?
Sorry ich muss jetzt vermutlich viele Zwischenschritte nachfragen, sonst verrenne ich mich wieder.

Danke und Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Sirius3
User
Beiträge: 17911
Registriert: Sonntag 21. Oktober 2012, 17:20

Die Verwendung von Plural und Singular ist nur verwirrend. Ein Gas ist ein Gas. Ein Cooler ist ein Cooler; das andere ist ja die Verbindung zwischen Gas und Bestellung. order_number wäre besser order_id, zu der dann noch die Order-Tabelle fehlt.
Warum ist inside_diameter_outer_pipe mal ein integer und mal float? Und warum Doppelst Du diese Information?
Ich würde auch sagen, dass viele der Parameter generisch für einen Cooler sind und nicht für jede Bestellung individuell ist.
Was soll der General?
Antworten