Nachfolgend eine kurze Übersicht der von uns verwendeten Begriffe.
Tabelle /
Table
In einer relationalen Datenbank werden die Daten in
Tabellen gespeichert.
Eine Datenbanktabelle ist eine Menge von
Daten, die in Spalten und Zeilen einer Tabelle strukturiert sind. Dabei
legen die Spalten fest, was in der Tabelle gespeichert wird. In den Zeilen
liegen dann die einzelnen Datensätze.
Die Tabelle besteht also
aus:
-
Struktur - Spalten
-
Inhalt - Zeilen
Spalte /
Column
Ein vertikaler Eintrag einer Tabelle wird Spalte (engl.
column) genannt. Eine Column wird oft auch als Attribut bezeichnet. Man
unterscheidet zwischen identifizierenden (Schlüssel) und beschreibenden
Attributen.
Die Spalten einer Tabelle haben u.a. folgende
Eigenschaften:
Zeile / Row
Ein
horizontaler Eintrag einer Tabelle wird Zeile (engl. row) genannt und
entspricht einem einzelnen Datensatz. (Oft auch Tupel genannt.)
Jede
Zeile (Datensatz, Tupel) besteht aus einer Reihe von Attributwerten, den
Spalten der Tabelle.
Schlüssel / Primary-Key
oder Foreign-Key
Jeder Datensatz in einer Relationalen Datenbank
muss durch einen eindeutigen Schlüssel identifizierbar sein. Ein Schlüssel
kann dabei aus einer oder mehreren Spalten (Attribut) bestehen. Meist wird
als Schlüssel eine fortlaufende Nummerierung verwendet. Dieser Wert wird
dann als Primärschlüssel (Primary-Key oder PK) bezeichnet. Ein
Fremdschlüssel (Foreign-Key oder FK) ist eine Spalte in einer Tabelle,
welche auf einen Primärschlüssel einer anderen Tabelle verweist.
(Beziehung/Relation)
Beispiel:
Tabelle: SalDocItem enthält den FK SalDocItem.SalDocInternalNo
SalDocItem.SalDocInternalNo verweist auf die Tabelle SalDoc, welche als PK SalDoc.InternalNo enthält.
SalDocItem.SalDocInternalNo (FK) -->> SalDoc.InternalNo (PK)
Beziehungen /
Relations
In einer relationalen Datenbank werden nur Daten, aber
keine Beziehungen (engl. relation) abgelegt. Die Beziehungen werden durch
das Vergleichen von Primary-Key und Foreign-Key in den verschiedenen
Tabellen hergestellt. Hierbei spielt die Art der Beziehung eine zentrale
Rolle.
Wir unterscheiden zwischen folgenden Beziehungen:
-
Einfache Beziehung (1:1)
Jeder Datensatz aus Tabelle A
entspricht genau einem Datensatz aus Tabelle B.
-
Konditionelle Beziehung (1:0 oder 1:1)
Jeder Datensatz
aus Tabelle A entspricht keinem, oder genau einem Datensatz aus
Tabelle B.
-
Multiple Beziehung (1: >=1)
Jeder Datensatz aus
Tabelle A entspricht einem oder mehreren Datensätzen aus Tabelle
B.
-
Multiple konditionelle Beziehung (1:n)
Jeder Datensatz
aus Tabelle A entspricht keinem, einem, oder mehreren Datensätzen aus
Tabelle B.
Sicht / View
Eine
Sicht (View) ist eine virtuelle Tabelle, welche eine physische Tabelle
oder einen Teil davon repräsentiert. Diese wird eingesetzt um die
Formulierung von Abfragen zu vereinfachen. Der Datenbankbenutzer kann eine
View wie eine normale Tabelle abfragen. Eine View stellt im Wesentlichen
einen Alias für eine Abfrage dar.
Index
Ein Index
ist eine von der Datenstruktur getrennte Indexstruktur, welche die Suche
und das Sortieren nach bestimmten Feldern beschleunigt. Ein Index besteht
aus einer Ansammlung von Zeigern (Verweisen) die eine Ordnungsrelation auf
eine oder mehrere Spalten in einer Tabelle definieren.
SQL (Structured Query
Language)
SQL teilt sich in vier Sprachkomponenten
auf:

Query in
OpaccERP ist Bestandteil der DML und stellt Funktionen für das Lesen
(SELECT) von Daten zur Verfügung.
Vergleich von
SQL-Select und Query-Abfrage
Die Query-Abfrage bzw. der
Query-Service verwendet bestimmte Argumente welche dann in SQL-spezifische
Anweisungen "übersetzt" werden.
Diese Argumente zeigen sich in einer
eigenen "Syntax" des Query-Service.
Einfaches SQL
Select-Statement:
SELECT M01.Addr.FirstName, M01.Addr.LastName
from M01.Addr
WHERE M01.Addr.LastName like 'Vonwil'
Dieselbe Abfrage als
Query:
Query
Main=Addr
MaxRows=All
Columns=Addr.FirstName,Addr.LastName
Filter=Addr.LastName like 'Vonwil'
Dieselbe Abfrage als Query in
F-Script (XQRY):
«XQRY(reqQuery:clear)»
«XQRY(reqQuery:addArg=Main=Addr)»
«XQRY(reqQuery:addArg=MaxRows=All)»
«XQRY(reqQuery:addArg=Columns=Addr.FirstName,Addr.LastName)»
«XQRY(reqQuery:addArg=Filter=Addr.LastName like 'Vonwil')»
«nXQRY(reqQuery:execute>resQuery)\A»