1 Anfragen an UniversalrelationSysteme Zusammenhang zwischen dem Stellen von relationalen Anfragen und der Navigation im relationalen Datenbankschema her. Erleichterung des Anfragen-Stellens: Query-by-Example: graphische Hilfsmittel (Tableaus) Jetzt: kein Aufwand, mehrere Relationen explizit zu verbinden. Universalrelation-System zielt primär auf gelegentliche Benutzer ab Datenbank-Experten profitieren vom geringeren Schreibaufwand. Wir stellen die Arbeitsweise eines Universalrelation-Frontends vor, sowie ihre effiziente Berechnung insbesondere für die Klasse der γ-azyklischen Datenbankschemas. Wir zeigen insbesondere, wie man aus einer SQL-ähnlichen UniversalrelationAnfrage eine gewöhnliche SQL-Anfrage erzeugt. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 1 1.1 Das Stellen von Anfragen als Navigation durch das Datenbankschema relationales Datenbankschema als Hypergraph verallgemeinerter Graph, dessen (Hyper-)kanten eine Menge von Knoten enthalten [nicht nur Zweiermengen (oder Paare) von Knoten wie bei (gerichteten) Graphen]. Die Attribute des Datenbankschemas sind die Knoten. Jedes Relationenschema ist eine Hyperkante des Hypergraphen; sie enthält alle Attribute des Relationenschemas zeichnerisch: Kringel, der genau diese Attribute umschließt. Manchmal zusätzlich nötig: rechteckige Rollen-Hyperkanten: maximale Mengen von Attributen, die sich auf die gleichen Entities (wenn auch in verschiedenen Rollen) beziehen. Beispiel: Arztpraxis (vereinfacht). Geschlecht ELT BEH ArtPro Name Eltern Patient PERSON Arzt Mensch Wir stellen zunächst einige Überlegungen zusammen, wie man die im letzten Semester vorgestellten relationalen Anfragesprachen (SQL, QbE, Relationenalgebra, Relationenkalkül) benutzt. Ein Benutzer findet in der Regel bereits ein (vom Datenbankadministrator vereinbartes) relationales Datenbankschema vor, das man durch einen Hypergraphen veranschaulichen kann. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 2 Ein zunächst umgangssprachlich ausgedrückter Anfragewunsch muss dann zu einem Ausdruck der Relationenalgebra oder des Relationenkalküls formalisiert werden. Diese Formalisierung kann oft nach folgendem Muster erfolgen: 1. Für die umgangssprachlich vorliegenden Begriffe müssen formale Entsprechungen als Attribute, Relationensymbole, Entitybezeichnungen oder Konstantenzeichen bestimmt werden. 2. Für die umgangssprachlich vorliegenden Zusammenhänge zwischen den Begriffen müssen formal entsprechende Pfade im Hypergraphen des Schemas bzw. ein für die Anfrage relevanter Teilhypergraph gefunden und dann relational ausgedrückt werden. 3. Für die umgangssprachlich vorliegenden Zwecke des Anfragewunsches müssen formale Entsprechungen als Selektionen und Projektionen ausgedrückt werden. 4. Abschließend können noch mit Hilfe der algebraischen Eigenschaften vom Benutzer oder automatisch vom Datenbankverwaltungssystem Optimierungen vorgenommen werden (die wir im folgenden Beispiel nur für die Relationenalgebra beschreiben). Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 3 a. Anfragewunsch: "Bestimme Geschlecht und Eltern des Kindes theresia!" Schritt 1: Den nominalen Begriffen Kind, Geschlecht und Eltern entsprechen die Attribute ELT.Name, PERSON.Geschlecht und ELT.Eltern; beteiligt sind die Relationensymbole PERSON und ELT. Schritt 2: Für ein Kind sollen Geschlecht und Eltern bestimmt werden. Diesem Zusammenhang entspricht der Pfad Geschlecht, PERSON, Name, ELT, Eltern im Hypergraphen. Der relevante Teil des Hypergraphen ist daher: Geschlecht ELT Eltern PERSON Name In diesem Fall ist die benötigte Verbindung über das Attribut Name bereits im Datenbankschema angelegt und kann direkt mit Hilfe des natürlichen Verbundes ausgedrückt werden: PERSON ELT bzw. PERSON(Name, Geschlecht) ∧ ELT(Name, Eltern) bzw. º SELECT * FROM PERSON, ELT WHERE PERSON.Name=ELT.Name Schritt 3: Dem vorliegenden Zweck, Daten zum Konstantenzeichen theresia zu erfragen, entspricht die abschließende Selektion: σName=theresia(PERSON ELT) bzw. PERSON(Name, Geschlecht) ∧ ELT(Name, Eltern) ∧ (Name=theresia) bzw. º SELECT * FROM PERSON, ELT WHERE PERSON.Name=ELT.Name AND PERSON.Name='theresia' Schritt 4: Die Selektion nach dem Wert theresia des Attributs PERSON.Name bzw. ELT.Name kann vorgezogen werden: σName=theresia(PERSON) σName=theresia(ELT) º Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 4 b. Anfragewunsch: "Bestimme alle Ärzte, die weibliche Patienten behandeln!" Schritt 1: Den nominalen Begriffen Arzt und Patient entsprechen die Attribute BEH.Arzt und BEH.Patient; dem adjektiven Begriff weiblich entspricht das Konstantenzeichen als ein Wert des Attributs PERSON.Geschlecht; dem verbalen Begriff behandeln entspricht das Relationensymbol BEH. Schritt 2: Dem vorliegenden Zusammenhang zwischen Patienten und ihrem Geschlecht entspricht der Pfad Arzt, BEH, Patient, Mensch, Name, PERSON, Geschlecht im Hypergraphen. Der relevante Teil des Hypergraphen ist dann: Geschlecht PERSON Name Patient BEH Arzt Mensch In diesem Fall muss die benötigte Verbindung zwischen den Relationensymbolen BEH und PERSON erst durch eine Umbenennung des Attributs Patient in Name oder mit Hilfe eines Equijoins oder eines Vergleichs hergestellt werden: δPatient←Name(BEH) PERSON oder BEH Patient=Name PERSON oder σPatient=Name(BEH PERSON) bzw. º º º BEH(Patient, Arzt, ArtPro) ∧ PERSON(Name, Geschlecht) ∧ (Patient=Name) bzw. SELECT * FROM BEH, PERSON WHERE Patient=Name Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 5 Schritt 3: Dem vorliegenden Zweck, nur die Ärzte der weiblichen Patienten zu bestimmen, entspricht eine Selektion nach dem Konstantenzeichen für das Attribut PERSON.Geschlecht und eine abschließende Projektion nach dem Attribut BEH.Arzt: πArzt(σGeschlecht=(δPatient←Name(BEH) PERSON)) oder πArzt(σGeschlecht=(BEH Patient=Name PERSON)) oder πArzt(σGeschlecht=(σPatient=Name(BEH PERSON))) bzw. º º º (∃ Patient)(∃ ArtPro)(∃ Name)(∃ Geschlecht) [BEH(Patient, Arzt, ArtPro) ∧ PERSON(Name, Geschlecht) ∧ (Patient=Name) ∧ (Geschlecht=)] SELECT Arzt FROM BEH, PERSON WHERE Patient=Name AND Geschlecht='' Schritt 4: Die Selektion nach dem Konstantenzeichen des Attributs PERSON.Geschlecht sowie das Entfernen des Attributs BEH.ArtPro können vorgezogen werden: πArzt(δPatient←Name(BEH) σGeschlecht=(PERSON)) oder πArzt(πPatient,Arzt(BEH) Patient=Name σGeschlecht=(PERSON)) oder πArzt(σPatient=Name(πPatient,Arzt(BEH) σGeschlecht=(PERSON)) º º º In Universalrelation-Systemen konstruiert man die Schemas gerne so, dass keine Rollenhyperkanten nötig sind. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 6 1.2 Ziele und Arbeitsweise von Universalrelation-Systemen In relationalen Datenbanksystemen stellt man eine Anfrage, indem man angibt: • die gewünschten Ausgabeattribute, • die beteiligten Relationen, • sowie die Bedingungen zur Auswahl der Ausgabetupel. Dazu gehören auch Bedingungen, die festlegen, wie die beteiligten Relationen verknüpft werden sollen. schwierigste Operation für Benutzer: der Verbund von Relationen Ziel: Benutzer entlasten von der expliziten Verknüpfung der Relationen. fiktive "Universalrelation" enthält die Information aus allen Relationen der Datenbank (und ist daher eine Relation über allen Attributen der Datenbank). Bei Anfragen sind dann nur noch die Tupel geeignet auszuwählen: die Anfragen werden einfacher. Bei Universalrelation-Systemen braucht der Benutzer daher bei Anfragen nur noch • die gewünschten Ausgabeattribute anzugeben, sowie • die Bedingungen, die für diese Anfrage gelten sollen. Das Universalrelation-System ermittelt dann • die für die Anfrage nötigen Relationen sowie • die dazu passenden Verbundbedingungen. Das Universalrelation-System ermittelt dazu einen relevanten (aber möglichst kleinen) Ausschnitt des Datenbankschemas, den sog. Anfragehypergraphen. Wichtig ist, dass es zu einer Anfrage nur einen einzigen Anfragehypergraphen gibt, da das Universalrelation-System aufgrund der ihm zur Verfügung stehenden Daten nicht erkennen kann, welchen Teil der Datenbank (oder gar den Durchschnitt oder die Vereinigung der zu den Anfragehypergraphen gehörenden Relationen) der Benutzer im Sinn hatte. Die Verknüpfung der Relationen des Anfragehypergraphen findet mit dem natürlichen Verbund statt. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 7 Welcher Teil der Datenbank für eine Anfrage benutzt werden soll, muss aus den in der Anfrage genannten Attributen ermittelt werden. Rollen, die die Attribute bei einer Datenbankanfrage (als relationalen Ausdruck) spielen: • das Attribut ist Ausgabeattribut, • das Attribut kommt im Bedingungsteil vor, ist aber kein Ausgabeattribut, • das Attribut wird als Verbundattribut benötigt, kommt aber weder als Ausgabeattribut noch im Bedingungsteil vor, und • das Attribut wird für diese Anfrage nicht benötigt. Die ersten beiden Attributmengen kommen explizit in der Anfrage an ein Universalrelation-System vor, die dritte Attributmenge wird vom UniversalrelationSystem berechnet. Ein Universalrelation-System ist also in der Lage, aus der Attributmenge einer Anfrage die erforderlichen Verbundbedingungen zu erzeugen, so dass ein Benutzer des Universalrelation-Systems nicht mehr die Relationen und die Art der Verbundenheit des Schemas zu kennen braucht, sondern nur noch die Attribute. Wir stellen hier ein Universalrelation-Frontend vor, das mit einer SQL-ähnlichen Sprache arbeitet. Soweit wir uns auf den semantisch eindeutigen Fall der γazyklischen Datenbankschemas beschränken, können wir eine optimierte Semantik verwenden, die i.a. mit weniger Verbundoperationen auskommt. Die Vorteile eines Universalrelation-Systems werden durch das nachfolgende Beispiel anschaulich: Beispiel 1: Unsere Beispieldatenbank enthält Informationen über Bücher, ihre Autoren und Verlage sowie über die in der Bibliothek vorhandenen Exemplare: Ein Buch wird identifiziert durch seine ISBN. Jedes Buch kann mehrfach in einer Bibliothek vorhanden sein, verschiedene Exemplare eines Buches haben stets die gleiche ISBN, unterscheiden sich jedoch in Signatur und Inventarnummer. Verlage werden identifiziert durch die ersten Stellen der ISBN ihrer Bücher, den ISBN-Code. Weitere Attribute eines Verlags sind der Verlagsname sowie das mengenwertige Attribut Verlagsort. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 8 Verlagsname Verlag Verlagsort ISBN-Code Entity-Relationship-Diagramm für Beispiel 1 wird verlegt Inventarnr Signatur ISBN Exemplar ist Exemplar von Titel Buch Erscheinungsjahr Auflage Hrsg hat Autor Autor Position Autorenname Das zugehörige relationale Datenbankschema wird gut durch einen Hypergraphen veranschaulicht, wobei die Knoten die Attribute und die Hyperkanten die Relationenschemas sind: Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 9 Verl_Orte Verlagsort Verlagsname Exemplar Inventarnr Verlag ISBN_Code Signatur wird_verlegt ISBN Autorenname Hrsg Autor Position Titel Erscheinungsjahr Auflage Buch Ein Benutzer dieser Bibliotheksdatenbank sucht ein Buch, von dem er nur den Namen des Verlags sowie des Autors kennt. Um alle in Frage kommenden Bücher aufzulisten, muss der Benutzer bei einer gewöhnlichen relationalen Datenbank Kenntnisse bzgl. der Schema-Informationen über die Relationen und Attribute der Datenbank besitzen, insbesondere die beteiligten Relationen und die entsprechenden Verbundbedingungen ermitteln und daraus die gewünschte Anfrage stellen. Bzgl. unserer Beispiel-Datenbank kommt folgende Anfrage heraus: SELECT Titel, Buch.ISBN FROM Buch, Autor, wird_verlegt, Verlag WHERE Autorenname='gesuchter_Autor' AND Verlagsname='gesuchter_Verlag' AND Buch.ISBN=Autor.ISBN AND Buch.ISBN=wird_verlegt.ISBN AND wird_verlegt.ISBN_Code=Verlag.ISBN_Code; Bei einem Universalrelationen-System braucht der Benutzer nur die vorhandenen Attribute kennen. Die gleiche Anfrage lautet dort: SELECT Titel, ISBN WHERE Autorenname='gesuchter_Autor' AND Verlagsname='gesuchter_Verlag'; Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 10 Da wir uns eine Universalrelation vorstellen, können wir weglassen: • die FROM-Klausel, • die Relationensymbole (es gibt ja nur eine Relation und wir benötigen hier nur eine Kopie davon) und außerdem • die Verbundbedingungen (es gibt nichts zu verbinden). Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 11 1.3 Für Universalrelation-Systeme geeignete Datenbankschemas Der Einfachheit halber betrachten wir hier nur (als Hypergraph) zusammenhängende sowie reduzierte Datenbankschemas, d.h. es gibt keine zwei Relationenschemas, so dass die eine Attributmenge eine Teilmenge der anderen Attributmenge ist. Die Kreisfreiheit von Hypergraphen ist ein wichtiges Kriterium für eine eindeutige Semantik. Unglücklicherweise überträgt sich der Begriff eines Kreises nicht ganz einfach von Graphen auf Hypergraphen. Bei Hypergraphen unterscheidet man daher mehrere Grade von Azyklizität. 1.3.1 Anforderungen an das Datenbankschema Ein Datenbankschema, das für ein Universalrelation-System geeignet sein soll, muss folgende Bedingungen erfüllen: 1. Die Attributnamen müssen nicht nur relationenweit, sondern datenbankweit gültig (und eindeutig) sein, weil bei einer Universalrelation-Anfrage die Information, aus welcher Relation die Attribute stammen, nicht vorhanden ist. D.h. es muss gelten, dass zwei Attribute mit dem gleichen Namen stets den gleichen Aspekt der realen Welt bezeichnen (also keine Homonyme vorkommen) und umgekehrt. Diese Eigenschaft kann durch geeignete Umbenennung von Attributen stets erreicht werden. 2. Die zweite Anforderung an das Datenbankschema ist die γ-Azyklizität (vgl. Kapitel 1.3.2). In einem γ-zyklischen Schema sind die semantischen Beziehungen zwischen manchen Attributen mehrdeutig, Anfrageergebnisse können dann falsch interpretiert werden; technischer ausgedrückt: zu einigen Attributmengen gibt es mehr als einen Anfragehypergraphen. Das Datenbankschema muss so beschaffen sein, dass es zwischen zwei Relationen nicht mehr als eine (Standard-)Beziehung gibt. (Standardbeziehungen sind in etwa die Beziehungen im Entity-Relationship-Diagramm.) Genau diese Beziehung soll berechnet werden. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 12 Beispiel 2: Gegeben sei jetzt ein anderer Ausschnitt eines Bibliotheksschemas: Inventarnr Signatur ISBN ist Exemplar von Exemplar leiht aus EntityRelationshipDiagramm für Beispiel 2 Buch Titel bestellt vor BName Benutzer Benutzernr Diese Anwendung kann durch das folgende γ-zyklische Datenbankschema realisiert werden: Exemplar Inventarnr Signatur ISBN Titel Buch leiht aus bestellt vor Benutzernr Hypergraph zu Beispiel 2 BName Benutzer Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 13 In diesem Schema gibt es zwischen den Attributen Benutzernr und Signatur zwei Beziehungen: 1. Der durch Benutzernr gekennzeichnete Benutzer hat das Exemplar Signatur ausgeliehen. 2. Der durch Benutzernr gekennzeichnete Benutzer hat ein Buch vorbestellt, von dem Signatur ein Exemplar ist. Ohne weitere Angaben des Benutzers kann das Universalrelationsystem bei einem γ-zyklischen Schema nicht erkennen, welche Interpretation gewünscht ist. Technisch kommt dies dadurch zum Ausdruck, dass die Universalrelation-Anfrage SELECT Benutzernr, Signatur; zwei verschiedene Anfragehypergraphen hat, die diese unterschiedlichen Interpretationen widerspiegeln: Signatur Signatur ISBN {Exemplar} {leiht aus} Benutzernr Benutzernr {bestellt vor} In einem γ-azyklischen Schema ist der Anfragehypergraph dagegen stets eindeutig. Hat man ein γ-zyklisches Datenbankschema, so lassen sich für jedes γ-azyklische Teilschema wieder die Vorteile des Universalrelation-Systems nutzen. In unserem Beispiel 2 musste ein Benutzer dann zu Beginn nicht das Datenbankschema 'Bibliothek', sondern eines der Datenbank-Teilschemas 'Ausleihe' oder 'Vorbestellen' auswählen. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 14 1.3.2 Überprüfung der Anforderungen Das Universalrelation-System benötigt für seine Arbeit Informationen über das Datenbankschema. Diese sind in der Regel bereits im Data Dictionary des Datenbankverwaltungssystems vorhanden oder in der SQL-Kommandodatei, mit der das Datenbankschema erzeugt wurde, die also insbesondere alle CREATE-TABLEKommandos der Datenbank enthält. Das Universalrelation-System ermittelt bei seiner Initialisierung alle relevanten Daten des Datenbankschemas, nämlich für jede Relation ihren Namen und die Menge ihrer Attribute sowie für jedes Attribut seinen Namen, seinen Typ und die Menge der das Attribut enthaltenden Relationen. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 15 Beispiel 1: Für unser Beispielschema liegt folgende SQL-Kommandodatei vor: CREATE TABLE Buch ( ISBN Titel Erscheinungsjahr Auflage CHAR(13) CHAR(150) , NUMBER(4), NUMBER(4) PRIMARY KEY, ); CREATE TABLE wird_verlegt ( ISBN CHAR(13) ISBN_Code CHAR(9) PRIMARY KEY, NOT NULL); CREATE TABLE Verlag ( ISBN_Code CHAR(9) Verlagsname CHAR(30) PRIMARY KEY, NOT NULL); CREATE TABLE Verl_Orte ( ISBN_Code CHAR(9) Verlagsort CHAR(30) NOT NULL, ); CREATE TABLE Autor ( ISBN Autorenname Hrsg Position NOT NULL, NOT NULL, NOT NULL, NOT NULL); CHAR(13) CHAR(30) CHAR(4) NUMBER(2) CREATE TABLE Exemplar ( ISBN CHAR(13) Inventarnr CHAR(8) Signatur CHAR(16) NOT NULL, PRIMARY KEY, NOT NULL); Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 16 Die so gewonnenen Schemainformationen werden in zwei Tabellen für Relationen und Attribute gespeichert, aus denen wir insbesondere Verbundinformationen leicht ablesen können. Nach Einlesen unseres Beispielschemas liegen die beiden folgenden Tabellen vor: RelationTabelle: Nr. 1 2 3 4 5 6 Name Buch wird_verlegt Verlag Verl_Orte Autor Exemplar enthält Attribut Nr. {1, 2, 3, 4} {1, 5} {5, 6} {5, 7} {1, 8, 9, 10} {1, 11, 12} AttributTabelle: Nr. Name Typ enthalten_in Relation Nr. 1 ISBN CHAR(13) {1, 2, 5, 6} 2 Titel CHAR(150) {1} 3 Erscheinungsjahr NUMBER(4) {1} 4 Auflage NUMBER(4) {1} 5 ISBN_Code CHAR(9) {2, 3, 4} 6 Verlagsname CHAR(30) {3} 7 Verlagsort CHAR(30) {4} 8 Autorenname CHAR(30) {5} 9 Hrsg CHAR(4) {5} 10 Position NUMBER(2) {5} 11 Inventarnr CHAR(8) {6} 12 Signatur CHAR(16) {6} Beim Einlesen der Schemainformation wird gleichzeitig eine notwendige Bedingung für die globale Gültigkeit von Attributnamen geprüft, nämlich ob alle Attribute mit gleichem Namen auch in allen Relationen den gleichen Typ haben. Ist das nicht der Fall, so spricht dies dafür, dass unterschiedliche semantische Konzepte mit dem gleichen Attributnamen belegt sind. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 17 Außerdem erfolgt, nachdem die Schemainformationen der SQL-Kommandodatei entnommen wurden, ein Test auf γ–Azyklizität. Für diesen Test benutzen wir die folgende DMF-Reduktion: DMF-Reduktion: Führe folgende Operationen (in beliebiger Reihenfolge) aus, bis keine mehr angewendet werden kann: (1) Kommt ein Attribut in nur einem Relationenschema vor, so entferne dieses Attribut. (2) Enthält ein Relationenschema weniger als zwei Attribute, so entferne dieses Relationenschema. (3) Haben zwei Relationenschemas die gleichen Attributmengen, so entferne eins dieser Relationenschemas. (4) Sind zwei Attribute in genau der gleichen Menge von Relationenschemas enthalten, so entferne eins dieser Attribute aus allen Relationenschemas. Ein Hypergraph ist γ-azyklisch genau dann, wenn die DMF-Reduktion zum leeren Ergebnis führt. Beide Tests werden nur einmal während der Initialisierungsphase des Universalrelation-Systems durchgeführt. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 18 1.4 Berechnung des Anfragehypergraphen, der Verbundbedingungen und des Fensters Die vom Benutzer eingegebene Universalrelation-Anfrage SELECT Select-Liste WHERE Anfragebedingung; wird gemäß einer Syntax analysiert, die einer SQL-Anfrage mit Ausnahme der FROM-Klausel entspricht. Dabei werden alle vorkommenden Attributnamen auf ihr Vorhandensein im Datenbankschema überprüft und in der Anfrageattributmenge X gespeichert. Die gesamte Universalrelation-Anfrage wird außerdem textuell unverändert für die Erzeugung der SQL-Anfrage gespeichert. Beispiel 1: Wir veranschaulichen den Ablauf anhand von zwei Beispielanfragen an das Universalrelation-System, die wir jeweils mit A und B unterscheiden: A: Man möchte die Titel aller Bücher und die Namen ihrer Autoren wissen, die im Springer-Verlag erschienen sind. SELECT Autorenname, Titel WHERE Verlagsname='Springer'; B: Man möchte die Kennungen aller in der Datenbank geführten Verlage wissen. SELECT DISTINCT ISBN_Code; Die Attribute, die in der Select-Liste vorkommen, bezeichnen wir mit AusgabeAttribut-Liste; denn die Select-Liste kann außer Attributen auch z.B. Konstanten oder Aggregatoperationen enthalten. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 19 1.4.1 Ermittlung des Anfragehypergraphen Zu der beim Einlesen der Anfrage ermittelten Menge von Anfrageattributen X wird jetzt der Anfragehypergraph H berechnet, der den für die Anfrage relevanten Teil des Datenbankschemas darstellt, nämlich genau die Anfrageattribute sowie die für die Verbundbedingungen erforderlichen Attribute enthält. Dazu verwenden wir den GYO-Algorithmus, der ursprünglich als Test auf αAzyklizität und später in modifizierter Form auch für die Anfragebearbeitung benutzt wurde. globale Eingabe: γ-azyklisches Datenbankschema als Attributmenge und Menge der Relationschemas. lokale Eingabe: Menge der Anfrageattribute X. Ausgabe: Anfragehypergraph. Verfahren: Solange sich noch etwas ändert, führe einen der beiden folgenden Schritte aus : 1. Kommt ein Attribut, das nicht in X ist, in höchstens einem Relationschema vor, so lösche das Attribut. 2. Sind alle (nicht bereits gelöschten) Attribute eines Relationsschemas auch in einem anderen Relationschema enthalten, so lösche das kleinere Relationschema. Ergebnis sind die Mengen der nicht gelöschten Attribute und Relationschemas. Satz: Für γ-azyklische Datenbankschemas berechnet der obige, modifizierte GYOAlgorithmus den Anfragehypergraphen. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 20 Beispiel 1: In unserem Beispiel erhält man folgende Anfrageattributmengen und Anfragehypergraphen: A: X = {Autorenname, Titel, Verlagsname} Anfragehypergraph { {ISBN, Titel}Buch, {ISBN, ISBN_Code}wird_verlegt, {ISBN_Code, Verlagsname}Verlag, {ISBN, Autorenname}Autor } Verlagsname Verlag ISBN_Code wird_verlegt ISBN Autorenname Titel Autor Buch B: X = {ISBN_Code} Anfragehypergraph { {ISBN_Code}Verl_Orte, Verlag, wird_verlegt } ISBN_Code {Verl_Orte, Verlag, wird_verlegt} Die Anfrageattribute sind im Anfragehypergraphen fett hervorgehoben. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 21 Aus den Kanten des Anfragehypergraphen kann leider nicht eindeutig auf ein Relationenschema geschlossen werden, aus dem es entstanden ist, z.B. kann die Kante mit dem einzigen Knoten ISBN_Code aus den Relationsschemas Verlag, Verl_Orte oder wird_verlegt entstanden sein. Entsprechend haben wir im letzten Bild die Kanten des Anfragehypergraphen mit der Menge der Kanten des ursprünglichen Hypergraphen bezeichnet, aus denen sie entstanden sein können. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 22 1.4.2 Erzeugen der SQL-Anfrage mit der minimalen Verbindungsemantik Statt genau festzulegen, wie die Universalrelation aussieht, reicht es, für jede Menge X von Attributen, die in einer Anfrage vorkommt, festzulegen, wie das zu X gehörige sog. Fenster der Universalrelation aussieht; dies ist eine Relation über X und wird mit [X] bezeichnet. Wir geben nachfolgend an, wie man ausgehend vom Anfragehypergraphen dieses Fenster berechnet, das wir in den SQL-Kommandos AHG nennen. Bei der minimalen Verbindungssemantik betrachten wir für jede Kante Rk (k=0…m) des Anfragehypergraphen alle Relationen der Datenbank, deren Schema eine Obermenge von Rk ist, berechnen ihre Projektionen auf die Attributmenge Ak von Rk und vereinigen sie. Anschließend fassen wir alle diese Vereinigungen mit dem natürlichen Verbund zusammen. Dieser Verbund erstreckt sich hier über Projektionen von Datenbankrelationen. Formal ist ein Fenster der minimalen Verbindungssemantik definiert als: [X]MC := πX V∈AHG ∪R∈RS,R⊇V πV R º Aus praktischen Erwägungen wird die Bearbeitung der Anfrage an das Universalrelation-System in mehrere Schritte aufgeteilt: 1. Sichten für die Vereinigungen der ∪R∈RS,R⊇V πV R werden erzeugt. 2. Die Verbundbedingungen werden erzeugt und eine Sicht für den Verbund gebildet. 3. Die ursprüngliche, um die FROM-Klausel ergänzte Anfrage, wird gestellt. 4. Die erzeugten Sichten werden wieder gelöscht. Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 23 1. Für jede Kante des Anfragehypergraphen Rk wird eine Sicht Kantek erzeugt, die von allen Relationen ORk,0, …, ORk,nk der Datenbank, deren Schema eine Obermenge von Ak ist, die Projektionen auf Ak berechnet und vereinigt. CREATE VIEW Kantek AS SELECT Ak FROM ORk,0 UNION … UNION SELECT Ak FROM ORk,nk; Beispiel 1: Im unserem Beispiel ist A: A0={Titel, ISBN}, A1={ISBN, ISBN_Code}, A2={ISBN_Code, Verlagsname}, A3={ISBN, Autorenname}; B: A0={ISBN_Code} Unserem erweiterten Anfragehypergraphen kann man ebenfalls die Oberrelationen entnehmen: A: OR0,0=Buch, OR1,0=wird_verlegt, OR2,0=Verlag, OR3,0=Autor; B: OR0,0=Verl_Orte, OR0,1=Verlag, OR0,2=wird_verlegt. Wir erhalten also folgende Definitionen für Sichtrelationen: A: CREATE VIEW Kante0 AS SELECT Titel, ISBN FROM Buch; CREATE VIEW Kante1 AS SELECT ISBN, ISBN_Code FROM wird_verlegt; CREATE VIEW Kante2 AS SELECT ISBN_Code, Verlagsname FROM Verlag; CREATE VIEW Kante3 AS SELECT ISBN, Autorenname FROM Autor; B: CREATE VIEW Kante0 AS SELECT ISBN_Code FROM Verl_Orte UNION SELECT ISBN_Code FROM Verlag UNION SELECT ISBN_Code FROM wird_verlegt Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 24 2. Bezüglich der Sichten Kantek (k=0…m) und deren Attributmengen Ak werden nun die Verbundbedingungen zum Anfragehypergraphen berechnet. Die Verbundbedingungen VB werden stets folgendermaßen erzeugt: Für jedes Attribut A, das in den Relationenschemas (hier: der Sichtrelationen Kante0,…, Kantem) mehrmals vorkommt, also A∈S1, …, A∈Sn mit n≥2, wird folgende Bedingung hinzugefügt: S1.A=S2.A AND S1.A=S3.A AND … AND S1.A=Sn.A. Mit diesen Sichten und Bedingungen wird eine Sicht AHG (als das zum Anfragehypergraphen gehörende Fenster) erzeugt: CREATE VIEW AHG AS SELECT Anfrageattribut-Liste FROM Kante0, …, Kantem WHERE erzeugte_Verbundbedingungen; Beispiel 1: Im unserem Beispiel ist A: CREATE VIEW AHG AS SELECT Verlagsname, Titel, Autorenname FROM Kante0, Kante1, Kante2, Kante3 WHERE Kante0.ISBN=Kante1.ISBN AND Kante0.ISBN=Kante3.ISBN AND Kante1.ISBN_Code=Kante2.ISBN_Code; B: CREATE VIEW AHG AS SELECT ISBN_Code FROM Kante0; Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 25 3. Danach erfolgt die ursprüngliche, um eine FROM-Klausel ergänzte Anfrage an SQL: SELECT Select-Liste FROM AHG WHERE Anfragebedingung; Diese Anfrage wird vom Datenbanksystem bearbeitet und liefert das gewünschte Ergebnis. Beispiel 1: Im unserem Beispiel also A: SELECT Autorenname, Titel FROM AHG WHERE Verlagsname='Springer'; B: SELECT DISTINCT ISBN_Code FROM AHG; 4. Schließich werden alle erzeugten Sichten wieder gelöscht: DROP VIEW Kante0; …; DROP VIEW Kantem; DROP VIEW AHG; Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 26 Die Verwendung von Inline-Views in der FROM-Klausel verringert den Kommunikations- und Organsiationsaufwand mit dem Datenbanksystem. Eine Universalrelation-Anfrage führt dann zu nur einer Datenbank-Anweisung; das Erzeugen und Löschen der Sichten entfällt. Allerdings ist die erzeugte Datenbank-Anweisung schwieriger lesbar. Mit inline-views sehen die Anfragen so aus: A. SELECT Autorenname, Titel FROM (SELECT Verlagsname, Autorenname, Titel FROM (SELECT ISBN, Titel FROM Buch) Kante_0, (SELECT ISBN, ISBN_Code FROM wird_verlegt) Kante_1, (SELECT ISBN_Code, Verlagsname FROM Verlag) Kante_2, (SELECT ISBN, Autorenname FROM Autor) Kante_3 WHERE Kante_0.ISBN=Kante_1.ISBN AND Kante_0.ISBN=Kante_3.ISBN AND Kante_1.ISBN_Code=Kante_2.ISBN_Code ) AHG WHERE Verlagsname='Springer' B. SELECT DISTINCT ISBN_Code FROM (SELECT ISBN_Code FROM (SELECT ISBN_Code FROM wird_verlegt UNION SELECT ISBN_Code FROM Verlag UNION SELECT ISBN_Code FROM Verl_Orte ) Kante_0 ) AHG Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 27 Die innere Projektion auf Attribute der Kanten ist nur notwendig, falls eine Kante aus der Vereingung von mehreren (projizierten) Relationen entsteht (Fall B). Sonst kann man diese Projektion auch dem Oracle-Optimierer überlassen (die Verbundbedingung muss aber unverändert bleiben!): A. SELECT Autorenname, Titel FROM (SELECT Verlagsname, Autorenname, Titel FROM (SELECT ISBN, Titel FROM Buch) Kante_0, (SELECT ISBN, ISBN_Code FROM wird_verlegt) Kante_1, (SELECT ISBN_Code, Verlagsname FROM Verlag) Kante_2, (SELECT ISBN, Autorenname FROM Autor) Kante_3 WHERE Kante_0.ISBN=Kante_1.ISBN AND Kante_0.ISBN=Kante_3.ISBN AND Kante_1.ISBN_Code=Kante_2.ISBN_Code ) AHG WHERE Verlagsname='Springer' A. SELECT Autorenname, Titel FROM (SELECT Verlagsname, Autorenname, Titel FROM Buch Kante_0, wird_verlegt Kante_1, Verlag Kante_2, Autor Kante_3 WHERE Kante_0.ISBN=Kante_1.ISBN AND Kante_0.ISBN=Kante_3.ISBN AND Kante_1.ISBN_Code=Kante_2.ISBN_Code ) AHG WHERE Verlagsname='Springer' A. SELECT Autorenname, Titel FROM (SELECT Verlagsname, Autorenname, Titel FROM Buch, wird_verlegt, Verlag, Autor WHERE Buch.ISBN=wird_verlegt.ISBN AND Buch.ISBN=Autor.ISBN AND wird_verlegt.ISBN_Code=Verlag.ISBN_Code ) AHG WHERE Verlagsname='Springer' Brüggemann, Vorlesungsnotizen zu Datenbanksysteme IIb, Uni Hannover, Sommersemester 2003 28