-
Липсата на действително ограничение може да доведе до счупени препратки, невалидни родители и други видове несъответствия на данните. Не съм експерт по Django, но бих се осмелил да предположа, че в повечето случаи Django все пак ще се справи добре с отношенията, освен ако не добавите целенасочено някои невалидни записи.
-
Обикновено, ако вашата RDBMS поддържа ограничения за външни ключове, няма абсолютно никаква причина да не ги използвате и потенциално може да се счита за недостатък на дизайна, ако ги игнорирате.
-
Трябва да помислите за добавяне на ключови ограничения. Те не само дават на вашата СУБД добра представа как да оптимизирате заявките, но също така осигуряват последователност във вашите данни. Почти съм сигурен, че Django има настройка някъде, която автоматично ще генерира SQL, за да добави ключовите ограничения, когато стартирате
manage.py syncdb
За повече информация защо трябва да предпочитате външни ключове, трябва да прочетете Документация за външни ключове на MySQL
Най-интересното: