Дебаты естественных и искусственных ключей столь же стара, как и любая реализация базы данных. Читайте о pro's and con's на wikipedia.
Аргументы для суррогатных ключей легко оспариваются на теоретическом уровне (например, аргумент о том, что с помощью естественных ключей вы рискуете оказаться неуничтожимым для своего ПК, может быть противопоставлено ответ - хорошо! Если я столкнусь с этой ситуацией хорошо, что вещи сломаются вместо искусственно уникальных первичных ключей с дублирующимися записями для фактических данных).
Еще один хороший аргумент заключается в том, что искусственные ключи либо избыточны (есть еще один уникальный ключ в таблице), либо они позволяют хранить существенно не уникальные записи.
Тем не менее, найти хорошие естественные ключи иногда так сложно, что вы должны выбрать что-то искусственное и позволить ситуации, когда у вас будет человек с тем же именем, родившийся на той же дате (или с неизвестной датой), с другими свойствами xy которые одинаковы по стоимости.
Кроме того, не совсем понятно, что является искусственным и естественным. Вы можете сказать, например, что SSN является естественным для ваших данных. Хотя это действительно составленный номер.
Что касается эффективности отношений с несколькими ключами - это не так плохо, как вы думаете, кроме того, он естественным образом сегментирует индексы и с такими ключами вы обычно получаете базу данных, которая отлично работает с общие запросы без каких-либо дополнительных индексов.
Если рассматривать эти проблемы серьезно, и если вы пытаетесь построить сложную систему, пожалуйста, прочитайте некоторые хорошую литературу (C.J.Date Введение в системы баз данных, в настоящее время в 8-е издание приходит на ум)
. Вы имели в виду: «Если это невозможно, то вам нужно будет расширить ограничение уникальности, чтобы включить другой столбец ».? –
На самом деле, я был изначально правильно, просто сформулировал плохо. Я исправил. Если, по сути, три столбца не уникальны, тогда вам нужно будет явно расширить ограничение уникальности. – Thomas
Ах! Получил это сейчас. Благодаря! –