sqlite3 n:m Beziehungen

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Lina
User
Beiträge: 4
Registriert: Samstag 23. November 2019, 11:47

Donnerstag 14. Mai 2020, 10:18

Hallo,

Ich bin leider totaler Datenbankneuling, deshalb stehe ich bei folgender Aufgabenstellung etwas an:

Ich habe eine Datenbank mit der Tabelle Lebensmittel erstellt (so weit nicht einmal für mich eine Hexerei), darin befinden sich bereits einige Lebensmittel mit den Nährwerten auf 100g (sagen wir mal u.a. Haferflocken und Milch)
Nun möchte ich irgendwie Mahlzeiten in der Datenbank abbilden (sagen wir mal Porridge aus Haferflocken und Milch).
Außerdem möchte ich Mengenangaben machen (also aus wie viel Haferflocken und Milch das Porridge besteht - das passt mir logisch aber nicht so zu den Zuweisungen, keine Ahnung ob ich damit richtig liege)
Meine Recherchen haben mich nur so weit gebracht, dass es sich dabei um einen n:m Beziehung handelt (jedes Lebensmittel kann in mehreren Mahlzeiten verwendet werden und Mahlzeiten bestehen aus mehreren Lebensmitteln).

Angefangen habe ich den Spaß mal in sqlite3, ob das sinnvoll ist kann ich leider nicht einschätzen.

Nun wollte ich fragen, ob mir jemand bei der weiteren Umsetzung helfen kann. Mir würden bereits Headlines/Suchbegriffe/Links o.Ä. weiterhelfen, damit ich weiß an welchem Ende ich anknüpfen muss.
Geholfen wäre mir außerdem mit einer Einschätzung ob ich das zeitnahe hinbekommen kann, oder ob das ein aufwändigeres Thema wird, wo ich mir länger Zeit nehmen sollte.

Vielen Dank für eure Zeit & Mühe
Liebe Grüße

Lina
__deets__
User
Beiträge: 8106
Registriert: Mittwoch 14. Oktober 2015, 14:29

Donnerstag 14. Mai 2020, 10:30

n:m ist schon ganz gut. Du brauchst hier 3 Tabellen:

- Rezept, mit einem eindeutigen Schluessel (meistens nimmt man dafuer IDs mit AUTOINCREMENT)
- Zutaten, es gilt auch ^^^
- RezeptZutaten mit drei Spalten: einem Fremdschluessel mit Verweis auf das Rezept, einem Fremdschluessel mit Verweis auf die Zutat, und einer Spalte Menge. Das kann man natuerlich noch beliebig komplizierter machen, zB die Menge als double-Wert, und dann noch eine Einheit (0.5 Teeloeffel, etc).
Benutzeravatar
__blackjack__
User
Beiträge: 6012
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Donnerstag 14. Mai 2020, 13:47

Wobei man sich das AUTOINCREMENT bei SQLite eventuell überlegen sollte, da es in der Regel bei einer INTEGER PRIMARY KEY Spalte nicht notwendig ist: https://sqlite.org/autoinc.html

An der Stelle empfehle ich ja gerne SQLAlchemy um auf Datenbanken zuzugreifen, weil das netterweise solche Sachen für einen übernimmt und für die jeweiligen DBs das ”richtige” macht.
long long ago; /* in a galaxy far far away */
__deets__
User
Beiträge: 8106
Registriert: Mittwoch 14. Oktober 2015, 14:29

Donnerstag 14. Mai 2020, 13:49

Ich wuerde Anfaengern erstmal das selber-spielen mit SQL anraten, damit man da ohne die Zwischenebenen von SA ein bisschen mehr Sicherheit bekommt. Danach ist das natuerlich super.
Lina
User
Beiträge: 4
Registriert: Samstag 23. November 2019, 11:47

Donnerstag 14. Mai 2020, 19:24

Ui vielen vielen Dank fürs rasche und kompetente Antworten, damit kann ich was anfangen :-)

Ja, ich werde vorerst mal beim manuellen rumspielen bleiben, ohne SQLAlchemy, eben damit ich es lerne.. für später aber ein super wertvoller Tipp.
Antworten