Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
METHOD FOR CONTROLLING A RELATIONAL DATABASE SYSTEM
Document Type and Number:
WIPO Patent Application WO/2007/048148
Kind Code:
A1
Abstract:
The invention relates to a method for controlling a relational database system by executing, using a database language, a database inquiry in a relational database which comprises as the assigned data structure a plurality of data tables interlinked by relations, a table of said relations being available. A processable database instruction without relation-specific operations is established by indicating those data tables to which the processing functions should be applied and also indicating the order of the selected data tables which should be used for processing. An access path is determined which concretely specifies an access order to the database. For this purpose, a partial access path is calculated using the table of relations between two successive, selected data tables based on the relations existing between the two successive data tables. The access path is then put together from all the calculated partial access paths.

Inventors:
MOESTL MATTHIAS (AT)
Application Number:
PCT/AT2005/000430
Publication Date:
May 03, 2007
Filing Date:
October 28, 2005
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
MEDIAREIF MOESTL & REIF KOMMUN (AT)
MOESTL MATTHIAS (AT)
International Classes:
G06F17/30
Foreign References:
US20050076045A12005-04-07
US6732091B12004-05-04
US6834287B12004-12-21
US20040220923A12004-11-04
Other References:
CHAUDHURI S ED - ASSOCIATION FOR COMPUTING MACHINERY: "AN OVERVIEW OF QUERY OPTIMIZATION IN RELATIONAL SYSTEMS", PROCEEDINGS OF THE 17TH. ACM SIGACT-SIGMOD-SIGART SYMPOSIUM ON PRINCIPLES OF DATABASE SYSTEMS. PODS 1998. SEATTLE, WA, JUNE 1 -3, 1998, PROCEEDINGS OF THE ACM SIGACT-SIGMOD-SIGART SYMPOSIUM ON PRINCIPLES OF DATABASE SYSTEMS, NEW YORK, NY : ACM, US, 1 June 1998 (1998-06-01), pages 34 - 43, XP000782631, ISBN: 0-89791-996-3
Attorney, Agent or Firm:
ELLMEYER, Wolfgang (Wien, AT)
Download PDF:
Claims:

PATENTANSPRUCH E

1. Verfahren zur Steuerung eines relationalen Datenbanksystems durch Ausführung einer Datenbankanfrage in einer relationalen Datenbank, welche als zugeordnete Datenstruktur eine Vielzahl durch Relationen miteinander verbundene Datentabellen enthält, unter Verwendung einer Datenbanksprache, wobei eine Tabelle der Relationen vorhanden ist,

dadurch gekennzeichnet,

- daß eine abarbeitbare Datenbankanweisung ohne relationenbezogene Operationen erstellt wird, indem jene Datentabellen angegeben werden, auf die Verarbeitungsfunktionen angewandt werden sollen und die Reihenfolge der ausgewählten Datentabellen angegeben wird, mit der die Abarbeitung zu erfolgen hat,

- daß ein Zugriffspfad ermittelt wird, der eine Zugriffsreihenfolge auf die Datenbank konkret vorgibt, indem zunächst über die Tabelle der Relationen zwischen jeweils zwei aufeinanderfolgenden, ausgewählten Datentabellen ein Teilzugriffspfad auf Basis der zwischen den aufeinanderfolgenden Datentabellen vorhandenen Relationen berechnet wird, und dann aus allen errechneten Teilzugriffspfaden der Zugriffspfad zusammengesetzt wird.

2. Verfahren nach Anspruch 1 , dadurch gekennzeichnet, daß in der Tabelle der Relationen alle der abgefragten Datenbank zugeordneten Datenstruktur entsprechenden Relationen sowie gegebenenfalls frei generierte Relationen enthalten sind.

3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß zur Ermittlung der Teilzugriffspfade- die Tabelle der Relationen in einen auf der Graphentheorie basierenden Graphen eingelesen und unter Zuhilfenahme des gebildeten Graphen die Teilzugriffspfade berechnet werden.

4. Verfahren nach Anspruch 1 , 2 oder 3, dadurch gekennzeichnet, daß anhand des Zugriffspfades relationenorientierte Operationen in die Datenbankanweisung eingesetzt werden.

5. Verfahren nach Anspruch 1 , 2 oder 3, dadurch gekennzeichnet, daß der ermittelte Zugriffspfad in der Datenbankanweisung separiert angegeben wird, der schrittweise auf die Datentabellen verweist, und zum Zugriff auf die Datenbank diesen Verweisen auf die Datentabellen schrittweise gefolgt wird.

6. Verfahren nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet,

- daß in einer Datenbankanweisung für eine erste Datenbank mit einer ersten zugeordneten Datenstruktur die zugehörigen ersten relationenorientierten Operationen entfernt werden,

- daß in die von den ersten Relationen befreite Datenbankanweisung zweite relationenorientierte Operationen eingefügt werden, welche zweite relationenorientierte Operationen einer zweiten Datenstruktur, die einer zweiten Datenbank zugeordnet sind, entsprechen,

- daß die Durchführung der Abfrage auf Basis der mit den zweiten relationenorientierten Operationen versehenen Datenbankanweisung durchgeführt wird, indem unter Verwendung der zugehörigen Tabelle der zweiten Relationen die Teilzugriffspfade ermittelt und zu einem Zugriffspfad zusammengesetzt werden.

7. Relationales Datenbanksystem, welches ein Computersystem mit einer relationalen Datenbank, eine Datenverarbeitungseinheit und einen Speicher umfaßt, wobei die Datenverarbeitungseinheit nach dem Verfahren nach einem der

Ansprüche 1 bis 6 arbeitet.

8. Datenträger mit einer mit in einer Datenbanksprache angegebenen Datenbankanweisung zur Steuerung und zum Einlesen in ein relationales Datenbanksystem nach Anspruch 7, dadurch gekennzeichnet, daß die auf dem Datenträger vorliegende Datenbankanweisung ohne relationenbezogene Operationen erstellt ist, indem jene Datentabellen angegeben sind, auf die Verarbeitungsfunktionen angewandt werden sollen und die Reihenfolge der ausgewählten Datentabellen angegeben ist, mit der die Abarbeitung zu erfolgen hat, und daß ein Zugriffspfad auf dem Datenträger enthalten ist, der eine Zugriffsreihenfolge auf die Datenbank konkret vorgibt, der ermittelt wird, indem zunächst über die Tabelle der Relationen zwischen jeweils zwei aufeinanderfolgenden, ausgewählten Datentabellen ein Teilzugriffspfad auf Basis der zwischen den aufeinanderfolgenden Datentabellen vorhandenen Relationen berechnet wird, und dann aus allen errechneten Teilzugriffspfaden der Zugriffspfad zusammengesetzt wird.

