Backomania-Webapp-DB-Rezepte

From Elch-Wiki
Jump to navigationJump to search

Die folgenden Tabellen werden für das Speichern und Verwalten der Rezepte mit Teilrezepten, Arbeitsschritten, Zutaten und Einheiten verwendet. Das DB-Schema stammt grösstenteils aus dem Brainstorming nach der Backomania 2006.

Hinweis: Bei den Tabellen wurden die Spalten "bild_id" weggelassen. Durch das neue Bildkonzept werden diese Spalten überflüssig!

Tabelle "rezepte"

Die Tabelle rezepte bildet den Anker für alle Rezepte. Ein Rezept besteht aus einem "Kopf" mit Angaben zum User der das Rezept eingegeben hat, Menge für das Rezept ausgelegt ist, ...

  • id
  • user (der das Rezept eingegeben hat, sog. Owner)
  • name (des Rezepts)
  • ergibt (Menge für die das Rezept ausgelegt ist)
  • bemerkung (Allgemeine Bemerkung zum Rezept)
  • t_create, t_update (Timestamps der Erstellung und der letzten Änderung)

Tabelle "teilrezepte"

  • id
  • rezept_id (Verlinkung zurück zum Rezept)
  • name (des Teils)
  • los (Komma-getrennte Liste von steps)
  • bemerkung (Anleitungen, etc.)
  • Zeit (Wie lange dauert dieser Teil?)


Tabele "rezeptaufbau"

Ein Rezept besteht aus 1..n Teilrezepten. Ein Teilrezept kann in 1..m Rezepten verwendet werden (ja, die Wiederverwendbarkeit von Teilrezepten wird explizit unterstützt um z.B. Guetzli mit gleichem Basis-Teig aber unterschiedlicher End-Verarbeitung zu erlauben). Die Tabelle rezeptaufbau macht ergo die n:m Verbindung zwischen rezept und teilrezept. Ausserdem erlaubt rezeptaufbau eine "Parallelisierung" von Teilrezepten (etwas backt im Ofen während man einen anderen Teil abarbeitet). Die Parallelisierung wird von der Webapp im Moment noch nicht realisiert.

  • id
  • rezept_id (id des Rezepts)
  • teil_id (id des Teilrezepts)
  • laufnummer (Position des Teilrezepts innerhalb des Rezepts)
  • spalte (bei parallelen Rezepten die "Spalte" zu der das Teilrezept gehört)

Tabelle "steps"

Hier werden die eigentlichen Mengen und schrittweisen Anleitungen gespeichert. Ein Step gehört eindeutig einem Teilrezept.

  • id
  • zutat_id (id der Zutat)
  • einheit_id (id der Einheit)
  • menge_von, menge_bis
  • anleitung (Text der beschreibt, was in diesem Arbeitsschritt gemacht werden muss)

Tabelle "zutaten"

  • id
  • name (der Zutat)

Tabelle "einheiten"

Damit die Einheiten verrechenbar werden (z.B. 5x3 dl + 1.5 l), muss das Verhältnis von Basis zu Unter- und Obereinheiten bekannt sein. Die Tabelle verweist also Stellenweise auf sich selber.

  • id
  • einheit (Abkürzung der Einheit, z.b. dl)
  • name (Ausgeschriebene Einheit, z.b. Deziliter)
  • basiseinheit_id (Ist dies eine Unter-/Obereinheit?)
  • faktor (Wenn eine Basiseinheit existiert, was ist der Umrechnungsfaktor?)

Tabelle "kategorie"

Die Tabelle kategorie enthält alle Rezept-Kategorien (z.B. Guetzli, Hauptspeise, Dessert, ...). Jede Kategorie muss einen Parent haben. Einzige Ausnahme ist die oberste Kategorie "alle". Aus einem unerklärlichen Grund hat die oberste Kategorie "alle" die id 10.

  • id
  • name (der Kategorie)
  • parent (id der übergeordneten Kategorie)

Tabelle "rezeptkategorie"

Ein Rezept kann 0..n Kategorien angehören. Jede Kategorie kann in 0..m Rezepten vorkommen. Ergo braucht es eine Link-Tabelle.

  • rezept (id des Rezepts)
  • kategorie (id der Kategorie)