Но часто всё-таки добавляют искусственный первичный ключ "Номер". Подскажите, почему так?
В таком простом случае - например, потому, что начинающие программисты. Им так проще. Либо увидели где-то пример и бездумно копируют.
Хотя можно придумать пример посложнее. Пусть есть несколько филиалов и в разных филиалах отделы с одинаковыми названиями. Тогда составной ключ будет Филиал + Наименование, это уже не очень удобно и тогда появляется
обоснованное желание добавить номер вместо составного ключа.
Здесь перечисляются преимущества ("причины использования") и недостатки:
https://ru.wikipedia.org/wiki/Суррогатный_ключ
Причины использования:
- Неизменность
- Гарантированная уникальность
- Гибкость
- Эффективность
- Упрощение программирования
Недостатки:
- Уязвимости генераторов ключей
- Неинформативность
- Склоняет администратора пропустить нормализацию
- Вопросы оптимизации
- Невольная привязка разработчика к поведению генератора ключей в конкретной СУБД
Короче, использовать можно и нужно, если понимать, что
в конкретном случае преимущества сильнее, чем недостатки. Без понимания тоже можно использовать, но будет лотерея: либо лучше, либо хуже. Потом придёт сеньор и отрефакторит.