9. Datenträger nach Anspruch 8 und zum Einlesen in ein relationales Datenbanksystem nach Anspruch 7, dadurch gekennzeichnet, daß der Datenträger Datenbankanweisungen enthält, in die ein nach dem Verfahren nach Anspruch 1 bis 6 ermittelter Zugriffspfad eingesetzt worden ist, der zur Steuerung des Datenbanksystems durch die Datenbankanweisung zum Zugriff auf die relationale Datenbank verwendet wird.

10. Datenträger nach Anspruch 8 und zum Einlesen in ein relationales Datenbanksystem nach Anspruch 7, dadurch gekennzeichnet, daß der Zugriffspfad, der zur Steuerung des Datenbanksystems durch die Datenbankanweisung zum Zugriff auf die relationale Datenbank verwendet wird, separiert auf dem Datenträger angegeben ist, und der Zugriffspfad schrittweise auf die Datentabellen verweist, und zum Zugriff auf die Datenbank diesen Verweisen auf die Datentabellen schrittweise gefolgt wird.

11. Computerprogramm, das Instruktionen aufweist, die zur Durchführung des Verfahrens nach einem der Ansprüche 1 bis 6 eingerichtet sind.

12. Computerprogrammprodukt welches ein computerlesbares Medium mit Computerprogramm-Code-Mitteln aufweist, bei dem jeweils nach Laden des Computerprogramms ein Computer durch das Programm zur Durchführung des Verfahren nach einem der Ansprüche 1 bis 6 veranlaßt wird.

13. Computerprogrammprodukt, welches ein Computerprogramm auf einem elektronischen Trägersignal aufweist, bei dem jeweils nach Laden des Computerprogramms ein Computer durch das Programm zur Durchführung des Verfahrens nach einem der Ansprüche 1 bis 6 veranlaßt wird.

Description:

Verfahren zur Steuerung eines relationalen Datenbanksystems

Die Erfindung betrifft ein Verfahren zur Steuerung eines relationalen Datenbanksystems durch Ausführung einer Datenbankanfrage in einer relationalen Datenbank, welche als zugeordnete Datenstruktur eine Vielzahl durch Relationen miteinander verbundene Datentabellen enthält, unter Verwendung einer Datenbanksprache, wobei eine Tabelle der Relationen vorhanden ist.

Das Konzept der relationalen Datenbank zeichnet sich durch erhöhte Anwenderfreundlichkeit, Trennung von Programm und Daten, Tabellenstruktur und Datenintegrität durch Redundanzverminderung gegenüber anderen Datenbanken aus.

Es hat mehrere Versuche für Datenbankabfragesprachen, die auf dem Modell der relationalen Datenbank beruhen, gegeben, von denen sich SQL als am besten verwendbar herausgestellt hat. Alle anderen Ansätze wie OLAP, OQL und TSQL wurden im Verlauf der Zeit in den SQL-Standard integriert.

In der Praxis hat es sich als nachteilig herausgestellt, daß die Abfragen nur auf eine konkrete Datenstruktur der verwendeten Datenbank im gerade vorhandenen Zustand bezogen sind. Sobald eine änderung an der Datenstruktur vorgenommen wird, hat dies änderungen bei der Abfrage zur Folge. Die gleiche Abfrage für eine bestimmte Datenstruktur sieht daher für eine andere Datenstruktur mitunter vollkommen anders aus.

Das Hauptelement einer SQL-Abfrage wird in vielen Fällen , durch relationenorientierte Operationen, wie Projektion, Verbund (Join) oder Selektion oder mengenorientierte Operationen, wie Mengenvereinigung, Mengenschnitt oder Mengendifferenz gebildet. Dabei kommt praktisch immer zumindest die Bildung eines kartesischen Produktes von Datentabellen und Einschränkungen unter Zuhilfenahme der Relationenangabe zur Anwendung.

Im nachfolgend angegebenen Beispiel 1 wird der Einfluß der Datenstruktur auf die Formulierung der Abfrage verdeutlicht.

Beispiel 1 :

Ausgabe aller Firmen aus Wien, sortiert nach Firmennamen, deren Abteilungen und deren Kontaktpersonen

Datenstruktur 1:

Relationen: Firmen <-> Abteilungen <-> Kontaktpersonen

SEELECT Firmen.*, Abteilungen.*, Kontaktpersonen.* Verarbeitungsfunktion

FROM Firmen, Abteilungen, Kontaktpersonen kart. Produkt; Relationenangabe

WHERE (Firmen. FirmalD = Abteilungen. FirmaNr) Relationenangabe

AND (Abteilungen.AbteilungID = Kontaktpersonen.AbteilungNr) Relationenangabe

