Rolf B: SQL und relationale Algebra

Beitrag lesen

Hallo Laura,

von Codd's Theorie verstehe ich wenig - aber die Wikipedia sagt:

Um andere Abfragesprachen, speziell SQL, vollständig in die relationale Algebra abbilden zu können, ist die relationale Algebra nicht mächtig genug.

und listet dann GROUP BY und Aggregate als erforderliche Erweiterungen auf. Mit dem Gamma-Operator, der den GROUP BY implementiert, und einem nachgelagerten Sigma um HAVING darzustellen, könnte dir einiges gelingen. Die Aggregatfunktionen sind Teil des Gamma-Operators.

Deine erste Abfrage scheint mir falsch. Kalorien ist in einer Tabelle mit gnr und znr, diese beiden Spalten würde ich als Schlüsselattribute ansehen. Und kalorien als Datenattribut. Du müsstest also das Gericht finden, wo die Summe der Kalorien aller Zutaten maximal ist, und nicht eine einzelne Zutat. Es sei denn, die Gericht-Tabelle ist denormalisiert und enthält für alle Zeilen die Kalorienzahl des Gerichts (täte mich wundern).

Deine zweite Abfrage scheint mir auch falsch.

Du suchst Zutaten, die für eine bestimmte Menge von Gerichten nicht verwendet werden, und denkst, damit die Zutaten zu bekommen, die in allen Gerichten verwendet werden? Ich habe nicht versucht, das komplett zu begreifen, aber es klingt irgendwie nicht logisch.

Für die zweite Abfrage hätte ich mit COUNT und HAVING gearbeitet. Die Anzahl der Gerichte, in denen eine Zutat vorkommt, mit der Anzahl der Gerichte insgesamt vergleichen.

Rolf

--
sumpsi - posui - clusi