Datenbank mit 2 Tabellen?

... komplette Frage anzeigen

2 Antworten

Dein Problem ist, dass Du für die hier genannte Aufgabe gar keine 2 Tabellen brauchst. Du kannst, so wie Du die Aufgabe beschreibst, das gewünschte Ergebnis in einer Tabelle hinterlegen und dann ohne irgendwelche Maßnahmen mit einem einfachen

SELECT * FROM rezept 

ausgeben. Denn ich kann in Deiner Aufgabe nicht erkennen, wo da eine 1:n Beziehung sein sollte, die man sinnvoll in eine weitere Tabelle auslagern sollte. Ob Du statt die Zutaten direkt in die Tabelle zu schreiben deren Primärschlüssel dort hinterlegst und dann über diesen Schlüssel die Zutat aus der anderen Tabelle holst, bringt ja nichts. Es sei denn, Du hast weitere der Zutat zugeordnete Daten, die Du Dir damit beschaffen kannst, ohne diese im einzelnen vorzuhalten. Davon steht aber nichts in Deiner Aufgabe.

Ich nehme mal an, Du machst das als Übungsbeispiel für eine Datenbankanwendung. Ich schlage vor, dazu eine kleine Erweiterung bei Deinen Zutaten vorzunehmen. Außer der Zutaten-Id wäre das dann die Bezeichnung (Tequila, Vodka, Whisky usw.), die Einheit, mit der die Menge bestimmt wird (kg, Stück, EL, TL, ml usw.) und dann der Preis je Einheit. Damit könntest Du jetzt eine Kostenaufstellung bzw. eine Preisliste erstellen, ohne jedesmal einzeln einen den Preis zu bestimmen. Wenn sich dieser mal ändert, brauchst nur an einer Stelle ändern und nicht überall, wo diese Zutat Verwendung findet. 

Ein Tipp zum Erlernen der Datenbank: Stell Dir vor, Du wärst die Datenbank und müsstest diese Aufgabe zu Fuß lösen. Wie würdest Du das machen? Die Datenbank macht es nämlich genauso und Du stellst dabei fest, dass es im Grunde ganz, ganz simpel ist, die wichtigsten Grundlagen zu verstehen und zu einer Aufgabe die passende Struktur zu entwerfen.

Antwort bewerten Vielen Dank für Deine Bewertung

Ich schätze mal du suchst nach einer SQL Abfrage? Das Problem ist dass ich nicht weiß wie du deine Tabelle strukturiert hast und daher nichts Konkretes aufstellen kann. Stehen jeweils zu den Cocktails alle Zutaten in der Cocktails Tabelle? Die Struktur wäre nicht normalisiert. Eine bessere wäre eine weiter Tabelle zu haben wo Zutaten mit Cocktails verlinkt werden. 

Also eine Tabelle mit Cocktails die jeweils eine ID haben, eine Tabelle mit Zutaten die auch jeweils eine ID haben und dann noch eine Verlinkung Tabelle wo eine Zutat-ID mit einer Cocktail-ID zusammen sitzt.


Tabelle 1:

Cocktails

ID|Name

0|Sex on the Beach

1|Mai Thai etc.


Tabelle 2:

Zutaten

ID|Name

0| Cola

1| Tequila etc.


Tabelle 3:

CocktailZutatVerlinkung

ZutatID|CocktailID

0|0

1|2 etc.


Dann kannst du Anhand der Verlinkung erkennen welche Zutaten in welchem Cocktail vorhanden sind. Hast du jetzt mehrere Zutaten zu denen du Cocktails suchst so sähe die Abfrage so aus:


SELECT czv.cocktailid, c.name
FROM CocktailZutatVerlinkung czv, Cocktails c,
WHERE czv.cocktailid = c.cocktailid AND czv.zutatid = zutat1 AND czv.zutatid = zutat2; (etc.)

Jetzt wäre es am einfachsten natürlich direkt die ID der Zutat zu kennen statt den Namen, ist natürlich auch nur mit dem Namen möglich wobei die Abfrage dann eine Ecke schwieriger wird. Stell ruhig fragen wenn du welche hast :)

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Maximilian1989
10.11.2016, 22:19

Hi Berny96, das ist schonmal eine große Hilfe. Nur noch eine Frage. Du schreibst: 

ZutatID|CocktailID

0|0

1|2 etc.

Wie mache ich das wenn z.b wenn CocktailID mehrere Zutaten hat?

0