Я смотрел скринкаст, где автор сказал, что нехорошо иметь первичный ключ в таблице соединений, но не объяснил, почему.
Таблица соединений в примере имела два столбца, определенные в миграции Rails, и автор добавил индекс в каждый из столбцов, но не имел первичного ключа.
Почему это нехорошо иметь первичный ключ в этом примере?
create_table :categories_posts, :id => false do |t|
t.column :category_id, :integer, :null => false
t.column :post_id, :integer, :null => false
end
add_index :categories_posts, :category_id
add_index :categories_posts, :post_id
EDIT: Как я уже упоминал в Cletus, я могу понять потенциальную полезность поля автоматического номера в качестве первичного ключа даже для таблицы соединений. Однако в приведенном выше примере автор явно избегает создания поля автоматического номера с синтаксисом ": id = > false" в инструкции "create table". Обычно Rails автоматически добавляет поле идентификатора автоматического номера в таблицу, созданную в результате миграции, как это, и это станет первичным ключом. Но для этой таблицы соединений автор специально предотвратил это. Я не был уверен, почему он решил следовать этому подходу.