Вопрос № 69985: Здравствуйте!
Есть вопрос.
В любой базе данных желательно иметь идентифицирующее поле - ключ.
В базе MySQL мы можем создать поле с комбинацией свойств: автоинкремент, неноль и первичный ключ. В итоге все хорошо будет работать.
Но есть...
Вопрос № 69.985
Здравствуйте!
Есть вопрос.
В любой базе данных желательно иметь идентифицирующее поле - ключ.
В базе MySQL мы можем создать поле с комбинацией свойств: автоинкремент, неноль и первичный ключ. В итоге все хорошо будет работать.
Но есть другой случай: автоинкремент и уникальное. И тоже все хорошо будет работать. В чем разница?
Отправлен: 08.01.2007, 13:04
Вопрос задал: Valeraorg (статус: 4-ый класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Евгений Крюков
Здравствуйте, Valeraorg!
Первичный ключ - это любой столбец (или комбинация столбцов) , значения которого однозначно идетифицируют строку. Поэтому автоинкремент - достаточное условие для уникальности значения. Выставлять лишную проверку на уникальность - только занимать процессорное время. Также в первом варианте лишняя проверка на не ноль - ведь у нас автоинкремент, значит, NULL точно не будет.
--------- Большинство ответов на вопросы в рассылках находится через Яндекс за 1 мин.
Ответ отправил: Евгений Крюков (статус: Практикант)
Ответ отправлен: 08.01.2007, 13:25 Оценка за ответ: 5 Комментарий оценки: Спасибо!
Отвечает: Архангельский Андрей Германович
Здравствуйте, Valeraorg!
В таблице желательно иметь первичный ключ, особенно если есть связи с другими таблицами.
Первичный ключ должен быть - 1) Уникальный, 2) Not null
А как Вы формируете уникальность ключа не имеет значения. Например, в одном моем проекте уникальный ключ формировался как хеш-функция нескольких полей.
Это было удобнее чем делать уникальный индекс из этих текстовых полей.
Кроме того, это позволяло отследить изменения любого поля с помощью триггеров.
--------- Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО