Консультация № 69985
08.01.2007, 13:04
0.00 руб.
0 2 2
Здравствуйте!
Есть вопрос.
В любой базе данных желательно иметь идентифицирующее поле - ключ.
В базе MySQL мы можем создать поле с комбинацией свойств: автоинкремент, неноль и первичный ключ. В итоге все хорошо будет работать.
Но есть другой случай: автоинкремент и уникальное. И тоже все хорошо будет работать. В чем разница?

Обсуждение

Неизвестный
08.01.2007, 13:25
общий
это ответ
Здравствуйте, Valeraorg!
Первичный ключ - это любой столбец (или комбинация столбцов) , значения которого однозначно идетифицируют строку. Поэтому автоинкремент - достаточное условие для уникальности значения. Выставлять лишную проверку на уникальность - только занимать процессорное время. Также в первом варианте лишняя проверка на не ноль - ведь у нас автоинкремент, значит, NULL точно не будет.
Неизвестный
08.01.2007, 16:18
общий
это ответ
Здравствуйте, Valeraorg!
В таблице желательно иметь первичный ключ, особенно если есть связи с другими таблицами.
Первичный ключ должен быть - 1) Уникальный, 2) Not null

А как Вы формируете уникальность ключа не имеет значения. Например, в одном моем проекте уникальный ключ формировался как хеш-функция нескольких полей.
Это было удобнее чем делать уникальный индекс из этих текстовых полей.
Кроме того, это позволяло отследить изменения любого поля с помощью триггеров.
Форма ответа