Каждая таблица имеет один или несколько ключей-кандидатов.Выберите один, чтобы быть первичным ключом;добавить уникальные ограничения на других, чтобы обеспечить семантическую корректность.Это не имеет ничего общего с возможностью восстановления таблицы, если что-то «запутано».
У вас также должны быть индексы для столбцов, которые появляются в предложениях WHERE, чтобы сделать доступ максимально быстрым.Это конкретные приложения / варианты использования.
Примером того, что я имею в виду, будет таблица адресов.У вас может быть суррогатный первичный ключ.У вас также были бы индексы для различных комбинаций zip, города, провинции, округа и т. Д., Чтобы сделать SELECT эффективными.Вы также можете захотеть, чтобы комбинация street1 / stree2 / city / провинция / zip была УНИКАЛЬНОЙ.Зависит от вашей бизнес-проблемы.