Ein Fremdschlüssel ist ein Attribut oder eine Attributkombination einer Tabelle, die auf einen Primärschlüssel einer anderen oder der gleichen Tabelle verweist. Er dient als Verweis zwischen zwei Tabellen, d. h. er zeigt an, welche Tupel der Tabelle inhaltlich miteinander in Verbindung stehen.
Doch für was muss, bzw. soll man einen Fremdschlüssel überhaupt definieren? Durch das bestimmen eines Fremdschlüssels kann die Datenbank die eingegebenen Daten überprüfen und bei einer Verletzung diese ablehnen und verwerfen. Weiter ist kaskadiertes Löschen bzw. Updaten bei den meisten Datenbanksystemen dadurch möglich. Für Fremdschlüssel können z.B. zusätzlich Constraints (deutsch „Zwangsbedingungen“) im Schema definiert werden. Die wichtigste Bedingung ist in diesem Zusammenhang die Referentielle Integrität.
„Die referentielle Integrität (auch Beziehungsintegrität) besagt, dass Attributwerte eines Fremdschlüssels auch als Attributwert des Primärschlüssels vorhanden sein müssen.“ (http://www.wirtschaftsinformatik-24.de/datenbanken/referentielle-integritaet.php)
Das Schema für Tabellen und ihre Beziehungen wird in der Data Definition Language (DDL) definiert. Dies Beinhaltet auch die Regeln zur Integrität wie z.B. die Referentielle Integrität.
Beispiel eines Schemas in DDL inklusive Fremdschlüssel und referentielle Integrität:
CREATE TABLE `salon` (`idsalon` INT NOT NULL AUTO_INCREMENT ,`name` VARCHAR(45) NOT NULL ,PRIMARY KEY (`idsalon`) )
CREATE TABLE `mitarbeiter` (`idmitarbeiter` INT NOT NULL AUTO_INCREMENT ,`nachname` VARCHAR(45) NOT NULL , `vorname` VARCHAR(45) NOT NULL ,`idsalon` INT NOT NULL ,PRIMARY KEY (`idmitarbeiter`) ,CONSTRAINT `fksalon`FOREIGN KEY (`idsalon` ) REFERENCES `friseursalon`.`salon` (`idsalon` ) ON DELETE NO ACTION ON UPDATE NO ACTION)