Software Planung/Gedanken?

1 Antwort

Also an sich seh ich da nichts, was so nicht machbar wäre. Es ist höchstens noch ein bisschen zu grob formuliert, ich persönlich hab de Erfahrung gemacht, dass man vor weniger Wände läuft, wenn im Voraus möglichst detailliert konzipiert und auch mal die einzelnen Prozesse aufmalt und durchdenkt.

Besonders die Datenstruktur muss möglichst simpel modelliert werden, damit die Datenbankabfragen auch bei großen Datenmengen nicht alles crashen lassen :D Du hast das jetzt in Klassen beschrieben, aber es wäre sinnvoll, das zuerst als Datenbankmodell aufzumalen und mal eine Beispielabfrage zu formulieren, die für den Abgleich nötig wäre.

Was mir an deinem Datenmodell so aufgefallen ist:

  • Da du von Nutzern redest, nehme ich an, man soll sich auch registrieren und einloggen können? Dann fehlt auf jeden Fall noch eine Nutzerklasse. Ich nehm an für Security stellt Flask irgendwas bereit? Da nämlich selber was zu schreiben würde den Aufwand nochmal extrem in die Höhe treiben.
  • um das objektrelationale Mapping möglichst unkompliziert zu machen, sollte die Klassenstruktur mit der Tabellenstruktur in der Datenbank übereinstimmen. Also Python Klasse = Relation in der DB.
  • Wenn du den vorherigen Punkt umsetzt, wäre "Lager" keine passende Relationenbezeichnung, denn es sind ja keine Lager in der Tabelle gespeichert, sondern die gelagerten Lebensmittel
  • das mit der Maßeinheit und Menge macht mich am nervösesten :D Was passiert bei der Umrechnung von solchen Einheiten, die pauschal nicht so einfach umzurechnen sind wie EL, TL, Stück, Prise oder Handvoll. Also wenn du unterschiedliche Maßeinheiten pro Lebensmittel erlauben willst, musst du wenigstens eine Liste anlegen, welche jeweils miteinander kompatibel sind (zum Bsp g und kg) und wie hoch der Umrechnungsfaktor ist (würd mich nicht wundern wenn's für sowas sogar ne Lib gibt :D) und den Nutzer dann höchstens was von denen angeben lassen. Zusätzlich solltest du pro Maßeinheitsgruppe einen default festlegen, der dann ausschließlich in der Datenbank verwendet wird, im Beispiel von mg, g und kg also zum Beispiel alles in g umrechnen und erst dann abspeichern. So vereinfachst du dir die Abfrage der relevanten Einträge. Die Maßeinheit sollte am Lebensmittel dann nicht mehr änderbar sein.
  • Mal davon ab, dass du dir ganz schön Redundanz reinholst, wenn die Menge am Lebensmittel stehen soll. Dann hast du ja für ein und das selbe Lebensmittel mehrere Einträge in der Tabelle und das macht dazu auch den Abgleich sehr viel komplizierter. Das muss auf jeden Fall noch geändert werden.

Ansonsten könntest du auch mal ein paar Mockups basteln (gibt's einfache gratis Browserapps für) und überleg, die das alles für den Nutzer aussehen soll. Wie sollen zB die angelegten Lebensmittel für die Rezepterstellung zurVerfügung gestellt werden (zB Autovervollständigung oder als Kästchen, die man per Drag'n'drop reinziehen kann)?

Und schau, dass die Beschreibung der Rezeptes auf die Länge validiert wird, damit sie auch ins die Datenbank passt. Für größere Texte kann man da meine ich blob gut verwenden. Generell schaden ein paar Validerungen der Nutzereingaben nicht (zB nur Zahlen für die Mengen usw).

Hoffe das war nicht zu viel input :D Das wichtigste wäre eben das DB Modell (vor allem das mit der Menge!! Zur Not kannst du ja erstmal weglassen und nur die Lebensmittel an sich abgleichen)