1. Was ist ein constraint ?
Ein constraint ist ein logischer - vom Anwender/Programmierer/SAP-Kundenbetreuer gebildeter, willkürlicher - Zusammenhang zwischen einer mehrfachen logischen Bedingung und einer im constraint definierten Aktion bei Zutreffen dieser Bedingung.
Der Zweck eines constraints ist das Verhindern von bestimmten, nicht genehmen Werten in bestimmten Feldern, bzw. das gezielte Einsteuern von Werten in einzelne Recordfelder einer Tabelle bei Vorliegen von vorher (eben im constraint) definierten Bedingungen.
Ein constraint sagt tatsächlicherweise folgendes aus: Falls DIES [und DIES oder DIES ...] wahr ist, dann tu DAS [und DAS und DAS] .
2. Was ist ein foreign key ?
Ein foreign key ist ein Fremdkey, der aus einer anderen Tabelle stammt, im Rahmen der Normalisierung einer Datenbank zerlegt man die Daten z.B. in Artikel(nummern und -daten), Lieferanten(namen und -adressen) und benutzt diese foreign keys - also die Artikelnummer bzw. den Lieferantennamen in einer weiteren Tabelle, um eine Bestellung gespeichert in der gleichen Datenbank vorzuhalten.
Wenn ich nun die Daten des Lieferanten haben möchte - ich denke hier z.B. an eine Telefonnummer oder halt an die Adressfelder wie die Straße, die Postleitzahl, den Ort oder auch andere DATEN-Felder der Tabelle Lieferant - muß ich mit dem sogenannten 'foreign key'-Feld aus der Tabelle Bestellung, eben dem Tabellenfeld Lieferantenname, lesend auf die Daten des entsprehenden Lieferanten zugreifen, und die erhaltenen Daten in eine Bildschirmmaske oder einen Druckbereich programmtechnisch einsteuern.
Mit anderen Worten läßt sich sagen, daß die Tabelle Bestellung u.a. zwei Felder besitzt: Artikelnummer + Lieferantenname. Beide Felder sind nicht nur Felder der Tabelle Bestellung sondern eben in dieser Funktion parallel und zusätzlich 'foreign key'-Felder ... der ganze Witz bei einer relationalen Datenbank.
Ich benutze also die Artikelnummer als Keyfeld in der Tabelle Bestellung. Kommen tut die Artikelnummer (das ist der foreign key in der Tabelle Bestellung, das Feld Lieferantenname ist übrigens ein weiterer foreign key) aber aus einer fremden (=foreign table) Tabelle - konkret aus der Tabelle Artikel.
Um zu den Artikel-DATEN zu kommen, muß ich ein SELECT * FROM Artikel WHERE Artikelnummer = Artikelnummer der Bestellung ausführen und die erhaltenen Datenbankfelder des Records in die vorgesehenen Felder des Bildschirmbereichs /Druckbereichs stellen.
Das gleiche muß man mit den Lieferanten-DATEN machen. Zuerst die Daten lesen, dann die Felder versorgen.
3. Was ist ein Index ?
Ein Index ist eine Kurzform einer Tabelle in einer bestimmten Reihenfolge sortiert.
Was heißt das ?
Ich habe die Felder Nachname, Vorname, VSNR, Adresse, Beruf.
Jetzt kann ich mehrere Indices erzeugen (CREATE INDEX ...)
Index 1: Nachname + Vorname (nicht unique, es können duplicates bzw. auch duplicate entries also doppelte Einträge vorkommen: z.B. Müller Werner)
Index 2: Nachname + Vorname + VSNR (=Sozialvers.-nummer). Dieser Index (=Schlüssel, =Key) ist eher schon - will sagen MUSS sein ... was ? ... Unique bzw. "eindeutig".
Index 3: VSNR
Index 4: Vorname
Was ist der Zweck eines Indices ?
1. Punktgenauer Zugriff auf Daten. D.h. es ist kein komplettes Durchlesen der Datentabelle notwendig, weil man den Index benutzt um die Position des Datentabellenrecords zu erhalten und dann die Information enthält. Das Beschleunigen des Lesevorgangs passiert implizit, also automatisch, je nach Gegebenheit. Habe ich einen entsprechenden Index, muß die SQL-Datenbankengine keinen "full table scan" ausführen, sondern kann den Index benutzen um GEZIELT zu den Datenfeldern (=zum Datenrecord) zu kommen.
2. Sortiertes Lesen innerhalb einer Tabelle um alle Lieferanten von B bis Q auszudrucken, zu mahnen etc, etc !
Ich hoffe, es ist alles halbwegs verständlich gewesen.
mfg
Kikakater
|