SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 22.03.2011 11:37:17

aliputin
Завсегдатай
Зарегистрирован: 08.03.2010
Сообщений: 36

Обязан ли ключ быть Primary или достаточно Unique?

Обязательно ли, чтобы ключ был Primary или достаточно Unique?

Допустим, есть таблица с товарами, в ней суррогатный ключ (id), объявленный как Unique, но не Primary key. Чем мне это грозит?


MySQL 5.5.27
MariaDB 5.5.27

Неактивен

 

#2 22.03.2011 12:07:11

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5833

Re: Обязан ли ключ быть Primary или достаточно Unique?

aliputin написал:

Обязательно ли, чтобы ключ был Primary или достаточно Unique?

Достаточно и не unique, если достаточно smile


aliputin написал:

Допустим, есть таблица с товарами, в ней суррогатный ключ (id), объявленный как Unique, но не Primary key. Чем мне это грозит?

Unique в отличии от primary может принимать null значения. Вы не сможете использовать атрибут auto_increment.

Неактивен

 

#3 22.03.2011 12:21:36

aliputin
Завсегдатай
Зарегистрирован: 08.03.2010
Сообщений: 36

Re: Обязан ли ключ быть Primary или достаточно Unique?

vasya написал:

не сможете использовать атрибут auto_increment.

Не поверите, но я использую.


MySQL 5.5.27
MariaDB 5.5.27

Неактивен

 

#4 22.03.2011 12:33:34

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5833

Re: Обязан ли ключ быть Primary или достаточно Unique?

Да, действительно нафантазировал wink

Неактивен

 

#5 23.03.2011 00:58:08

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Обязан ли ключ быть Primary или достаточно Unique?

На самом деле, есть небольшие тонкости. С одной стороны, UNIQUE ключ над не-NULL
полем полностью эквивалентент PRIMARY KEY. С другой стороны, уникальных ключей
может быть несколько, а главный — только один. И, наконец, самая важная особенность:
в InnoDB главный ключ является кластерным, т.е. данные хранятся на листьях дерева,
построенного из главного ключа.

Неактивен

 

#6 23.03.2011 11:02:55

aliputin
Завсегдатай
Зарегистрирован: 08.03.2010
Сообщений: 36

Re: Обязан ли ключ быть Primary или достаточно Unique?

paulus написал:

главный ключ является кластерным

А это влияет на быстродействие?


MySQL 5.5.27
MariaDB 5.5.27

Неактивен

 

#7 23.03.2011 13:26:34

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5833

Re: Обязан ли ключ быть Primary или достаточно Unique?

Да. При выборке по unique вы сначала будете получать значение главного, а по нему уже данные.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson