Kapitel 4: Grundlagen von Anfragen Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 1 Grundlagen von Anfragen Motivation z Anford. z AnfrageKalküle Anforderungen an Anfragesprachen, Anfrage-Kalküle. Bereichskalkül Sichere Anfragen Beispiele Bereichskalkül Ausdrucksfähigkeit Tupelkalkül Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 2 Einführung (1) Motivation z Anford. AnfrageKalküle Bereichskalkül Sichere Anfragen Beispiele Bereichskalkül z z Anfrage: Formulierung eines Informationsbedürfnisses in hierfür vorgesehener formaler Sprache. Bedeutet: Anfragen sind deklarativ. Benutzer formuliert „Was will ich haben?“ und nicht „Wie komme ich an das, was ich haben will?“. Ausdrucksfähigkeit Tupelkalkül Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 3 Einführung (2) Motivation Anford. AnfrageKalküle Bereichskalkül Sichere Anfragen Beispiele Bereichskalkül Ausdrucksfähigkeit z Formale Sprache – es muß stets absolut klar sein, was Anfrage bedeutet. Eine Möglichkeit, allerdings mit Nachteilen behaftet – Anfrage auf Algebra-Ausdruck abbilden, alternativ: Verwendung von Begrifflichkeiten und Konzepten aus der Logik zur exakten Beschreibung. Tupelkalkül Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 4 Anforderungen an Anfragesprachen (1) Motivation Anford. AnfrageKalküle Bereichskalkül Sichere Anfragen Beispiele Bereichskalkül Ausdrucksfähigkeit Tupelkalkül (Liste aus Buch von Heuer und Saake.) z Ad-Hoc-Formulierung: Der Benutzer soll eine Anfrage formulieren können, ohne ein vollständiges Programm schreiben zu müssen. Meines Erachtens keine Eigenschaft der Sprache, sondern der System-Umgebung. z Deskriptivität = Deklarativität. Hartes Kriterium, muß gemäß Definition 100%ig erfüllt sein. z Abgeschlossenheit: Das Ergebnis ist wieder eine Instanz des Datenmodells. Es kann somit wieder als Eingabe für die nächste Anfrage verwendet werden. Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 5 Anforderungen an Anfragesprachen (2) Motivation z Anford. AnfrageKalküle Bereichskalkül Sichere Anfragen Beispiele Bereichskalkül z Ausdrucksfähigkeit Tupelkalkül z Adäquatheit: Alle Konstrukte des zugrundeliegenden Datenmodells werden unterstützt. Gegenbeispiel: Anfragesprache für OO-Modell, in der man Methoden aus Schema nicht verwenden kann. Orthogonalität: Sprachkonstrukte sind in ähnlichen Situationen auch ähnlich anwendbar. Gegenbeispiel: UNION in (früherer Version von) SQL. Sicherheit: Keine syntaktisch korrekte Anfrage darf in eine Endlosschleife geraten oder ein unendliches Ergebnis liefern. Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 6 Anforderungen an Anfragesprachen (3) Motivation z Anford. AnfrageKalküle Bereichskalkül Sichere Anfragen Beispiele Bereichskalkül z Eingeschränktheit: Die Anfragesprache darf keine komplette Programmiersprache sein. (Folgt u. a. aus Sicherheit.) Vollständigkeit: Die Sprache muß mindestens die Anfragen einer Standardsprache ausdrücken können. (Z. B. Relationenalgebra.) Ausdrucksfähigkeit Tupelkalkül z Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 7 Anfrage-Kalküle (1) Motivation z Anford. AnfrageKalküle Bereichskalkül Sichere Anfragen z Beispiele Bereichskalkül Ausdrucksfähigkeit Tupelkalkül z Logikbasierter Ansatz: Relationeninhalte entsprechen Belegungen von Prädikaten einer Logik, Anfragen abgeleiteten Prädikaten. Kalkül: Menge rein ‚mechanisch‘ anzuwendender syntaktischer Umformungsregeln. Ziel: Einsatz eines derartigen Kalküls zur Auswertung von Datenbank-Anfragen. Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 8 Anfrage-Kalküle (2) Motivation z Beispiel: Anford. Kunde KName AnfrageKalküle Klemens Michael Uwe Bereichskalkül Adresse MD ZH M Konto 12345 23456 34567 Sichere Anfragen Beispiele Bereichskalkül Ausdrucksfähigkeit {x|∃y∃z: Kunde(x, y, z) ∧ y='MD'} Welche Belegungen machen Aussage wahr? Tupelkalkül Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 9 Ein allgemeiner Kalkül (1) Motivation z Anford. AnfrageKalküle Bereichskalkül z Sichere Anfragen Beispiele Bereichskalkül Ausdrucksfähigkeit z Tupelkalkül z Motivation: Mathematische Notation für explizite Mengenkonstruktion. {x2|x∈N ∧ x3>0 ∧ x3<1000} Drei Bestandteile: Angabe der Menge, auf die wir uns beziehen, Bedingungen, Berechnung des Ergebnisses. Anfrage hat die Form {f(x)|p(x)}; x bezeichnet Menge von freien Variablen x={x1: D1, ..., xn: Dn} Im Bedingungsteil in unserem speziellen Fall Bezugnahme auf Datenbank-Objekte. Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 10 Ein allgemeiner Kalkül (2) Motivation Anford. AnfrageKalküle Bereichskalkül z Funktion f bezeichnet Ergebnisfunktion über x. Wichtige Spezialfälle: Angabe einer Variable selber (f ist hier die Identitätsfunktion) und Tupelkonstruktion (Ergebnis vom Typ tuple of). Sichere Anfragen Beispiele Bereichskalkül Ausdrucksfähigkeit Tupelkalkül Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 11 Ein allgemeiner Kalkül (3) Motivation Anford. AnfrageKalküle Bereichskalkül Sichere Anfragen Beispiele Bereichskalkül Ausdrucksfähigkeit Tupelkalkül z p Selektionsprädikat über freien Variablen x. Terme aus Variablen, Konstanten und Funktionsanwendungen, Prädikate der Datentypen, etwa < , < , > , > , ... → atomare Formeln über Termen, Bezug zur aktuellen Datenbank → Datenbankprädikate, z. B. Relationennamen im RM, prädikatenlogische Operatoren ∧, ∨, ¬, ∀, ∃ → Formeln. Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 12 Ergebnisbestimmung einer Anfrage Motivation 1. Anford. AnfrageKalküle Bereichskalkül Sichere Anfragen 2. Bestimme aller Belegungen der freien Variablen in x ={x1: D1, ..., xn: Dn}, für die das Prädikat p wahr wird. Wende Funktion f auf die durch diese Belegungen gegebenen Werte an. Beispiele Bereichskalkül Ausdrucksfähigkeit Tupelkalkül Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 13 Sicherheit von Anfragen Motivation z Anford. AnfrageKalküle Bereichskalkül Sichere Anfragen Beispiele Bereichskalkül Ausdrucksfähigkeit z Unter welchen Umständen liefern Kalkülanfragen endliche Ergebnisse? Beispiel: Inverses einer Datenbank-Relation. {x|∃y∃z: ¬Kunde(x, y, z)} z z I. a. abhängig vom Inhalt der Datenbank, ob Ergebnis endlich oder nicht. Sicherheit von Anfragen – Ergebnis endlich, unabhängig vom Datenbank-Inhalt. Tupelkalkül Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 14 Relationale Kalküle Motivation z Anford. AnfrageKalküle Bereichskalkül Sichere Anfragen z Bereichskalkül: Variablen nehmen Werte elementarer Datentypen (Bereiche) an. Domain Calculus. Tupelkalkül: Variablen variieren über Tupelwerte (entsprechend den Zeilen einer Relation). Beispiele Bereichskalkül Ausdrucksfähigkeit Tupelkalkül z Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 15 Bereichskalkül (1) Motivation Anford. AnfrageKalküle Bereichskalkül Sichere Anfragen Beispiele Bereichskalkül z Terme: Konstanten, etwa 42 oder 'MD'. Variablen zu Datentypen, etwa x. Die Datentypangabe erfolgt in der Regel implizit und wird nicht explizit deklariert. Beispiel von vorhin: – Kunde(KName, Adresse, Konto) – {x|∃y∃z: Kunde(x, y, z) ∧ y='MD'} Ausdrucksfähigkeit Tupelkalkül – x hat Typ der ersten Spalte der Kunde-Relation. Funktionsanwendung f(t1, ..., tn): Funktion f, Terme ti, etwa plus(12, x), bzw. in Infixnotation 12+x. Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 16 Bereichskalkül (2) Motivation Anford. AnfrageKalküle Bereichskalkül Sichere Anfragen Beispiele Bereichskalkül Ausdrucksfähigkeit Tupelkalkül z Atomare Formeln: Prädikatanwendung θ(t1, ..., tn), θ∈{<, >, ≤, ≥, ≠, =, ...} Datentypprädikat, Terme ti. Zweistellige Prädikate wie üblich in Infix-Notation. Beispiele: x=y, 42>x, 3+7=11; y='MD' Prädikatanwendungen für Datenbankprädikate, notiert als R(t1, ..., tn) für einen Relationennamen R. Voraussetzung: n muß die Stelligkeit der Relation R sein und alle ti müssen vom passenden Typ sein. Beispiel: Kunde(x, y, z), Kunde(x, 'MD', z). Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 17 Bereichskalkül (3) Motivation z Anford. z AnfrageKalküle Bereichskalkül Sichere Anfragen Beispiele Bereichskalkül Ausdrucksfähigkeit Tupelkalkül Formeln wie üblich mit ∧, ∨, ¬, ∃, ∀. Anfragen: {x1, ..., xn|ϕ(x1, ..., xn)} ϕ ist Formel über den in der Ergebnisliste aufgeführten Variablen x1 bis xn. Das Ergebnis ist eine Menge von Tupeln. Tupelkonstruktion erfolgt implizit aus den Werten der Variablen in der Ergebnisliste. Beispiele: {x|∃y∃z: Kunde(x, y, z) ∧ y='MD'} {x, z|∃y: Kunde(x, y, z) ∧ y='MD'} Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 18 Basiskalkül Motivation Anford. AnfrageKalküle Bereichskalkül Sichere Anfragen Beispiele Bereichskalkül Ausdrucksfähigkeit Tupelkalkül Basiskalkül – Einschränkung des Bereichskalküls, für theoretische Untersuchungen: z Wertebereich: ganze Zahlen, z Datentypprädikate werden wie bei der Relationenalgebra auf Gleichheit und elementare Vergleichsoperatoren eingeschränkt, z Funktionsanwendungen sind nicht erlaubt; nur Konstanten dürfen neben Bereichsvariablen als Terme verwendet werden. Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 19 Sichere Anfragen (1) Motivation z Anford. AnfrageKalküle Bereichskalkül Sichere Anfragen Beispiele Bereichskalkül Ausdrucksfähigkeit Tupelkalkül z z z Sichere Anfragen: Anfragen, die für jeden Datenbankzustand σ(R) ein endliches Ergebnis liefern. Beispiel für nicht sichere Anfrage: {x, y |¬R(x, y)} Beispiel für sichere Anfrage: {x, y |R(x, y)} Sichere Anfragen = semantisch sichere Anfragen; im Gegensatz dazu: Syntaktisch sichere Anfragen, kommt gleich. Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 20 Sichere Anfragen (2) Motivation z Anford. AnfrageKalküle z Bereichskalkül Sichere Anfragen Beispiele Bereichskalkül z Weiteres Beispiel für sichere Anfrage: {x, y |y=10 ∧ x>0 ∧ x<10} Sicherheit folgt direkt aus den Regeln der Arithmetik. Semantische Sicherheit ist im allgemeinen nicht entscheidbar. Ausdrucksfähigkeit Tupelkalkül Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 21 Syntaktisch sichere Anfragen Motivation z Anford. AnfrageKalküle Bereichskalkül z Sichere Anfragen Beispiele Bereichskalkül Ausdrucksfähigkeit z Tupelkalkül z Syntaktisch sichere Anfragen: Anfragen, die syntaktischen Einschränkungen unterliegen, um die semantische Sicherheit zu erzwingen. Grundidee: Jede freie Variable xi muß überall in ϕ(x1, ...) durch positives Auftreten xi=t oder R(..., xi, ...) an endliche Bereiche gebunden werden. Die Bindung an endliche Bereiche muß für die ganze Bedingung, also insbesondere für alle Zweige einer Disjunktion, gelten. Beispiel: {x|(∃y∃z: (Kunde(x, y, z) ∧ y='MD')) ∨ (x>'JL')} Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 22 Relationen für Beispiele Motivation Anford. AnfrageKalküle Kunde(KName, Adresse, Konto) bestellt(KName, WareBez, Anzahl) Ware(WareBez, Preis, Vorrat) Bereichskalkül Sichere Anfragen Beispiele Bereichskalkül Ausdrucksfähigkeit Tupelkalkül Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 23 Beispiele Bereichskalkül (1) Motivation z Anford. AnfrageKalküle Bereichskalkül z Sichere Anfragen Beispiele Bereichskalkül Ausdrucksfähigkeit Tupelkalkül z „Alle (Namen von) Kunden in Magdeburg“. {x|Kunde(x, y, z) ∧ y='MD'} Vereinfachte Notation. Ansonsten ungebundene Variablen (hier y und z) im Bedingungsteil existentiell mit ∃ gebunden. Vollständige Version: {x|∃y∃z: Kunde(x, y, z) ∧ y='MD'} Einsparung von Bereichsvariablen, indem Konstanten als Parameter des Prädikats eingesetzt werden: {x|Kunde(x, 'MD', z)} Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 24 Beispiele Bereichskalkül (2) Motivation z Anford. AnfrageKalküle Bereichskalkül Sichere Anfragen Beispiele Bereichskalkül z Abkürzung für beliebige, unterschiedliche existentiell gebundene Variablen ist _ Symbol: {x|Kunde(x, y, _) ∧ y='MD'} Verschiedene Auftreten des Symbols _ stehen hierbei für paarweise verschiedene Variablen. Ausdrucksfähigkeit Tupelkalkül Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 25 Beispiele Bereichskalkül (3) Motivation z Anford. AnfrageKalküle Bereichskalkül Sichere Anfragen Beispiele Bereichskalkül Ausdrucksfähigkeit z z „Städte mit zwei oder mehr Kunden“. {y|Kunde(x, y, z) ∧ Kunde(x', y, z') ∧ x≠x'} Diese Anfrage zeigt eine Verbundbildung über das zweite Attribut der Kunde-Relation. Verbundbildung kann einfach durch Verwendung derselben Bereichsvariablen als Parameter in verschiedenen Relationsprädikaten erfolgen. Tupelkalkül Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 26 Beispiele Bereichskalkül (4) Motivation z Kunde(KName, Adresse, Konto) bestellt(KName, WareBez, Anzahl) Ware(WareBez, Preis, Vorrat) z „Wer hat Waren unter 1.-- EUR bestellt?“ {x, w|Kunde(x, y, z) ∧ bestellt(x, w, a) ∧ Ware(w, p, v) ∧ a>0 ∧ p<1.00} Verbund über drei Relationen. Anford. AnfrageKalküle Bereichskalkül Sichere Anfragen Beispiele Bereichskalkül Ausdrucksfähigkeit Tupelkalkül z Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 27 Beispiele Bereichskalkül (5) Motivation z Anford. {x|Kunde(x, y, z) ∧ ∃w∃a: (bestellt(x, w, a) ∧ a>0)} AnfrageKalküle Bereichskalkül Sichere Anfragen Beispiele Bereichskalkül Ausdrucksfähigkeit Tupelkalkül „Wer hat überhaupt etwas bestellt?“ z z Einsatz einer existentiell gebundenen Unteranfrage. Derartige Unteranfragen können aufgrund der Regeln der Prädikatenlogik wie folgt aufgelöst werden: {x|Kunde(x, y, z) ∧ bestellt(x, w, a) ∧ a>0} Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 28 Beispiele Bereichskalkül (6) Motivation z Anford. AnfrageKalküle Bereichskalkül Sichere Anfragen z „Wer hat nur Waren in großer Anzahl bestellt?“ {x|Kunde(x, y, z) ∧ ∀w∀a(bestellt(x, w, a) ⇒ a>1000)} Universell gebundene Teilformeln können nicht aufgelöst werden. Beispiele Bereichskalkül Ausdrucksfähigkeit Tupelkalkül z Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 29 Sicherheit von Anfragen Motivation (Folie von vorhin.) Anford. z AnfrageKalküle Bereichskalkül Sichere Anfragen Beispiele Bereichskalkül Ausdrucksfähigkeit Tupelkalkül z Unter welchen Umständen liefern Kalkülanfragen endliche Ergebnisse? Beispiel: Inverses einer Datenbank-Relation. {x|∃y∃z: ¬Kunde(x, y, z)} z z I. a. abhängig vom Inhalt der Datenbank, ob Ergebnis endlich oder nicht. Geben Sie Sicherheit von Anfragen – Beispiel hierfür Ergebnis endlich, an. unabhängig vom Datenbank-Inhalt. Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 30 Ausdrucksfähigkeit Bereichskalkül Motivation Anford. AnfrageKalküle Bereichskalkül z Bereichskalkül ist streng relational vollständig, d. h. zu jedem Term τ der Relationenalgebra gibt es einen äquivalenten (sicheren) Ausdruck η des Bereichskalküls. Sichere Anfragen Beispiele Bereichskalkül Ausdrucksfähigkeit Tupelkalkül Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 31 Umsetzung von Relationenoperationen (1) Motivation Anford. AnfrageKalküle Bereichskalkül Sichere Anfragen Beispiele Bereichskalkül Ausdrucksfähigkeit Tupelkalkül z Gegeben: zwei Relationenschemata R(A1, ..., An) und S(B1, ..., Bm). Vereinigung (für n=m). R∪S ≡ {x1 ... xn|R(x1, ..., xn) ∨ S(x1, ..., xn)} Differenz (für n=m). R–S ≡ {x1 ... xn|R(x1, ..., xn) ∧ ¬S(x1, ..., xn)} Ist das sicher? Wenn ja, syntaktisch oder semantisch sicher? Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 32 Umsetzung von Relationenoperationen (2) Motivation Anford. AnfrageKalküle Bereichskalkül Sichere Anfragen Beispiele Bereichskalkül z Gegeben: zwei Relationenschemata R(A1, ..., An) und S(B1, ..., Bm). (Forts.) Natürlicher Verbund. R S ≡ {x1 ... xn xn+1 ... xn+m-i|R(x1, ..., xn) ∧ S(x1, ..., xi, xn+1, ..., xn+m-i)} Hierbei seien die ersten i Attribute von R und S die Verbundattribute, also Aj = Bj für j = 1 ... i. Ausdrucksfähigkeit Tupelkalkül Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 33 Umsetzung von Relationenoperationen (2) Motivation Anford. Ausleih AnfrageKalküle Bereichskalkül Sichere Anfragen Invnr 4711 1201 0007 4712 Name Meyer Schulz Müller Meyer i=1, n=2, m=4 Beispiele Bereichskalkül Ausdrucksfähigkeit Buch Tupelkalkül Klemens Böhm Invnr 0007 1201 4711 4712 4717 Titel Dr. No Objektbanken Datenbanken Datenbanken Pascal ISBN 3-125 3-111 3-765 3-891 3-999 Autor James Bond Heuer Vossen Ullman Wirth Datenbankeinsatz: Grundlagen von Anfragen – 34 Umsetzung von Relationenoperationen (3) Motivation Anford. z AnfrageKalküle Bereichskalkül Sichere Anfragen Beispiele Bereichskalkül Ausdrucksfähigkeit Tupelkalkül z Projektion. πA(R)≡{y1 ... yk|∃x1 ... ∃xn(R(x1, ..., xn) ∧ y1=xi1 ∧ ... ∧ yk=xik)} Attributliste der Projektion ist wie folgt gegeben: A=(Ai1, ..., Aik) Beispiel: Buch Invnr Titel ISBN Autor π{ISBN, Titel}(Buch)≡{y1 y2|∃x1 …∃xn(Buch(x1, ..., xn) ∧ y1=x3 ∧ y2=x2)} Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 35 Umsetzung von Relationenoperationen (3) Motivation Anford. z AnfrageKalküle Bereichskalkül Sichere Anfragen Beispiele Bereichskalkül Ausdrucksfähigkeit z Selektion. σϕ(R)≡{x1 ... xn|R(x1, ..., xn) ∧ φ‘} Die Formel φ‘ wird aus φ gewonnen, indem Variable xi an Stelle der Attributnamen Ai eingesetzt werden. Beispiel: σTitel='Tante Julia'(Buch) ≡{x1 ... x4|Buch(x1, ..., x4) ∧ x2= 'Tante Julia'} Tupelkalkül Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 36 Änderungsoperationen (1) Motivation z Anford. AnfrageKalküle Bereichskalkül Sichere Anfragen z Beispiele Bereichskalkül Ausdrucksfähigkeit Tupelkalkül z u(d) := insert t into ri(Ri) ⎧d' := {r1,..., ri ∪ {t},..., rp } falls d'∈ SAT(S) da ⎨ d sonst ⎩ u(d) := delete t from ri(Ri) ⎧d' := {r1,..., ri − {t},..., rp } falls d'∈ SAT(S) da ⎨ d sonst ⎩ u(d) := replace t→t' in ri(Ri) ⎧d' := {r1,..., (ri − {t}) ∪ {t'},..., rp } falls d'∈ SAT(S) da ⎨ d sonst ⎩ Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 37 Änderungsoperationen (2) Motivation Anford. AnfrageKalküle Bereichskalkül z Erläuterungen: Tupel war Abbildung für jede Spalte der Relation. SAT – Menge aller gültigen Datenbanken (bezüglich vorliegender Integritätsbedingungen). Sichere Anfragen Beispiele Bereichskalkül Ausdrucksfähigkeit Tupelkalkül Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 38 Tupelkalkül (1) Motivation z Anford. AnfrageKalküle z Bereichskalkül Sichere Anfragen Beispiele Bereichskalkül Ausdrucksfähigkeit z Tupelkalkül z Anfragen haben ‚im Prinzip‘ gleichen Aufbau wie im Bereichskalkül. Unterschiede: Variablen t sind tupelwertig. R(t) bzw. t∈R bedeuten „t ist in Relation R“. t.Ai bzw. t[i] bzw. t(i) – Zugriff auf i-te Tupelkomponente. Ausdruck des Basis-Tupelkalküls hat die Form {t|ϕ(t)}. Beispiel: {t| Kunde(t) ∧ ∃b(bestellt(b) ∧ b.WName='Papier' ∧ b.KName = t.KName)} Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 39 Tupelkalkül (2) Motivation Anford. AnfrageKalküle Bereichskalkül Sichere Anfragen z Konstruktion neuer Tupel, wenn Struktur der Ergebnistupel nicht bereits auftritt. Beispiel: {t.KName, t.Adresse| Kunde(t) ∧ ∃b(bestellt(b) ∧ b.WName='Papier' ∧ b.KName = t.KName)} Beispiele Bereichskalkül Ausdrucksfähigkeit Tupelkalkül Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 40 Mögliche Prüfungsfragen z z z z z z <Die einzelnen Anforderungen an Anfragesprachen erklären können.> <Diverse Anfragen im Bereichs- bzw. Tupelkalkül formulieren können.> Wie sind Anfragen im Bereichskalkül aufgebaut? Was bedeutet Sicherheit? Dto. syntaktische Sicherheit? Was ist die Motivation dafür, syntaktische Sicherheit einzuführen? Wie ausdrucksmächtig ist der Bereichskalkül? Wie zeigt man das? Klemens Böhm Datenbankeinsatz: Grundlagen von Anfragen – 41