ник: osmor
Все ниже сказанное является моим личным субъективным мнением, не претендующим на полную истинность
КЛЮЧЕВОЕ ПОЛЕ ДОЛЖНО БЫТЬ В КАЖДОЙ ТАБЛИЦЕ!!! Счетчик это или нет - вам решать.
Мои мысли о счетчиках.
1. счетчик это только ключевое поле для идентификации записи. Вские другие нагрузки типа нумерации чего-либо на него возлагать нельзя
2. Было по всякому, сейчас "1 таблица - 1 счетчик и этот счетчик ключевое поле". Даже если есть другие идентификаторы. Можно поставить уникальный ключ и использовать его в каких-то случаях, но ключ все равно счетчик, мне это кажется логичным. Если идентификатор никак не привязан к данным, то он и не может поменяться в случае изменения данных.
Простой пример, предположим мы используем номер паспорта как уникальный ключ для идентификации некоего "клиента". Вроде бы все хорошо, но вот человек потерял паспорт и получил новый.... придется изменить поля во всех таблицах где использовался ключ из таблицы клиенты.Конечно современные БД имеют встроенные механизмы поддерживающие целостность и каскадное обновление, но зачем проектировать проблему? Со счетчиком такой случай разрешается легко, просто изменением обычного поля "номер паспорта", оно может иметь уникальный ключ.
Иногда возникает соблазн сделать ключевым другое поле, ну например в таблице с полом, "там же только 2 значения", или в таблице "единицы измерения"... Теперь представим что систему вдруг стала мультиязычной... (тот ларек который ее у вас заказал, открыл филиал в Манако, но данные должны объединяться)... в этом случае счетчик опять побеждает :-)
Кому-то мои доводы покажутся не убедительными, есть довольно много плюсов в использовании в качестве ключа не счетчиков, но как говорится "О вкусах не спорят"
Вообще не считаю себя крупным спецом в индексации
С индексацией все не очень просто, много - плохо, мало - тоже плохо.
Обычно делаю индексы для полей:
- по которым будет поиск или группировка
- числовые по которым возможен поиск максимальных и минимальных
- для которых нужна уникальность
все остальные в персональных случаях когда начинаются явные тормоза.