Cytat(Wilk002 @ 15.02.2010, 22:29:16 )

W dwóch słowach klucz obcy jest kluczem podstawowym innej tabeli.
Zazwyczaj, ale niekoniecznie.
Tak jak Wilk pisze, klucze obce wiążą ze sobą (tworzy relacje) tabele w bazie danych (relacyjnej, bo takie bazy danych tworzymy w MySQL).
http://www.centrumxp.pl/dotNet/299,1,06_Kl...wne_i_obce.aspx(Uwaga, artykuł o MSSQL - podstawy teoreryczne te same, szczegóły implementacji mogą być inne)
Aplikacje pisane w PHP rzadko korzystają z kluczy definiowanych w samej bazie danych (przez klauzulę FOREGIN KEY), ale tą samą funkcjonalność mają zazwyczaj zapisaną w samym kodzie aplikacji. Wynika to z tego, że wciąż bardzo popularnym silnikem bazodanowym w MySQL jest MyISAM, który tej klauzuli nie obsługuje (obsługuje klauzulę REFERENCES, ale ma ona funkcję czysto dokumentacyjną). Dopiero InnoDB (inny silnik dostępny w MySQL) daje rozbudowane funkcjonalności kluczy obcych, takie jak kaskadowe uaktualnienia, czy kasowania.