При проектировании БД столкнулся с желанием использовать в качестве первичного ключа какое-либо поле, чаще всего текстовое, которое несёт некоторую смысловую нагрузку. Среди аргументов в пользу такого решения привозится в частности то, что в этом случае не нужно ещё одно поле для суррогатного ключа, следовательно меньше размер базы.
На мой взгляд использование строкового поля в качестве первичного ключа приводит только к увеличению размера БД (по сравнению с суррогатным ключом) по следующим причинам:
1) размер самой таблицы увеличится, за счет того, что для первичного ключа строится индекс
2) в других таблицах придётся для ссылки на первичный ключ использовать строковое поле
3) Если у всех таблиц одинаковый формат первичного ключа, то это позволяет просто реализовать связывающие таблицы.
|