Я читал горячие дебаты о составных и суррогатных ключах на Stack Overflow и других веб-сайтах, и хотя я был озадачен некоторыми из приведенных аргументов, я чувствую, что знаю о плюсах и минусах каждого.
Я чувствую соблазн пойти на суррогатные ключи, но теперь у меня есть другой вопрос. Позвольте мне объяснить мою ситуацию. У меня есть таблица, состоящая из 5 целых чисел, которые составляют уникальную комбинацию, и у меня есть несколько таблиц, ссылающихся на эту сущность. В настоящее время все таблицы включают полные 5 полей, и все операции JOIN должны указывать все 5 полей в качестве критерия соединения. Теперь я добавил суррогатный ключ. Но я должен удалить все 5 полей из всех таблиц в пользу суррогатного внешнего ключа, который ссылается на основную таблицу?
Я не уверен в этом, поскольку каждое из 5 полей в отдельности часто используется в качестве критерия выбора в других таблицах. У меня есть индексы, определенные для них в определенном естественном порядке, чтобы операции выбора выполнялись быстро. Если я перенесу все 5 полей в отдельную таблицу, я боюсь, что когда я захочу выбрать, скажем, первые три из них, мне придется определить JOIN и выбрать из этого, но индексы не будут определены на этом JOIN, так как он только что был сгенерирован, и я понесу потерю производительности.
Или я должен как-то определить VIEW для каждой таблицы, включая 5 ключей, и индекс для этого?
Я чувствую растерянность и, набрав все это, склоняюсь снова придерживаться естественных клавиш.
Помощь