AND (Firmen. Ort = „Wien") Verarbeitungsfunktion

ORDER BY Firmen. Name Verarbeitungsfunktion

Datenstruktur 2:

Relationen: Firmen <-> Geschäftsbereich <-> Abteilungen <-> Kontaktpersonen

SELECT Firmen.*, Abteilungen. * , Kontaktpersonen.* Verarbeitungsfunktion

FROM Firmen, Geschäftsbereich, Abteilungen, Kontaktpersonen kart. Produkt; Relationenangabe

WHERE ( Firmen. FID = Geschäftsbereich. FNr) Relationenangabe

AND (Geschäftsbereich. BereichID = Abteilungen. BereichNr) Relationenangabe

AND (Abteilungen. AID = Kontaktpersonen.ANr) Relationenangabe

ORDER BY Firmen. Name Verarbeitungsfunktion

Wie zu ersehen ist, liegen je nach Datenstruktur jeweils Relationen vor, die für jede Datenbankanweisung (Statement) immer wieder neu angegeben werden müssen, wodurch sich eine Abhängigkeit von der Datenstruktur ergibt.

Ziel der Erfindung ist es, ein Verfahren zu schaffen, mit dem die Abhängigkeit der Datenbankanweisung von der Datenstruktur beseitigt und eine Vereinfachung für den Anwender erreicht wird.

Weiteres Ziel ist es, eine Verkürzung der Schreibweise zu ermöglichen, wodurch die übersichtlichkeit der Anfragen stark verbessert wird.

Weiteres Ziel der Erfindung ist es, ein eingangs erwähntes Verfahren anzugeben, mit dem gleichzeitig auf unterschiedliche bestehende Datenstrukturen zugegriffen werden kann, und zwar mit Statements, die nur für eine bestimmte Datenstruktur geschrieben wurden.

Erfindungsgemäß wird dies dadurch erreicht,

- daß eine abarbeitbare Datenbankanweisung ohne relationenbezogene Operationen erstellt wird, indem jene Datentabellen angegeben werden, auf die Verarbeitungsfunktionen angewandt werden sollen und die Reihenfolge der ausgewählten Datentabellen angegeben wird, mit der die Abarbeitung zu erfolgen hat,

- daß ein Zugriffspfad ermittelt wird, der eine Zugriffsreihenfolge auf die Datenbank konkret vorgibt, indem zunächst über die Tabelle der Relationen zwischen jeweils zwei aufeinanderfolgenden, ausgewählten Datentabellen ein Teilzugriffspfad auf Basis der zwischen den aufeinanderfolgenden Datentabellen vorhandenen Relationen berechnet wird, und dann aus allen errechneten Teilzugriffspfaden der Zugriffspfad zusammengesetzt wird.

Durch das Weglassen der relationenbezogenen Operationen wird die Datenbankanweisung einerseits verkürzt und dadurch für den Anwender übersichtlich und andererseits in einer von der zugrunde liegenden Datenstruktur unabhängigen Form angegeben, wodurch sich bei der Erstellung und Abarbeitung Geschwindigkeitsvorteile ergeben. Unter Zuhilfenahme der für jede Datenstruktur bekannten Tabelle der Relationen wird der Zugriffspfad, welcher die Zugriffsreihenfolge auf die Datenbank bestimmt, berechnet und kann entweder für die Generierung eines SQL-Statements herangezogen oder direkt für die

Abarbeitung herangezogen werden.

In der Tabelle der Relationen sind alle der abgefragten Datenbank zugeordneten Datenstruktur entsprechenden Relationen enthalten und es können weiters frei generierte Relationen enthalten sein.

Eine mögliche Ausführungsform des erfindungsgemäßen Verfahrens kann darin bestehen, daß zur Ermittlung der Teilzugriffspfade die Tabelle der Relationen in einen auf der Graphentheorie basierenden Graphen eingelesen und unter Zuhilfenahme des gebildeten Graphen die Teilzugriffspfade berechnet werden. Damit kann das erfindungsgemäße Bestimmen des Zugriffspfades durch Anwenden einer an sich bekannten Methode auf einfache Weise durchgeführt werden.

Eine weitere Ausbildung der Erfindung kann darin bestehen, daß anhand des Zugriffspfades relationenorientierte Operationen in die Datenbankanweisung eingesetzt werden. Die eingesetzten relationenorientierten Operationen können dabei so beschaffen sein, daß dadurch die erfindungsgemäße Datenbankanweisung mittels eines Programms in ein gültiges SQL-Statement umgewandelt wird, wodurch dem Anwender, insbesondere bei unübersichtlichen Abfragen, die Mühe erspart bleibt, die gesamte SQL-Datenbankanweisung selbst zu erstellen und anzugeben.

Gemäß einer alternativen Ausführungsform des erfindungsgemäßen Verfahrens kann der ermittelte Zugriffspfad in der Datenbankanweisung separiert angegeben werden, der schrittweise auf die Datentabellen verweist, und zum Zugriff auf die Datenbank diesen Verweisen auf die Datentabellen schrittweise gefolgt wird. Dabei wird die abarbeitbare Datenbankanweisung und der ermittelte Zugriffspfad für die Anfrage direkt verwendet.

Wenn unterschiedliche Datenstrukturen vorliegen, so kann gemäß einer weiteren Ausführungsform der Erfindung eine Umwandlung der für eine Datenstruktur gültigen Datenbankanweisung in eine solche für eine andere Datenstruktur dadurch

geschehen,

- daß in einer Datenbankanweisung für eine erste Datenbank mit einer ersten zugeordneten Datenstruktur die zugehörigen ersten relationenorientierten Operationen entfernt werden,

- daß in die von den ersten Relationen befreite Datenbankanweisung zweite relationenorientierte Operationen eingefügt werden, welche zweite relationenorientierte Operationen einer zweiten Datenstruktur, die einer zweiten Datenbank zugeordnet sind, entsprechen,

- daß die Durchführung der Abfrage auf Basis der mit den zweiten relationenorientierten Operationen versehenen Datenbankanweisung durchgeführt wird, indem unter Verwendung der zugehörigen Tabelle der zweiten Relationen die Teilzugriffspfade ermittelt und zu einem Zugriffspfad zusammengesetzt werden.

Insbesondere bei Großanwendern kann auf diese Weise eine kosteneffiziente Zusammenführung von bereits bestehenden Anfrage-Statements für eine bestimmte Datenstruktur mit Statements für eine andere Datenstruktur durchgeführt werden.

Alle vorgenannten Ausführungsformen des erfindungsgemäßen Verfahrens eignen sich in gleichem Maße auch zur programmtechnischen Einrichtung eines relationalen Datenbanksystems, welches ein Computersystem mit einer relationalen Datenbank, eine Datenverarbeitungseinheit und einen Speicher umfaßt, wobei die Datenverarbeitungseinheit nach dem erfindungsgemäßen Verfahren arbeitet.

Ein solches Computerprogramm kann dabei in jeder Form vorliegen, insbesondere aber auch als Computerprogrammprodukt auf einem computerlesbaren Medium, wie etwa Diskette, CD oder DVD, wobei es Computerprogramm-Code-Mittel aufweist, bei dem jeweils nach Laden des Computerprogramms ein Computer durch das Programm zur Durchführung des Verfahrens zur Erzeugung eines erfindungsgemäßen Datenträgers oder elektronischen Trägersignals veranlaßt wird. Es kann aber etwa auch als Computerprogrammprodukt, welches ein Computerprogramm auf einem elektronischen Trägersignal aufweist, bei dem jeweils

nach Laden des Computerprogramms ein Computer durch das Programm zur Durchführung des erfindungsgemäßen Verfahrens veranlaßt wird, vorliegen.

Die erfindungsgemäße Aufgabenstellung wird somit auch durch einen Datenträger, oder in äquivalenter Weise durch ein elektronisches Trägersigna!, zum Einlesen in ein relationales Datenbanksystem gelöst, bei dem die auf dem Datenträger vorliegende Datenbankanweisung ohne relationenbezogene Operationen erstellt ist, indem jene Datentabellen angegeben sind, auf die Verarbeitungsfunktionen angewandt werden sollen und die Reihenfolge der ausgewählten Datentabellen angegeben ist, mit der die Abarbeitung zu erfolgen hat, und daß ein Zugriffspfad auf dem Datenträger enthalten ist, der eine Zugriffsreihenfolge auf die Datenbank konkret vorgibt, der ermittelt wird, indem zunächst über die Tabelle der Relationen zwischen jeweils zwei aufeinanderfolgenden, ausgewählten Datentabellen ein Teilzugriffspfad auf Basis der zwischen den aufeinanderfolgenden Datentabellen vorhandenen Relationen berechnet wird, und dann aus allen errechneten Teilzugriffspfaden der Zugriffspfad zusammengesetzt wird.

Eine weitere Ausführungsform eines erfindungsgemäßen Datenträgers, der Datenbankanweisungen enthält, kann darin bestehen, daß in die Datenbankanweisungen ein nach dem erfindungsgemäßen Verfahren ermittelter Zugriffspfad eingesetzt worden ist, der zur Steuerung des Datenbanksystems durch die Datenbankanweisung zum Zugriff auf die relationale Datenbank verwendet wird.

Alternativ dazu kann der Datenträger zum Einlesen in ein erfindungsgemäßes relationales Datenbanksystem so beschaffen sein, daß der Zugriffspfad, der zur Steuerung des Datenbanksystems durch die Datenbankanweisung zum Zugriff auf die relationale Datenbank verwendet wird, separiert auf dem Datenträger angegeben ist, und der Zugriffspfad schrittweise auf die Datentabellen verweist, und zum Zugriff auf die Datenbank diesen Verweisen auf die Datentabellen schrittweise gefolgt wird.

Ferner betrifft die Erfindung ein Computerprogramm, das Instruktionen aufweist, die zur Durchführung des erfindungsgemäßen Verfahrens eingerichtet sind.

Weiters betrifft die Erfindung ein Computerprogrammprodukt, welches ein computerlesbares Medium mit Computerprogramm-Code-Mitteln aufweist, bei dem jeweils nach Laden des Computerprogramms ein Computer durch das Programm zur Durchführung des erfindungsgemäßen Verfahrens veranlaßt wird.

Die Erfindung betrifft schließlich auch ein Computerprogrammprodukt, welches ein Computerprogramm auf einem elektronischen Trägersignal aufweist, bei dem jeweils nach Laden des Computerprogramms ein Computer durch das Programm zur Durchführung des erfindungsgemäßen Verfahrens veranlaßt wird.

Nachstehend wird die Erfindung anhand der in den Zeichnungen dargestellten Anwendungsbeispiele eingehend erläutert. Es zeigt

Fig.1 eine schematische Darstellung eines geordneten Baumes für die Anwendung des erfindungsgemäßen Verfahrens auf ein Anfragebeispiel (Beispiel 1);

Fig.2 eine schematische Darstellung eines geordneten Baumes für die Ermittlung des Zugriffspfades durch das erfindungsgemäßen Verfahrens in einem weiteren

Anfragebeispiel (Beispiel 2);

Fig.3 eine graphische Darstellung einer beispielhaften Tabelle der Relationen für eine erste Datenstruktur;

Fig.4 eine graphische Darstellung einer beispielhaften Tabelle der Relationen für eine zweite Datenstruktur und

Fig.5 eine erweiterte Tabelle der Relationen für ein weiteres Beispiel zur Anwendung des erfindungsgemäßen Verfahrens.

Die Hauptaufgaben eines Datenbänksystems sind das Speichern und Verwalten von Daten und das Bereitstellen von Daten durch Datenbankabfragen.

Die Erfindung bezieht sich dabei auf relationale Datenbanksysteme, die unter Verwendung einer Datenbanksprache einen Zugriff auf die in einer Datenbank

gespeicherten Daten ermöglichen. In den gezeigten Ausführungsbeispielen wird die weit verbreitete Datenbanksprache SQL verwendet, die Erfindung ist aber nicht auf die Verwendung derselben beschränkt.

In jeder relationalen Datenbank existiert eine zugeordnete Datenstruktur in Form einer Vielzahl durch Relationen miteinander verbundenen Datentabellen. Darunter werden in Spalten und Zeilen organisierte Daten verstanden, wie sie nachfolgend beispielhaft in den Tabellen 1 bis 10 angegeben sind.

Im Rahmen der Beschreibung wird unter dem Begriff „Zeilenrelation" jeweils die Zeilen einer Tabelle verstanden, also für z.B. Tabelle 1 Firmen(FirmalD; Name, Straße, PLZ, Ort, AnzMitarbeiter) und für Tabelle 2 Abteilungen (AbteilungID, FirmaNr, Abteilungsname). Als „Relationen" werden hingegen die Verbindungen zwischen jeweils zwei Datentabellen über jeweils zumindest ein Schlüsselfeld, also z.B. 1 :n; Firmen (Firmald) <-> Abteilungen (FirmaNr) bezeichnet. Die Spalte Firmald in der Tabelle Firmen (Tabelle 1) ist ein Primärschlüssel, für den es in der Tabelle Abteilungen (Tabelle 2) in der Spalte FirmaNr beliebig viele Werte geben kann.

Für jede Datenstruktur ist eine Tabelle der Relationen vorhanden, in der alle der abgefragten Datenbank zugeordneten Datenstruktur entsprechenden Relationen sowie gegebenenfalls frei generierte Relationen enthalten sind.

In der vorgenannten Datenstruktur der Datentabellen 1 bis 10 (Tabelle 1 bis 10) läßt sich z.B. die folgende Aufgabe formulieren, aus der ersichtlich ist, welch komplexe Fragestellungen mit dem erfindungsgemäßen Verfahren bewältigt werden können. Im nachfolgenden Beispiel wird auf diese Datenstruktur Bezug genommen.

Beispiel 2:

Alle Firmen und deren diesjähriger Veranstaltungsgesamtumsatz anzeigen, aber nur für jene, mit denen heuer zumindest zehn Kontakte geführt wurden und in Marketingabteilungen heuer zumindest drei Veranstaltungen mit über 50 EURO an Umsatz für Speisen und Getränke gebucht wurden.

Beim erfindungsgemäßen Verfahren werden im wesentlichen die folgenden Schritte ausgeführt.

1) Angeben einer abarbeitbaren Datenbankanweisung ohne relationenbezogene Operationen

