2

Я часто вижу людей, использующих искусственные/суррогатные ключи в реляционных базах данных. Думая об этом, мне кажется, что, хотя это упрощает join-Queries, это усложняет вставку новых кортежей. Возьмем следующий пример:Суррогатные ключи затрудняют ввод?

R1 (a, b, c) R2 (c, d, e) c является суррогатным первичным ключом R2, на который ссылается R1 (c). Если я хочу вставить данные в R1 и R2, мне сначала нужно проверить, существует ли уже существующий R2-кортеж для R2, ​​и если это так, я должен получить его соответствующий искусственный ключ, чтобы я мог ссылаться на него в кортеж для R1.

Используя естественные ключи: R1 (а, б, д, е) R2 (д, е) Атрибуты D и Е являются естественным первичный ключ набор для R2, ​​на который ссылается R1 (д, е). Если я хочу вставить новый кортеж в R1 и R2, я просто могу их вставить, потому что для кортежа R1 известен внешний ключ (т. Е. Значение набора первичных ключей R2).

Правильно ли я в своем предположении или я что-то упускаю?

+1

(a) Ваши права. И есть намного больше: (б) С суррогатами вы теряете реляционную целостность и (c) вы теряете навигационную (реляционную) силу. Это приводит к еще большему количеству объединений (миф о меньших объединениях является ложным). Причина в том, что суррогаты нарушают правило ** независимости доступа ** в реляционной модели *. – PerformanceDBA

ответ

1

Вы правы, что для обработки суррогатных ключей обычно требуется дополнительная работа. Возможно, вы сможете использовать некоторый библиотечный код или фреймворк, чтобы помочь вам в обработке суррогатных ключей, но всегда есть стоимость с точки зрения сложности и времени обработки. Подобные соображения применимы и к запросам, и к вставкам. Обширное использование суррогатных ключей неизменно означает, что ваши запросы будут в среднем увеличивать количество подключений.

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

 Смежные вопросы

  • Нет связанных вопросов^_^