Konvertieren Sie Abfragen in Worten in relationale Algebra


8

Ich habe eine Folgefrage zu einer Frage, die ich zuvor zu SO gestellt habe.

Anstelle der Abfrage aus meiner ursprünglichen Frage möchte ich Folgendes in relationale Algebra konvertieren:

Listen Sie die Namen und Telefonnummern der Bieter auf, die nicht immer von Doppelgeboten betroffen sind.

Hinweis: Doppelgebote treten auf, wenn zwei verschiedene Bieter denselben Preis für denselben Artikel bieten.

Ich habe einige Ideen, wie ich vorgehen soll:

  • Finde alle Bieter mit Doppelgebot (1)
  • Finde alle Bieter, die ein Gebot haben, das nicht doppelt bietet (2)
  • Finde alle Bieter, die noch nie ein Doppelgebot abgegeben haben (3)

Von hier aus kann ich den Schnittpunkt von (1) und (2) erhalten und (3) zu diesem Schnittpunkt hinzufügen, um die endgültige Antwort zu erhalten. (Das ist mein Denkprozess, bitte korrigieren Sie mich, wenn ich falsch liege)

Ich habe keine Probleme damit, alle Bieter zu finden, die ein Doppelgebot abgegeben haben, aber die daraus resultierenden Ideen verwirren mich ziemlich. Dies ist, was ich für "alle Bieter, die ein doppeltes Gebot haben" habe:

  • BID⨝ITEM - (Q1)

  • Q1 ⨝ ρ Gebot → Gebot ', iid → iid', Preis → Preis ' (Q1) - (Q2)

  • π GebotGebot! = Gebot ' (Q2) ∧ σ Preis = Preis' (Q2) ∧ σ iid = iid ' (Q2)) - (Q3)

Wie verwende ich dies, um die Bieter zu finden, die nicht immer von Doppelgeboten betroffen sind?

Der fettgedruckte Text dient übrigens lediglich der Kennzeichnung und ist nicht Teil der Antwort.


1
"Bieter, die nicht immer von Doppelgeboten betroffen sind", ist das nicht der Schnittpunkt zwischen (1) und (2)?
Lennart

für alle xp existiert nicht x nicht p. Es ist nicht hilfreich, "alle xs wo ..." zu sagen, anstatt nur "die xs wo ...", weil "alle" nichts mit "für alle" oder "wo alle" zu tun hat - jede Abfrage (Unter) Ausdruck gibt "alle" Zeilen / Entitäten zurück, wodurch ein Kriterium wahr wird. "wo alle" im Sinne von "die xs bezogen auf alle ys" dh "xs wo für alle y" eine relationale Teilung beinhaltet. Aber der Sonderfall von "den xs, wo es mindestens n ys gibt" ist "xs, wo es y1, y2, ... gibt", der Projektions- und n-Verknüpfungen verwendet.
philipxy

Antworten:


0

Ich denke, der entscheidende Punkt hier ist die Tatsache, dass die relationale Algebra Duplikate aus ihrem Ergebnis entfernt. Wenn Sie also einen Projektoperator verwenden, um nur iid und price zu erhalten, erhalten Sie eine Liste der Gebote mit Ausnahme der doppelten Gebote. Wenn Sie diese Liste von den gesamten Geboten abziehen, erhalten Sie die Gebote, bei denen es sich um Duplikate handelt.

Ich bin mir jedoch nicht sicher. Würden Sie bitte Ihre Meinung zu diesem Ansatz kommentieren?

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.