Всегда стремитесь иметь первичный ключ.
Если вы не уверены, есть первичный ключ.
Даже если вы на 99,99% уверены, что он вам не понадобится, имейте его.Требования меняются, как я узнал из опыта на протяжении многих лет.
Единственные примеры, о которых я могу подумать, это таблицы «многие ко многим», в которых всего две таблицы foreign_keys и мега-огромные (сотни миллионов строк), гдекаждый байт имеет значение.Но даже в этом случае настоятельно рекомендуется использовать отдельный уникальный ключ идентификатора, не имеющий значения для бизнеса.
Здесь есть еще несколько полезных сведений:
http://weblogs.sqlteam.com/jeffs/archive/2007/08/23/composite_primary_keys.aspx
издесь:
http://www.techrepublic.com/article/the-great-primary-key-debate/1045050
здесь:
http://databases.aspfaq.com/database/what-should-i-choose-for-my-primary-key.html
и здесь:
Должен ли я использовать составные первичные ключи или нет?
ВВаш пример, у меня определенно был бы один.
Решение "не" иметь его должно быть основано на очень четкой потребности и понимании и реальных или прогнозируемых (например, объемных) проблемах с его наличием.
При отладке и устранении неполадок возникает один прекрасный пример этой необходимости.Точно так же, как создание и обновление столбцов в каждой таблице (еще один мой любимый), эта информация может изначально не использоваться для / для внешнего интерфейса, но мальчик может быть полезен для отслеживания и решения проблем.(Кстати, штампы обновления часто теперь являются стандартными в таких фреймворках, как Ruby On Rails , что также хорошо работает в соответствии с соглашением для каждой таблицы, имеющей поле id
!)