Fremd & Primärschlüssel?

5 Antworten

Ich will das mal im Zusammenhang mit einem Beispiel bringen:

Ich habe eine Tabelle rechnungen. Die einzelnen Positionen beziehen sich auf einen Artikel in der Tabelle artikel mit dem Primärschlüssel artikel-nr und auf einen Kunden in der Tabelle kunden mit dem Primärschlüssel kunden-nr. Was ist nun, wenn in der Rechnungstabelle eine Artikel- oder eine Kunden-Nr steht, die es in der Artikel- bzw. Kundentabelle gar nicht gibt? Die Integrität der Datenbank wäre dann nicht mehr gegeben. Um diesen Zustand zu verhindern, bietet die Datenbank eine Option an: Man kann beim Einrichten der Tabelle rechnungen die Primärschlüssel von artikel und kunden jeweils als Fremdschlüssel festlegen. Damit überwacht die Datenbank die Integrität, indem einerseits Einträge mit unbekannten Artikeln und Kunden abgelehnt werden und anderseits das Entfernen von Artikeln bzw. Kunden zurückgewiesen wird, wenn in der Rechnungstabelle Bezug darauf genommen wird.

Dabei gibt es 3 Modi der Realisierung:

restrict bedeutet generell nicht gestattet.

cascade bedeutet, dass beim Entfernen eines Artikels oder Kunden aus der jeweiligen Tabelle alle Sätze auch in der Rechnungstabelle mitgelöscht werden, die sich darauf beziehen.

setnull bedeutet, dass beim Löschen eines Artikels oder Kunden in der jeweiligen Tabelle in der Rechnungstabelle die betreffenden Verweise auf null gesetzt werden (geht nicht, wenn not null für das Feld spezifiziert wurde).

Die Verwendung von Fremdschlüsseln ist allgemein nicht zwingend. Das gilt auch für Primärschlüssel, nur gibt es da kaum Anwendungsfälle. Bestimmte vereinfachte Datenbankmodelle, wie sie im Informatikunterricht gelehrt werden, setzen die Verwendung dieser Schlüssel voraus. In der Praxis sind Anwendungen einerseits oft komplexer als solche Schulbeispiele, anderseits bietet die Datenbank auch weit mehr Möglichkeiten (z.B. bei Verknüpfungen) zur Realisierung an als das, was in Informatik gelehrt wird. 

Primärschlüssel können auch aus mehreren Feldern zusammengesetzt sein, sog. Verbundschlüssel oder compound key. Als Fremdschlüssel können diese genauso verwendet werden. Im Beispiel der Rechnungstabelle bestünde der Primärschlüssel in der syntaktisch korrekten Schreibweise aus (rechnungs-nr, kunden-nr, artikel-nr) und wäre damit eindeutig.  


Sollte sich die Frage auch Access beziehen lautet die Antwort, dass der Primärschlüssel einmaliges und unverwechselbares Sortierkennzeichen ist. Den Fremdschlüssel bezieht man für eine Verknüpfung aus einer anderen Tabelle. Es kann sich um den Primärschlüssel der anderen Tabelle handeln.

Sollte ich am Thema vorbeierklärt haben, liegt das an deiner Fragestellung. Etwas mehr Informationen wären hilfreich.


asdfghjkl26 
Beitragsersteller
 23.03.2015, 16:15

Dankeschön :)

0

Ja es geht um Datenbanken besser gesagt um Normalisierung. Ich habe in der Schule einen Informationsblatt bekommen & lese gerade dass es 3 Normalformen gibt. Die 1te Normalform ist ja einfach zu verstehen aber bei der 2ten Normalform steht dass ich die Tabellen sinnvoll gliedern sollte. Bis dahin ist alles sehr einfach zu verstehen. Und dann kommt direkt der satz den ich nicht verstehe aber es später richtig anwenden muss. Der satz lautet : " Jede Tabelle erhält einen Primärschlüssel und die zusammengehörigen Tabellen werden mit Fremdschlüssel verknüpft" . Ich komme ab da gar nicht mehr weiter :-(

Ein Primärschlüssel identifiziert eindeutig einen Datensatz einer Tabelle. Ein Fremdschlüssel referenziert einen Primärschlüssel einer anderen Tabellen.

Woher ich das weiß:Studium / Ausbildung – Fachinformatiker - Anwendungsentwicklung

grtgrt  23.03.2015, 16:11

Mit anderen Worten: Tritt in einem Datensatz aus Tabelle A ein Wert auf, der gleich dem Wert des Primärschlüssels eines Datensatzes aus Tabelle B sein muss, so nennt man den Wert (in Tabelle A) einen Fremdschlüsselwert.

0

Ich nehme an, es geht um Datenbanken? Google nach "Schlüssel (Datenbanken)", da wird's hervorragend erklärt!