Эта функция была отмечена как WONTFIX в 2013 Trac Django: http://code.djangoproject.com/ticket/1199
Если вы не выполняете огромное количество операций вставки за раз, как, например, в хранилище данных, используйте внешние ключи . Нормализация масштабируется как сумасшедшая, и вы должны воспользоваться этим. Внешние ключи работают быстро, и ограничение действительно сдерживает вас, только если вы вставляете миллионы и миллионы записей за раз.
Убедитесь, что вы используете целочисленные ключи с кластеризованным индексом. Это должно сделать соединение стола очень быстрым. Проблемы, которые вы можете решить без внешних ключей, многочисленны и разочаровывают. Я просто потратил на это все выходные, и мы сделали сознательный выбор не иметь внешних ключей (хотя у нас есть терабайты данных).
Думаю, вы немного перепутали терминологию. «Слабо связанные» относятся к желательности наличия программных компонентов, которые не настолько зависят друг от друга, что они не могут функционировать или даже компилироваться, не будучи вместе в одной программе. Я никогда не встречал термин, используемый для описания отношений между таблицами в одной базе данных.
Я думаю, что если вы будете искать по терминам «нормализация» и «денормализация», вы получите лучшие результаты.
Прежде чем вы даже подумаете о такой вещи, вам нужно подумать о целостности данных. Существуют внешние ключи, поэтому вы не можете помещать записи в таблицы, если первичных данных, на которых они основаны, нет. Если вы не используете внешние ключи, вы рано или поздно (возможно, раньше) получите бесполезные данные, потому что вы действительно не знаете, кто является клиентом, к которому, например, прикреплен заказ. Внешние ключи - это защита данных, вы никогда не должны думать о том, чтобы не использовать их.
И даже если вы думаете, что все ваши данные будут поступать из вашего приложения, в реальной жизни это просто неправда. Данные поступают от нескольких приложений, от импорта больших объемов данных, из окна запроса (подумайте о том, когда кто-то решает обновить все цены, которые они не представляют. t собираюсь делать это по одной цене из пользовательского интерфейса). Данные могут попасть в базу данных из многих источников и должны быть защищены на уровне базы данных. Делая меньше, вы подвергаете риску все ваше приложение и данные.
Интересный комментарий о безопасности базы данных, когда данные вводятся через внешние источники, такие как скрипты базы данных.