10.4.2002



Vergleicht man mal eine Rechnung für einen Kunden (wie sie überall vorkommen kann...) und deren Artikel, dann stellt man folgendes fest:

  1. Eine Rechnung enthält viele Artikel
  2. ein Artikel kann aber ebensogut in mehreren Rechnungen enthalten sein.
  3. Ein Kunde kann mehrere Rechnungen bekommen,
  4. aber eine Rechnung bezieht sich nur auf einen einzelnen Kunden.

Zwischen Rechnungen und deren Artikeln besteht einen n:m-Beziehung, zwischen Rechnungen und deren Kunden besteht aber nur eine 1:n-Beziehung. n:m-Beziehungen muss man, wie wir gelernt haben, in 1:n-Beziehungen auflösen.
In einer Kundentabelle werden u.a. folgende Daten beinhaltet:

Kunden
KNR
Firma
Strasse
Ort
...

Die Dateneingabeseite der Kundentabelle könnte so aussehen:

KNR Firma Ort
1 Stromberg Hamburg
2 Müller Bremen
3 Schulz Hamburg

In der Rechnungstabelle werden folgende Daten stehen:

Rechnungen
RNR
RKNR
RDatum
...

Ich werde jetzt nicht alle Rechnungen der jew. Kunden auflisten, aber es sind für jeden Kunden eine... :-)
Zwischen der Kundennummer der Kundentabelle (KNR) und der Rechnungskundennummer (RKNR) besteht eine 1:n-Beziehung.

In der Artikeltabelle stehen folgende Daten:

Artikel
ANR
AName
APreis
...

Wir entwickeln eine Positionen-Tabelle, um die n:m-Beziehung aufzulösen:

Positionen
RNR
ANR
Anzahl
...

Jetzt sind die Schlüssel der Rechnungstabelle und der Artikeltabelle in der Positionentabelle als Fremdschlüssel gespeichert.

Man kann mit der Positionentabelle jetzt folgendes feststellen:
  1. eine Rechnung enthält mehrere Positionen
  2. eine Position bezieht sich auf genau eine Rechnung
  3. ein Artikel kann in mehreren Positionen vorkommen
  4. eine Position enthält genau einen artikel
Zwischen Rechnungen und Positionen besteht eine 1:n-Beziehung, ebenso zwischen Artikel und Positionen.

Schlüsselarten

Es gibt Primärschlüssel (primarykey, PK), Fremdschlüssel (Foreignkey, FK), Schlüsselkandidaten (Candidatekey), Alternativschlüssel (alternativkey), Ersatzschlüssel (surrogatekey) und Sekundärschlüssel (secondarykey).