Слабо связанное проектирование баз данных - как к?

Эта функция была отмечена как WONTFIX в 2013 Trac Django: http://code.djangoproject.com/ticket/1199

5
задан Goober 14 September 2009 в 11:48
поделиться

4 ответа

Если вы не выполняете огромное количество операций вставки за раз, как, например, в хранилище данных, используйте внешние ключи . Нормализация масштабируется как сумасшедшая, и вы должны воспользоваться этим. Внешние ключи работают быстро, и ограничение действительно сдерживает вас, только если вы вставляете миллионы и миллионы записей за раз.

Убедитесь, что вы используете целочисленные ключи с кластеризованным индексом. Это должно сделать соединение стола очень быстрым. Проблемы, которые вы можете решить без внешних ключей, многочисленны и разочаровывают. Я просто потратил на это все выходные, и мы сделали сознательный выбор не иметь внешних ключей (хотя у нас есть терабайты данных).

2
ответ дан 13 December 2019 в 19:31
поделиться

Думаю, вы немного перепутали терминологию. «Слабо связанные» относятся к желательности наличия программных компонентов, которые не настолько зависят друг от друга, что они не могут функционировать или даже компилироваться, не будучи вместе в одной программе. Я никогда не встречал термин, используемый для описания отношений между таблицами в одной базе данных.

Я думаю, что если вы будете искать по терминам «нормализация» и «денормализация», вы получите лучшие результаты.

8
ответ дан 13 December 2019 в 19:31
поделиться

Прежде чем вы даже подумаете о такой вещи, вам нужно подумать о целостности данных. Существуют внешние ключи, поэтому вы не можете помещать записи в таблицы, если первичных данных, на которых они основаны, нет. Если вы не используете внешние ключи, вы рано или поздно (возможно, раньше) получите бесполезные данные, потому что вы действительно не знаете, кто является клиентом, к которому, например, прикреплен заказ. Внешние ключи - это защита данных, вы никогда не должны думать о том, чтобы не использовать их.

И даже если вы думаете, что все ваши данные будут поступать из вашего приложения, в реальной жизни это просто неправда. Данные поступают от нескольких приложений, от импорта больших объемов данных, из окна запроса (подумайте о том, когда кто-то решает обновить все цены, которые они не представляют. t собираюсь делать это по одной цене из пользовательского интерфейса). Данные могут попасть в базу данных из многих источников и должны быть защищены на уровне базы данных. Делая меньше, вы подвергаете риску все ваше приложение и данные.

1
ответ дан 13 December 2019 в 19:31
поделиться

Интересный комментарий о безопасности базы данных, когда данные вводятся через внешние источники, такие как скрипты базы данных.

0
ответ дан 13 December 2019 в 19:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: