Лично я делаю всегда так (MS SQL)
Первичный ключ - числа. Не обязательно его создавать ИЗ ПРИМЕРА. Можно задать первое поле ID и создать для него правило: автоповышение, не пустое.
Первичный ключ это просто некий указатель.
Вторичный ключ - не знаю. Предпочитаю ВНЕШНИЙ ключ. Это более адекватно описывает тип ключа.
Внешний ключ вяжется к Первичному. Он потому и внешний :) т. к. может быть использован в этой или другой (их) таблице. Для этого он и используется: БД быстро находит связи и может извлекать (или обновлять или удалять или еще что) большие объемы данных.
Я так себе это представляю и понимаю. Умники могут меня попинать - но чесн мне пох. Я не Администратор Баз Данных.
Чисто по примеру.
Пусть мы видим некую итоговую таблицу которая требуется в том или ином виде.
Тогда мы проектируем БД следующим образом, создаем таблицы (айди это всегда Первичный ключ):
1. Судна (айди, номер, название, ФИО кэпа и чтотоеще)
2. Рейсы (айди, НОМЕР, судно (или судна если на одном рейсе их караван))
3. Порты (айди, Аббревиатура)
4. Перевозки (сводная) - где мы будем хранить записи используя идентификаторы таблиц 1-3
айди записи, айди судна, айди рейса, айди порта, дата погрузки, дата прибытия, чтотоеще...
В такой схеме БД сможет хранить тысячи записей, а извлекать их в различных комбинациях будет несложно и быстро