No MySQL Server 3.23.44 e posterior, tabelas
          InnoDB suportam verificação de
          restrição de chaves estrangeiras, incluindo
          CASCADE, ON DELETE, e
          ON UPDATE. See
          Secção 7.5.5.2, “Restrições FOREIGN KEY”.
        
          Para outros tipos de tabela, o MySQL Server atualmente apenas
          analisa a sintaxe de FOREIGN KEY no comando
          CREATE TABLE, mas não usa/armazena esta
          informação. Em um futuro próximo esta implementação será
          estendida para que assim a informação seja armazenada num
          arquivo de especificação de tabela e possa ser recuperado
          por mysqldump e ODBC. Em um estágio
          posterior, restrições de chaves estrangeiras serão
          implementadas para tabelas MyISAM.
        
          Note que as chaves estrangeiras no SQL não são usadas para
          ligar tabelas, mas são usadas para verificar a integridade
          referencial. Se você deseja obter resultados de múltiplas
          tabelas de uma instrução SELECT, você
          pode fazer isto ligando tabelas:
        
SELECT * FROM table1,table2 WHERE table1.id = table2.id;
          See Secção 6.4.1.1, “Sintaxe JOIN”. See
          Secção 3.6.6, “Utilizando Chaves Estrangeiras”.
        
          Quando usada como uma restrição, FOREIGN
          KEYs não precisa ser usado se a aplicação insere
          duas linhas em tabelas MyISAM na ordem
          apropriada.
        
          Para tabelas MyISAM, você pode contornar a
          falta de ON DELETE adicionando a
          instrução DELETE apropriada a uma
          aplicação quando você deletar registros de uma tabela que
          tem uma chave estrangeira. Na prática isto é mais rápido e
          muito mais portável que utilizar chaves estrangeiras.
        
          No MySQL Server 4.0 você pode utilizar deleções
          multi-tabela para apagar linha de muitas tabelas com um
          comando. See Secção 6.4.5, “Sintaxe DELETE”.
        
          A sintaxe FOREIGN KEY sem ON
          DELETE ... é usada geralmente por aplicacões ODBC
          para produzir cláusulas WHERE
          automáticas.
        
Note que chaves estrangeiras são mal usadas com frequência, o que pode causar graves problemas. Mesmo quando usado apropriadamente, o suporte a chaves estrangeiras não é uma solução mágica para o problema de integridade referêncial, embora possa ajudar.
Algumas vantagens das chaves estrangeiras:
Assumindo o projeto apropriado das relações, as restrições de chaves estrangeiras tornarão mais difícil para um programador introduzir uma inconsistência no banco de dados.
Usar atualizações e deleções em cascata pode simplificar o código do cliente.
Regras de chaves estrangeiras projetados apropriadamente ajudam ao documentar a relação entre as tabelas.
Desvantagens:
Erros, que são facéis de se ter ao projetar a relação das chaves, podem causar graves problemas¯por exemplo, regras circulares ou a combinação errada de uma deleção em cascata.
Verificação adicional no banco de dados afeta o desempenho, por esta razão algumas das principais aplicações comerciais codificam sua lógica no nível da aplicação.
Não é incomum para um DBA fazer uma topologia complexa de relações que torna muito difícl, e em alguns casos impossível, fazer backup ou restaurar tabelas individuais.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

