-
Não ter uma restrição real pode levar a referências quebradas, pais inválidos e outros tipos de inconsistências de dados. Eu não sou um especialista em Django, mas eu arriscaria um palpite de que na maioria dos casos o Django ainda lidará bem com as relações, a menos que você adicione propositalmente alguns registros inválidos.
-
Normalmente, se o seu RDBMS suporta restrições de chave estrangeira, não há absolutamente nenhuma razão para não usá-las, e pode ser considerado uma falha de design ignorá-las.
-
Você deve considerar adicionar as principais restrições. Eles não apenas dão ao seu DBMS uma boa ideia de como otimizar as consultas, mas também garantem consistência em seus dados. Tenho certeza de que o Django tem uma configuração em algum lugar que gerará automaticamente o SQL para adicionar as restrições de chave quando você executarmanage.py syncdb
Para obter mais informações sobre por que você deve preferir chaves estrangeiras, leia o Documentação de chave estrangeira do MySQL
O mais interessante: