sql >> Database >  >> RDS >> Mysql

Waarom moet ik een externe sleutel gebruiken als ik WAAR kan gebruiken?

Het is niet strikt nodig voor de query, het is waar. Het bestaat om verschillende redenen:

  1. Als beperking op de tabel om te voorkomen dat u iets invoegt dat nergens naar verwijst;
  2. Als aanwijzing voor de optimizer; en
  3. Om historische redenen waar dat meer nodig was.

(1) is waarschijnlijk de belangrijkste van de drie. Dit heet referentiële integriteit . Het betekent dat als er een waarde in een refererende sleutel is, er een corresponderend record zal zijn met die waarde als primaire sleutel in de bovenliggende tabel.

Dat gezegd hebbende, ondersteunen niet alle databases referentiële integriteit (bijv. MySQL/MyISAM-tabellen) en die welke dat wel doen, dwingen dit niet noodzakelijk af (om prestatieredenen).



  1. Hoe u het huidige Auto_Increment-volgnummer voor MySQL / MariaDB-tabel kunt krijgen

  2. MySQL:efficiënt een tabel vullen binnen een opgeslagen procedure

  3. Hoe kan ik (hoofdletterongevoelig) in een kolom zoeken met LIKE-wildcard?

  4. Toegang krijgen tot MySQL-database vanuit mijn VB.NET 2008-project