Более серьезный вопрос: вы бы поехали с завязанными глазами? Вот как это происходит, если вы разрабатываете систему без ссылочных ограничений. Помните, что меняются бизнес-требования, изменения дизайна приложения, соответствующие логические предположения в коде, сама логика может быть реорганизована и т. Д. В целом, ограничения в базах данных устанавливаются в соответствии с современными логическими предположениями, которые кажутся правильными для определенного набора логических утверждений и предположений.
На протяжении жизненного цикла приложения проверка ссылок и данных ограничивает сбор данных полиции через приложение, особенно когда новые требования приводят к изменениям логического приложения.
Что касается предмета этого списка - внешний ключ сам по себе не «повышает производительность» и не «значительно снижает производительность» с точки зрения системы обработки транзакций в реальном времени. Однако в «пакетной» системе ВЫСОКОГО объема используется совокупная стоимость проверки ограничений. Итак, вот разница между процессом в реальном времени и процессом пакетной обработки; пакетная обработка - когда совокупные затраты, связанные с проверками ограничений, для последовательно обработанной партии представляют собой снижение производительности.
В хорошо спроектированной системе проверки непротиворечивости данных будут выполняться «до» обработки пакета (тем не менее, здесь также есть стоимость); поэтому проверки ограничений внешнего ключа не требуются во время загрузки. Фактически все ограничения, включая внешний ключ, должны быть временно отключены до обработки пакета.
QUERY PERFORMANCE - если таблицы объединяются по внешним ключам, следует учитывать тот факт, что столбцы внешнего ключа НЕ УКАЗАНЫ (хотя соответствующий первичный ключ индексируется по определению). Индексирование внешнего ключа, в этом отношении, индексация любого ключа и присоединение таблиц к индексированным помогает повысить производительность, а не присоединение к неиндексированному ключу с ограничением внешнего ключа.
Смена темы : если база данных просто поддерживает отображение / отображение контента сайта и т. Д. И запись кликов, то для таких целей база данных с полными ограничениями для всех таблиц излишне убивает. Подумай об этом. Большинство веб-сайтов даже не используют базу данных для таких целей. Для аналогичных требований, когда данные просто записываются и не имеют ссылки, скажем, используйте базу данных в памяти, которая не имеет ограничений. Это не означает, что нет модели данных, да, логическая модель, но нет физической модели данных.