2) Ermitteln eines Zugriffspfades

Dies erfolgt im einzelnen wie folgt:

ad 1) Verarbeitungsfunktionen und Datentabellen und deren Spalten angeben, auf die die Verarbeitungsfunktionen angewandt werden sollen und die Reihenfolge sowie die Hierarchiestufe, mit der die Abarbeitung zu erfolgen hat.

SELECT Verarbeitungsfunktion

Firmen Datentabelle, auf die Verarbeitungsfunktioη angewandt werden soll

Alle Spalten (.*)...Spalten, auf die Verarbeitungsfunktion angewandt werden soll

Alle Spalten der Tabelle „Firmen" angeben

Für jede selektierte Firma die Summe aller Positionsbeträge aus der zugehörigen

Spalte der Tabelle „Rechnungspositionen" bestimmen unter der Einschränkung des Veranstaltungsjahres (heuer).

Erfindungsgemäßes Erstellen der Datenbankanweisung führt daher zu:

SELECT Firmen. * ,

(SELECT SUM (Rechnungspositionen. Positionsbetrag) WHERE (Veranstaltungen.VADatum=date.year) ) WHERE (SELECT COUNT(Kontakte. * )

WHERE (Kontakte. Kontaktdatum=date.year) )> = 10 AND (SELECT COUNT(Veranstaltungen.*)

WHERE (Abteilungen.Abteilungsname= „Marketing")

AND (SELECT SUM (Rechnungspositionen. Positionsbetrag)

WHERE (Zusatzrechnungspositionennamen. Positionsname

IN ("Speisen", "Getränke")) ) >50

AND (Veranstaltungen.VADatum = date.year ) ) >=3

[„Date.year" ersetzt dabei BETWEEN 01.01. aktuelles Jahr AND 31.12. aktuelles Jahr]

In dieser Anfrage sind nur die Tabellen ohne Relationen enthalten, auf welche Verarbeitungsfunktionen angewandt werden sollen. Damit liegt Unabhängigkeit von jedweder Datenstruktur vor und es ergibt sich zugleich eine Verkürzung der. Schreibweise und somit eine Erhöhung der übersichtlichkeit. So fallen z.B. sonst übliche kartesische Produktbildungen, welche durch Relationen eingeschränkt sind, weg, weil im Statement alle Informationen vorhanden sind, die in Kombination mit der Tabelle der Relationen für die Ermittlung eines Zugriffspfades der jeweiligen Datenstruktur verwertet werden können, sodaß zum einen Unabhängigkeit von der

konkreten Datenstruktur gegeben ist und zum anderen die Eingabe der Anfrage für den Anwender verkürzt und sich nur auf das Wesentliche beschränkt, was wiederum die übersichtlichkeit erhöht.

ad 2) Aufgrund der Fragestellung ergibt sich in der Anfrage (Statement) bedingt durch die auszuführenden Unterabfragen (SUBSELECT) eine natürliche Reihenfolge der verwendeten Datentabellen sowie Hierarchiestufen, aus denen unter Zuhilfenahme der Tabelle der Relationen (Tabelle 11) Teilzugriffspfade für die Generierung eines SQL-Statements für die jeweilige Datenstruktur ermittelt werden.

Die oben genannten Reihenfolge und die Hierarchiestufen der verwendeten Datentabellen werden vorzugsweise in Form eines geordneten Baumes 7 (Fig.1) dargestellt, der eine Wurzel 10 und Knoten 11 , 12, 13 und 14 enthält, wobei der Knoten 14 ein Unterknoten zum Knoten 13 ist.

Die Wurzel 10 des geordneten Baumes 7 enthält als Informationsfeld 21 alle Namen der Datentabellen nur der übergeordneten Anfrage z.B. in Form einer Liste oder eines Arrays, und zwar praktischerweise in der im Statement angegebenen Reihenfolge, optional ohne doppelte Datentabellen-Namen. Für die Wurzel 10 beinhaltet das Informationsfeld 21 die Datentabelle FIRMEN (Tabelle 1). Der Wurzel 10 untergeordnet sind Unterabfragen (SUBSELECT) und deren untergeordnete Unterabfragen (SUBSELECT im SUBSELECT), die als Knoten 11 , 12, 13, 14 in die Baumstruktur eingetragen sind. Die Informationsfelder 22, 23, 24, 25 der Knoten 11 , 12, 13, 14 enthalten die den Unterabfragen zugeordneten Namen der Datentabellen, die im jeweiligen SUBSELECT angegeben wurden, ebenfalls z.B. in Form einer Liste oder eines Arrays. Für den Knoten 13 sind dies die Datentabellen VERANSTALTUNGEN (Tabelle 5), ABTEILUNGEN (Tabelle 2) und VERANSTALTUNGEN (Tabelle 5) im Informationsfeld 24. Das SUBSELECT des Knotens 13 enthält gemäß der Fragestellung ein weiteres SUBSELECT durch den Knoten 14, der seinerseits in seinem Informationsfeld die Datentabellen

RECHNUNGSPOSITIONEN (Tabelle 9) und

ZUSATZRECHNUNGSPOSITIONENNAMEN (Tabelle 10) beinhaltet.

Dieser Baum 7 wird in einem Preorder-Durchlauf durchlaufen: Knoten 10, Knoten 11 , Knoten 12, Knoten 13 und Knoten 14.

Als Hierarchiestufen lassen sich die nachfolgend angegebenen darstellen.

Stufe 1 Firmen

Wurzel 10, übergeordnete Abfrage

Stufe 1.1 Rechnungspositionen, Veranstaltungen

Knoten 11 , Unteranfrage im SELECT-Teil der Hauptanfrage

Stufe 1.2 Kontakte, Kontakte

Knoten 12, Unteranfrage im WHERE-Teil der Hauptanfrage

Stufe 1.3 Veranstaltungen, Abteilungen, Veranstaltungen

Knoten 13, Unteranfrage AND-Teil der Hauptanfrage

Stufe 1.3.1 Rechnungspositionen, ZusatzRechnungspositionsnamen

Knoten 14, Unteranfrage in der Unteranfrage AND

Nunmehr erfolgt die Zugriffspfadermittlung, die eine Zugriffsreihenfolge auf die Datenbank konkret vorgibt, indem über die Tabelle der Relationen zwischen jeweils zwei aufeinanderfolgenden, ausgewählten Datentabellen ein Teilzugriffspfad auf Basis der zwischen den aufeinanderfolgenden Datentabellen vorhandenen Relationen berechnet wird, und aus allen errechneten Teilzugriffspfaden der Zugriffspfad zusammengesetzt wird.

Dabei zu berücksichtigen ist, daß durch den Wegfall jeglicher Produktbeschreibungen im Statement (FROM-Teil) die angegebene Datentabellen-

Reihenfolge mit Verarbeitungsfunktionen ein doppeltes oder mehrfaches Durchlaufen von Teilzugriffspfaden ergeben kann, woraus bei der kartesischen Produktbildung gleiche Datentabellen fälschlicherweise mehrfach einbezogen würden, was ein falsches Anfrageergebnis zur Folge hätte.

Anhand des mit der oben angegebenen Tabelle der Relationen (Tabelle 11) ermittelten Zugriffspfades können nun relationenorientierte Operationen in die erfindungsgemäß (Beispiel 2) angegebene Datenbankanweisung eingesetzt werden, wodurch folgendes SQL-Statement herauskommt, (die eingesetzten Operationen sind kursiv gesetzt) welches von jedem den SQL-Standard unterstützenden Datenbanksystem verarbeitet werden kann. Eine mögliche Form der Berechnung wird anschließend erläutert.

SELECT Firmen.*,

(SELECT SUM (Rechnungspositionen. Positionsbetrag)

FROM Abteilungen, Kontaktpersonen, Veranstaltungen, Rechnungen, Rechnungspositionen

WHERE (Firmen. FirmalD=Abteilungen. FirmaNr)

AND (Abteilungen. AbteilunglD=Kontaktpersonen.AbteilungNr)

AND (Kontaktpersonen. KontaktpersonlD=Veranstaltungen.KontaktpersonNr)

AND (Veranstaltungen. VeranstaltunglD=Rechnungen. VeranstaltungNr)

AND (Rechnungen. RechnunglD=Rechnungspositionen.RechnungNr)

AND (Veranstaltungen.VADatum=Date.Year)

)

FROM Firmen WHERE (SELECT Count(Kontakte. * )

FROM Abteilungen, Kontaktpersonen, Kontakte

WHERE (Firmen. Firma! D= Abteilungen. FirmaNr)

AND (Abteilungen. AbteilunglD=Kontaktpersonen.AbteilungNr)

AND (Kontaktpersonen. KontaktpersonlD=Kontakte.KontaktpersonNr)

AND (Kontakte. Kontaktdatum = Date.Year)

) >= 10

AND (SELECT Count(Veranstatungen.*)

FROM Abteilungen, Kontaktpersonen, Veranstaltungen WHERE (Firmen.FirmalD=Abteilungen. FirmaNr)

AND (Abteilungen. AbteilunglD=Kontaktpersonen.AbteilungNr)

AND (Kontaktpersonen. KontaktpβrsonlD=Veranstaltungen.KontaktpersonNr) ,

AND (Abteilungen.Abteilungsname="Marketing")

AND (SELECT Sum(Rechnungspositionen. Positionsbetrag)

FROM Rechnungen, Rechnungspositionen, ZusatzRechnungspostionenNamen WHERE (Veranstaltungen. VeranstaltunglD=Rechnungen. VeranstaltungNr) AND (Rechnungen. RechnunglD=Rechnungspositionen.RechnungNr) AND(Rechnungspositionen.PositionNr=ZusatzRechnungspostionenN amen.PositioniD) AND (ZusatzRechnungspostionenNamen. Positionsname

IN („Speisen", "Getränke") ) ) > 50)

AND (Veranstaltungen.VADatum=date.year) ) >= 3

Aus der Länge des auf diese Weise gewonnenen Statements im Vergleich zu dem in Schritt 1) erstellten ist klar zu ersehen, welche Vorteile hinsichtlich Kürze und übersichtlichkeit aber insbesondere Unabhängigkeit von der Datenstruktur erzielt werden können.

Wird das Statement als Anfrage gespeichert, so kann die erfindungsgemäße Schreibweise und die generierte Schreibweise übernommen werden und eine Neuberechnung fällt weg. Eine solche wird nur bei änderungen der Datenstruktur oder an derselben bzw. am Statement selbst durchgeführt. Dadurch fällt die sehr geringe Zeitspanne für die Umwandlung in ein SQL-Statement weg. Weitere Optimierungen liegen im Bereich des Fachwissens.

Eine andere Möglichkeit wäre, daß der ermittelte Zugriffspfad in der Datenbankanweisung separiert angegeben wird, der, schrittweise auf die Datentabellen verweist, und zum Zugriff auf die Datenbank diesen Verweisen auf die Datentabellen schrittweise gefolgt wird. So ergibt sich z.B.

WAY Firmen

-> Abteilungen WHERE (Firmen. FirmalD=Abteilungen.FirmaNr)

-> Kontaktpersonen WHERE (Abteilungen.AbteilunglD=Kontaktpersonen.AbteilungNr) -> Veranstaltungen

WHERE (Kontaktpersonen. KontaktpersonlD=Veranstaltungen.KontaktpersonNr) -> Rechnungen WHERE (Veranstaltungen. VeranstaltunglD=Rechnungen. VeranstaltungNr) -> Rechnungspositionen

WHERE (Rechnungen. RechnunglD=Rechnungspositionen. RechnungNr) -> ZusatzRechnungspostionenNamen

WHERE (Rechnungspositionen. PositionNr=ZυsatzRechnungspostionenNamen.PositionlD) Kontaktpersonen -> Kontakte

WHERE (Kontaktpersonen. KontaktpersonlD=Kontakte.KontaktpersonNr) SELECT Firmen.*,

(SELECT SUM (Rechnungspositionen. Positionsbetrag) WHERE (Veranstaltungen.VADatum=date.year) ) WHERE (SELECT COUNT(Kontakte.*)

WHERE (Kontakte. Kontaktdatum=date.year) )> = 10 AND (SELECT COUNT(Veranstaltungen.*)

WHERE (Abtei!ungen.Abteilungsname= „Marketing")

AND (SELECT SUM (Rechnungspositionen. Positionsbetrag)

WHERE (Zusatzrechnungspositionennamen. Positionsname

IN ("Speisen", "Getränke")) ) >50

AND (Veranstaltungen.VADatum = date.year ) ) >=3

Dadurch fällt die Eingliederung in das Statement weg, der Zugriffspfad verweist schrittweise auf die Datentabellen. Diesen Verweisen wird zum Zugriff auf die Datenbank schrittweise gefolgt. ' '

Ein möglicher Algorithmus zur Ermittlung des Zugriffspfades unter Zuhilfenahme des geordneten Baumes, wie er in Fig.1 angegeben ist, wird - um das Verständnis zu erleichtem und nicht von Tabellennamen usw. abzulenken - nachfolgend anhand

einer einfachen Datenstruktur gezeigt. Dabei ist hervorzuheben, daß dieser angegebene Algorithmus nur einer von vielen ist, die für die Berechnung angewandt werden können.

Generell werden bei der Ermittlung des Gesamtzugriffspfades doppelt angegebene Teilpfade gestrichen.

Z.B. Datentabellen A, B, C, D, E, F, G, H

Informationsfeld einer Wurzel des geordneten Baumes beinhaltet z.B. : A, C, F, B. Als Teilpfade ergeben sich somit

Teilpfad AC: A B C Teilpfad CF: C D E F Teilpfad FB: F E D C B

Unbereinigter Gesamtpfad daher: A B C D E F E D C B

Wie ersichtlich ist E D C B doppelt angegeben und daher zu streichen

Richtiger Gesamtpfad somit: A B C D E F

Unter der Annahme einer konkret vorliegenden Baumdarstellung, wie sie in Fig.2 gezeigt ist, wird nunmehr eine von vielen Möglichkeiten angegeben, wie die Zugriffspfadberechnung gemäß erfindungsgemäßem Verfahren und übersetzung in ein SQL-Statement durch Anwendung folgender Schritte durchgeführt werden kann.

Es liegen Datentabellen A, B, C, D, E in einer Datenstruktur vor.

Aus der der Darstellung in Fig.2 zugrunde liegenden Anfrage, die der besseren übersichtlichkeit wegen nicht angegeben ist, ergibt sich folgende Baumstruktur.

Wurzel (Knoten) 101 mit Informationsfeld 201 , welches C 1 A 1 D enthält

Knoten 102 mit Informationsfeld 202, welches G 1 E enthält " Knoten 103 mit Informationsfeld 203,welches F 1 I 1 G enthält Knoten 104 mit Informationsfeld 204,welches K 1 H 1 K 1 B enthält Knoten 105 mit Informationsfeld 205,welches G 1 D enthält

Die der gewählten Datenstruktur zugehörige Tabelle der Relationen verbindet dabei zur einfacheren Darstellung vereinfacht jeweils alphabetisch aufeinanderfolgende Datentabellen durch jeweils ein gemeinsames Relationenfeld, somit A<->B, B <-> C 1

C<->D, Folgende Relationenfelder werden, wie aus Tabelle 12 (Tabelle der

Relationen) hervorgeht, angenommen.

Tabelle A Spalten a, z1 Tabelle B Spalten b, a1 Tabelle C Spalten c, b1 Tabelle D Spalten d, d

Der für eine bestimmte Anfrage erstellte geordnete Baum wird in einer sogenannten Preorder-Reihenfolge durchlaufen, indem ausgehend von einem ersten Knoten, der Wurzel 101 des geordneten Baumes 107 sämtliche weitere Knoten 102, 103, 104, 105 entsprechend der Hierarchiestufen durchlaufen werden.

Stufe 1 C, A 1 D

Wurzel (Knoten) 101

Stufe 1.1 E, G

Knoten 102

Stufe 1.2 F, I, G

Knoten 103

Stufe 1.2.1 K,H,K,B

Knoten 104

Stufe 1.3 G, D

Knoten 105

Wie erwähnt, ist in Fig.2 eine Baumdarstellung einer nicht näher angegebenen Anfrage abgebildet. Die Wurzel 101 (oberster Knoten) enthält im Informationsfeld 201 eine Liste oder einen Array od.dgl. aller in der Hierarchiestufe 1 der übergeordneten Anfrage enthaltenen Datentabellen-Namen, wobei in der nicht angegebenen Anfrage - wie oben beschrieben - nur die Datentabellen genannt wurden, auf die Verarbeitungsfunktionen angewandt werden. Die Reihenfolge der angegebenen Datentabellen ist dabei C, A, D.

In der darauffolgenden Hierarchiestufe 1.1 ist für jede Unteranfrage der übergeordneten Anfrage jeweils ein Knoten 102, 103, 105 angelegt worden, der als Informationsfeld 202, 203, 205 die in dieser Unteranfrage verwendeten Datentabellen-Namen als Liste, Array od. dgl. beinhaltet. Die Reihenfolge ist für 102 z.B. G 1 E, für 103 z.B. F 1 I 1 G u.s.w.

Die Hierarchiestufe 1.2.1 stellt die Unteranfrage zur Unteranfrage 1.2 (Knoten 103) dar, die wiederum als Informationsfeld 204 die dafür verwendeten Datentabellen-

Namen K, H, K, B enthält.

Innerhalb eines Knotens, wobei in der Wurzel 101 begonnen wird, ist jeweils die Liste der Datentabellen z.B. im Informationsfeld 201 die Datentabellen C, A, D zu durchlaufen und es werden für jeweils zwei in der Liste aufeinanderfolgende Datentabellen die Teilzugriffspfade berechnet, wobei, wie bereits vorstehend beschrieben, mehrfache Durchläufe eliminiert werden, um unnötige Produktbildungen, welche ein falsches Produkt zur Folge haben, zu vermeiden.

Dabei ist zu beachten: Ein Knoten, der direkt unter einem anderen Knoten liegt, heißt (direkter) Nachfolger dieses Knotens. Umgekehrt heißt dieser andere Knoten direkter Vorgänger.

Wurde die Liste des Informationsfeldes eines Knotens komplett durchlaufen, wird der in der Preorder-Reihenfolge nächste Knoten gesucht. Zwischen der ersten Datentabelle der Liste des Informationsfeldes dieses nächsten Knotens und der letzten Datentabelle der Liste des Informationsfeldes seines direkten Vorgängers wird der Teilzugriffspfad ermittelt, danach wird die Liste dieses nächsten Knotens bis zur letzten Datentabelle, wie vorstehend beschrieben durchlaufen. Z.B.

Knoten 104:

Durchlauf der Liste der Datentabellen im Informationsfeld 204:

K, H, K, B

Preorder-mäßig nächster Knoten ist der Knoten 105, dessen direkter Vorgänger aber ist Knoten 101 , daher wird die Verbindung zwischen G (Knoten 105) und D (Knoten 101) gesucht und der Teilzugriffspfad errechnet. Danach erfolgt der Durchlauf der Datentabellen G, D im Informationsfeld 205 im Knoten 105 des Baumes 107.

Nach oder während des Durchlaufs eines jeden Knotens werden wie bereits erwähnt doppelte Teilzugriffspfade entfernt, dabei werden alle doppelten oder mehrfachen

Datentabellen-Namen und Relationsangaben für den jeweiligen Knoten oder einer seiner Vorgänger bis einschließlich Wurzel verworfen.

Für die Berechnung jedes einzelnen Teilzugriffspfades wird z.B. wie folgt vorgegangen.

Zunächst wird die Tabelle der Relationen (Tabelle 12) in z.B. einen Graphen eingelesen, wobei die Kanten des Graphen jeweils auch die Relationen- Bedingungen enthalten, um unter Zuhilfenahme der Graphentheorie Verbindungen zwischen jeweils zwei Datentabellen über die Relationen zu ermitteln.

Für Stufe 1 ergibt sich daher im ersten Schritt C -> A als Pfad zwischen C und A als Ergebnis der z.B. kürzesten Weg-Berechnung folgende Liste:

Tabellen Relationen-Bedingungen

C B b1 b

B A a1 a

Darauffolgend A -> D ist der Pfad A, B, C, D

Tabellen Relationen-Bedingungen

A B a a1

B C b b1

C D c d

Damit ist die Liste des Informationsfeldes 201 des ersten Knoten 101 durchlaufen, jetzt erfolgt die Bereinigung wertgleicher Zeilen, das Ergebnis wird in einen String umgewandelt und in das SQL-Statement an richtiger Stelle eingefügt. (NACH DEM SELECT und VOR DEM WHERE)

Für Stufe 1 ergibt sich folgender String: FROM A, B, C, D

WHERE (A.a = B.a1) AND (B. b = C.b1) AND (Cc = D.d)

Damit ist man an das Ende der Liste des aktuellen Knotens, hier die Wurzel, angelangt. Als nächster Schritt wird festgestellt, ob es Vorgängerknoten gibt. Im Fall der Wurzel trifft dies definitionsgemäß nicht zu.

Zusammenfassend werden daher folgende Schritte ausgeführt:

Informationsfeld 201 von Knoten 101 C -> A A -> D

Ergibt: FROM A, B, C, D WHERE (A.a = B.a1) AND (B.b = C.b1) AND (Cc = D.d)

Nächster Knoten: 102, Vorgänger-Knoten 101 erstes Datentabelle aktueller Knoten und letzte Datentabelle Vorgänger-Knoten

D -> G

Durchlaufen der Liste

G -> E

Ergibt: FROM E, F, G WHERE (D.d = E.d1) AND (E.e = F.e1) AND (F.f = G.f1)

Nächster Knoten: 103, Vorgänger-Knoten 101 erstes Datentabelle aktueller Knoten und letzte Datentabelle Vorgänger-Knoten

D -> F

Durchlaufen der Liste

F -> l

I -> G

Ergibt: FROM E, F, G, H, I

WHERE (D.d=E.d1) AND (E.e=F.e1) AND (F.f=G.f1) AND (G.g=H.g1 ) AND

(H.h=l.h1)

Nächster Knoten: 104, Vorgänger-Knoten 103 erstes Datentabelle aktueller Knoten und letzte Datentabelle Vorgänger-Knoten

G -> K

Durchlaufen der Liste

K -> H

H -> K

K -> B

Ergibt: FROM J, K WHERE (Li = J.i1) AND (J.j = K.J1)

Nächster Knoten: 105, Vorgänger-Knoten 101 erstes Datentabelle aktueller Knoten und letzte Datentabelle Vorgänger-Knoten

D -> G

Durchlaufen der Liste

G -> D

Ergibt: FROM E, F, G

WHERE (D.d = E.d1) AND (E.e = F.e1) AND (F.f = G.f1)

Eine Anwendung des erfindungsgemäßen Verfahrens kann darin bestehen, daß zu

einer bestehenden Datenstruktur verschiedene Statements existieren, die für eine andere Datenstruktur nicht anwendbar sind, da andere Relationen zwischen den Datentabellen bestehen. In der Praxis tritt dieses Problem häufig beispielsweise bei Firmenfusionen oder bei Datenkonvertierung im Zusammenhang eines Wechsels von einem Programmhersteller zum anderen oder bei Datenstrukturänderungen, die aufgrund von Geschwindigkeitsverlusten vorgenommen werden, auf.

Da die Erfindung es ermöglicht, eine Datenbankanweisung ohne Datenstrukturbezug zu erstellen, kann folgendermaßen vorgegangen werden.

In einer Datenbankanweisung werden für eine erste Datenbank mit einer ersteh zugeordneten Datenstruktur die zugehörigen ersten relationenorientieren Operationen entfernt.

In die von den ersten relationenorientierten Operationen befreite Datenbankanweisung werden zweite relationenoriente Operationen eingefügt, welche einer zweiten Datenstruktur, die einer zweiten Datenbank zugeordnet sind, entsprechen,

Nun kann die Abfrage auf Basis der mit den zweiten relationenorientierten Operationen versehenen Datenbankanweisung durchgeführt werden, indem unter Verwendung der zugehörigen Tabelle der zweiten Relationen die Teilzug riffspfade ermittelt und zu einem Zugriffspfad zusammengesetzt werden.

SELECT A. *

FROM A

WHERE ( (SELECT Count(C.*) FROM B, C WHERE (A.a = B.a1) AND (B.b = C.b1) AND (CFeIdI = 100)

) > 20)

AND (A.Feld1 = 40)

Entfernt wird: FROM A Entfernt wird: FROM B, C

Und daher alle Relationen A - B und B - C und A - C, die in der Tabelle der

Relationen gefunden werden also A.a = B.b1 und B.b = C.b1

Bleibt als erfindungsgemäßes Statement:

SELECT A. *

WHERE ( (SELECT Count(C.*)

WHERE (CFeIdI = 100) ) > 20) AND (A. FeIdI = 40)

Auf dieses Statement kann das erfindungsgemäße Verfahren mit einer neuen Tabelle der Relationen angewandt werden.

Um den Einfluß der Datenstruktur auf die Datenbankanweisung zu veranschaulichen, sind in Fig.3 und in Fig.4 nochmals schematisch zwei unterschiedliche Tabellen der Relationen graphisch für eine Datenstruktur 3 und für eine Datenstruktur 4 gezeigt, für welche dieselbe Anfrage ausgeführt werden soll.

In Fig.5 ist dazu die Tabelle der Relationen für die Datenstruktur 4 gemäß Fig.4 in einer erweiterten Form angegeben. Zusätzlich zu den üblichen Relationen zwischen Datentabellen sind in der rechten Spalte frei vergebbare Namen oder Makrocodes angegeben, welche anstelle der in der linken Spalte angegebenen Datentabellen bei Aufruf gesetzt bzw. durchgeführt werden. Im Zusammenhang mit dem Erfindungsprinzip wird dadurch eine noch größere Unabhängigkeit von der Datenstruktur erreicht, da Tabellennamen und Tabellenfelder berechnet werden

können oder mit anderen Namen versehen werden können.

Erweiterte Tabelle der Relationen für Datenstruktur 4 in Fig.5:

Hier werden Alias-Tabellen-Namen und Alias-Feldnamen bekannt gegeben und auch Informationen, die die Aufteilung von Tabellen betreffen, z.B. Firmen. Ort

Beispiel 3:

Alle Firmen mit mind. 3 Kontaktpersonen in der Marketing-Abteilung

Erfindungsgemäß werden zunächst für eine beispielhafte Anwendung die gemäß der Anfrage benötigten Datentabellen und Verarbeitungsfunktionen angegeben

SELECT Firmen.* WHERE (

(SELECT Count(Kontaktpersonen.*)

WHERE (Abteilungen. Name = „Marketing") ) >= 3)

Für die Datenstruktur 3 und die Datenstruktur 4 ergeben sich bei Ausführung des erfindungsgemäßen Verfahrens entsprechend unterschiedliche SQL-Statements

Mit Datenstruktur 3:

SELECT Firmen.* FROM Firmen WHERE (

(SELECT CountO

FROM Abteilungen, Kontaktpersonen WHERE (Firmen. FirmalD=Abteilungen.FirmaNr) AND (Abteilungen.AbteilunglD=Kontaktpersonen.AbteilungNr) AND (Abteilungen. Name="Marketing")

) >= 3)

Mit Datenstruktur 4:

SELECT Firmen.* FROM Firmen WHERE (

(SELECT CountO

FROM Kontaktpersonen, Abteilungsnamen WHERE (Firmen. FirmalD=Kontaktpersonen.FirmaNr) AND (Kontaktpersonen.AbteilungNr=Abteilungsnamen.AbteilunglD) AND (Abteilungsnamen. Bezeichnung="Marketing")

) >= 3)