Я работаю с большим хранилищем данных (2+ ТБ хранимых данных).
У нас более 1000 пакетов служб SSIS, которые работают каждый день. Они извлекают данные из более чем 100 различных источников данных в наш datamart. Затем эти данные суммируются и добавляются в наши таблицы фактов.
Мы не используем шаблон SQL первичный ключ / внешний ключ. Если процедура медленная, мы добавим индексирование для объединенных полей или предложений where. Но не использовать встроенный первичный ключ / внешний ключ.
Мы не «нормализуем» наши данные в какой-то степени - поэтому повторяемость данных повсюду - и мы можем таким образом обрезать жир. Но это усложнит для аналитиков быстрое получение необходимых данных, а также увеличит время разработки новых процедур.
Кажется, у нас все работает нормально.
Мне было интересно, может ли кто-нибудь действительно опытный разработчик SQL / администратор баз данных прокомментировать это и предложить некоторую мудрость относительно использования первичных внешних ключей в ситуациях, когда вы не передаете данные другим пользователям, и вы загружаете огромное количество данных каждый день.