diff --git a/erd.dbml b/erd.dbml index 1f3e3f8..0f71f4e 100644 --- a/erd.dbml +++ b/erd.dbml @@ -1,61 +1,79 @@ -// Use DBML to define your database structure -// Docs: https://dbml.dbdiagram.io/docs +// https://dbdiagram.io/d/ +// Kraut&RĂ¼bel ERD -Table Kunde { - KundenNr integer [primary key] - Vorname string - Nachname string - Strasse string - Geburstdatum timestamp - HausNr string - PLZ integer - Email string - Telefon integer - Ort string +Table Customer { + id string [primary key] + first_name string + last_name string + street string + birth_date timestamp + house_number string + postal_code integer + email string + phone integer + city string } -Table Bestellung { - BestellNr integer [primary key] - KundenNr integer - Rechnungsbetrag integer - Bestelldatum timestamp +Table Order { + id string [primary key] + customer Customer + invoice_amount integer + order_date timestamp } -Table Zutat { - ZutatenNr integer [primary key] - Bezeichnung string - Bestand integer - Nettopreis integer - Einheit string - Kohlenhydrate integer - Kalorien integer - Protein integer +Table Ingredient { + id string [primary key] + designation string + stock integer + net_price integer + unit string + carbonhydrates integer + calories integer + protein integer } -Table Lieferant { - LieferantenNr integer [primary key] - Ort string - Strasse string - Email string - Telefon string - Liferantenname string - HausNr string - PLZ integer +Table Supplier { + id string [primary key] + city string + street string + email string + phone string + supplier_name string + house_number string + postal_code integer } -Table Lieferant_contains_Zutaten { - LieferantenNr integer [primary key] - ZutatenNr integer [primary key] +Table Recipe { + id string [primary key] + preperation_time integer + name string + description string + instructions string } -Table Bestellung_contains_Zutaten { - BestellNr integer [primary key] - ZutatenNr integer [primary key] - Menge integer +Table RecipeContainsIngredients { + recipe string [primary key] + ingredient string [primary key] + amount integer } -Ref: Bestellung.KundenNr > Kunde.KundenNr -Ref: Lieferant_contains_Zutaten.LieferantenNr > Lieferant.LieferantenNr -Ref: Lieferant_contains_Zutaten.ZutatenNr > Zutat.ZutatenNr -Ref: Bestellung_contains_Zutaten.BestellNr > Bestellung.BestellNr -Ref: Bestellung_contains_Zutaten.ZutatenNr > Zutat.ZutatenNr +Table SupplierContainsIngredients { + supplier string [primary key] + ingredient string [primary key] + delivery_cost integer + delivery_time integer +} + +Table OrderContainsIngredients { + order string [primary key] + ingredient string [primary key] + quantity integer +} + +Ref: Order.customer > Customer.id +Ref: SupplierContainsIngredients.supplier > Supplier.id +Ref: SupplierContainsIngredients.ingredient > Ingredient.id +Ref: OrderContainsIngredients.order > Order.id +Ref: OrderContainsIngredients.ingredient > Ingredient.id +Ref: RecipeContainsIngredients.recipe > Recipe.id +Ref: RecipeContainsIngredients.ingredient > Ingredient.id diff --git a/lib/datatypes.py b/lib/datatypes.py index 2c2e931..06d62d7 100644 --- a/lib/datatypes.py +++ b/lib/datatypes.py @@ -3,7 +3,7 @@ from dataclasses import dataclass, asdict @dataclass class Customer: - customer_id: int + id: str first_name: str last_name: str street: str @@ -20,8 +20,8 @@ class Customer: @dataclass class Order: - order_id: int - customer: Customer + id: str + customer: Customer.id invoice_amount: int order_date: str # Assuming timestamp as a string for simplicity @@ -31,7 +31,7 @@ class Order: @dataclass class Ingredient: - ingredient_id: int + id: str designation: str stock: int net_price: int @@ -46,7 +46,7 @@ class Ingredient: @dataclass class Supplier: - supplier_id: int + id: str city: str street: str email: str @@ -60,7 +60,7 @@ class Supplier: @dataclass class Recipe: - recipe_id: int + id: str preperation_time: int name: str description: str @@ -70,15 +70,15 @@ class Recipe: return {k: str(v) for k, v in asdict(self).items()} @dataclass -class SupplierContainsIngredients: - recipe: Recipe - ingredient: Ingredient +class RecipeContainsIngredients: + recipe: Recipe.id + ingredient: Ingredient.id amount: int @dataclass class SupplierContainsIngredients: - supplier: Supplier - ingredient: Ingredient + supplier: Supplier.id + ingredient: Ingredient.id delivery_cost: int delivery_time: int @@ -88,8 +88,8 @@ class SupplierContainsIngredients: @dataclass class OrderContainsIngredients: - order: Order - ingredient: Ingredient + order: Order.id + ingredient: Ingredient.id quantity: int def dict(self):