Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> тип UNIQUE и PRIMARY, какая разница? 
:(
    Опции темы
Sergio
Дата 28.6.2007, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 843
Регистрация: 28.7.2006
Где: Solar System-> Earth

Репутация: нет
Всего: 1



Здраствуйте. Узучаю БД. Наталкнулся на два интересных типа: UNIQUE и PRIMARY
PRIMARY тип нужен для ключей. Тоесть он отвечает за индивидуальность каждого значения. 
А что за тип  UNIQUE?
Зарание спасибо.
PM MAIL ICQ   Вверх
Fin
Дата 28.6.2007, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


Профиль
Группа: Участник
Сообщений: 687
Регистрация: 4.1.2006

Репутация: нет
Всего: 10



Цитата

unique

unique
      1> единственный в своем роде, уникальный
   _Ex:
       unique feature _тех. особенность конструкции (данной модели)
   _Ex:
       perhaps a unique survival возможно, единственный оставшийся
       в живых
   _Ex:
       this pictire is thought to be unique эта картина считается
       уникальной
      2> особенный
   _Ex:
       unique opportunity исключительная возможность
   _Ex:
       to possess unique ability in smth. обладать необычайными
       способностями к чему-л.
      3> _разг. необыкновенный, странный, удивительный
   _Ex:
       she dressed in a most unique fashion она одевалась
       необыкновенно эксцентрично

Т.е. в этом поле не будет повторов значений.


--------------------
Пролетал мимо.
PM MAIL   Вверх
Sergio
Дата 28.6.2007, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 843
Регистрация: 28.7.2006
Где: Solar System-> Earth

Репутация: нет
Всего: 1



Fin, а что с типом PRIMARY значение может повторятся?

PM MAIL ICQ   Вверх
Fin
Дата 29.6.2007, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


Профиль
Группа: Участник
Сообщений: 687
Регистрация: 4.1.2006

Репутация: нет
Всего: 10



PRIMARY KEY - Uniquely identifies each row - ensures that users do not enter duplicate values and that an index is created to enhance performance. Null value are not allowed.

UNIQUE - Prevents duplication of alternate (non-primary) keys and ensures that an index is created to enhance performance. Null values are allowed.

Это определения из книжки по MS SQL 2005.

Т.е. по русски, Первичный ключ делает уникальной строки. UNIQUE делает уникальным только отдельные поля в записи.

Добавлено через 3 минуты и 55 секунд
PS Т.е. поле на которое ставится первичный ключ уникально в таблице. Тем самым достигается уникальность всей строки в целом.


--------------------
Пролетал мимо.
PM MAIL   Вверх
sTa1kEr
Дата 29.6.2007, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 7
Всего: 146



Хотел бы заметить, что UNIQUE не просто делает поля уникальными, он так же является индексом, что не менее важно.
PM MAIL   Вверх
sergejzr
Дата 29.6.2007, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 1
Всего: 360



Primary на таблицу всегда один, а UNIQUE полей может быть много разных.

пример:
Таблица "фото-альбом"

Номер фотографии(Primary key) | Название| Порядковый номер (UNIQUE) |

Каждая фотография имеет первичный ключ, по которому по которому она однозначно определена. Обращаясь по определённому идентификатору мы всегда получим определённую фотографию.

Порядковый номер в свою очередь не определяет фотографию, иначе с каждой пересортировкой под одним и тем же ИД были бы разные фотки. Однако порядковые значения не должны повторятся, поэтому он просто UNIQUE.




--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Fin
Дата 29.6.2007, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дракон->Спать();
**


Профиль
Группа: Участник
Сообщений: 687
Регистрация: 4.1.2006

Репутация: нет
Всего: 10



Когда то у меня была таблица с банковскими реквизитами с следуюшими полями: AccID, AccountNumber, BankID, Description. 
AccID это был Primary Key. Unique key ставился сразу на два поля AccountNumber и BankID. Получается, номер счета может встречаться дважды, Индефикатор банка тоже. Но дубль сочитания сразу двух полей не может иметь место в таблице.

Это сообщение отредактировал(а) Fin - 29.6.2007, 00:51


--------------------
Пролетал мимо.
PM MAIL   Вверх
muzer
Дата 29.6.2007, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 387
Регистрация: 31.8.2006

Репутация: 30
Всего: 31



Согласен со всеми ответами и всё же никто так открыто и не сказал - в MySQL Primary и Unique - это по сути одно и то же за исключением рюшечек - PRIMARY только один на таблицу, без доп названия, не допускает NULL'ы.
Но вообще, первоначальная идея, насколько я знаю, первичного ключа заключается в том, что именно _данные_ лежат на диске в отсортированном виде в соответствии со значением первичного ключа. В MySQL это не так.

Это сообщение отредактировал(а) muzer - 29.6.2007, 01:03
PM WWW   Вверх
sTa1kEr
Дата 29.6.2007, 01:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 7
Всего: 146



Цитата(muzer @  29.6.2007,  01:02 Найти цитируемый пост)
Но вообще, первоначальная идея, насколько я знаю, первичного ключа заключается в том, что именно _данные_ лежат на диске в отсортированном виде в соответствии со значением первичного ключа. В MySQL это не так.

А как на счет таблиц InnoDB ?

Это сообщение отредактировал(а) sTa1kEr - 29.6.2007, 01:24
PM MAIL   Вверх
muzer
Дата 29.6.2007, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 387
Регистрация: 31.8.2006

Репутация: 30
Всего: 31



sTa1kEr, согласен, хорошее замечание, InnoDB сортирует данные по ключу. Правда они его не называют первичным, а называют "clustered", и им может быть как PRIMARY так и UNIQUE (если объявлен на NOT NULL столбец), так и вообще собственный счётчик строк (то есть разницы между PRIMARY и UNIQUE опять же почти нет, приоритет у PRIMARY больше оказаться clustered ключом).
PM WWW   Вверх
vicod
Дата 10.12.2011, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 24.10.2007
Где: odessa.ua

Репутация: нет
Всего: 2



господа,
в чем разница между UNIQUE и UNIQUE KEY?
PM MAIL   Вверх
Zloxa
Дата 12.12.2011, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



 smile 

primary key = unique + not null

Цитата(vicod @  10.12.2011,  15:35 Найти цитируемый пост)
в чем разница

ее нет.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.1065 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.