![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
Sergio |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 843 Регистрация: 28.7.2006 Где: Solar System-> Earth Репутация: нет Всего: 1 |
Здраствуйте. Узучаю БД. Наталкнулся на два интересных типа: UNIQUE и PRIMARY
PRIMARY тип нужен для ключей. Тоесть он отвечает за индивидуальность каждого значения. А что за тип UNIQUE? Зарание спасибо. |
|||
|
||||
Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: нет Всего: 10 |
Т.е. в этом поле не будет повторов значений. -------------------- Пролетал мимо. |
|||
|
||||
Sergio |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 843 Регистрация: 28.7.2006 Где: Solar System-> Earth Репутация: нет Всего: 1 |
Fin, а что с типом PRIMARY значение может повторятся?
|
|||
|
||||
Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 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 Т.е. поле на которое ставится первичный ключ уникально в таблице. Тем самым достигается уникальность всей строки в целом. -------------------- Пролетал мимо. |
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 7 Всего: 146 |
Хотел бы заметить, что UNIQUE не просто делает поля уникальными, он так же является индексом, что не менее важно.
|
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 1 Всего: 360 |
Primary на таблицу всегда один, а UNIQUE полей может быть много разных.
пример: Таблица "фото-альбом" Номер фотографии(Primary key) | Название| Порядковый номер (UNIQUE) | Каждая фотография имеет первичный ключ, по которому по которому она однозначно определена. Обращаясь по определённому идентификатору мы всегда получим определённую фотографию. Порядковый номер в свою очередь не определяет фотографию, иначе с каждой пересортировкой под одним и тем же ИД были бы разные фотки. Однако порядковые значения не должны повторятся, поэтому он просто UNIQUE. |
|||
|
||||
Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: нет Всего: 10 |
Когда то у меня была таблица с банковскими реквизитами с следуюшими полями: AccID, AccountNumber, BankID, Description.
AccID это был Primary Key. Unique key ставился сразу на два поля AccountNumber и BankID. Получается, номер счета может встречаться дважды, Индефикатор банка тоже. Но дубль сочитания сразу двух полей не может иметь место в таблице. Это сообщение отредактировал(а) Fin - 29.6.2007, 00:51 -------------------- Пролетал мимо. |
|||
|
||||
muzer |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 387 Регистрация: 31.8.2006 Репутация: 30 Всего: 31 |
Согласен со всеми ответами и всё же никто так открыто и не сказал - в MySQL Primary и Unique - это по сути одно и то же за исключением рюшечек - PRIMARY только один на таблицу, без доп названия, не допускает NULL'ы.
Но вообще, первоначальная идея, насколько я знаю, первичного ключа заключается в том, что именно _данные_ лежат на диске в отсортированном виде в соответствии со значением первичного ключа. В MySQL это не так. Это сообщение отредактировал(а) muzer - 29.6.2007, 01:03 |
|||
|
||||
sTa1kEr |
|
|||
9/10 программиста ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1553 Регистрация: 21.2.2007 Репутация: 7 Всего: 146 |
А как на счет таблиц InnoDB ? Это сообщение отредактировал(а) sTa1kEr - 29.6.2007, 01:24 |
|||
|
||||
muzer |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 387 Регистрация: 31.8.2006 Репутация: 30 Всего: 31 |
sTa1kEr, согласен, хорошее замечание, InnoDB сортирует данные по ключу. Правда они его не называют первичным, а называют "clustered", и им может быть как PRIMARY так и UNIQUE (если объявлен на NOT NULL столбец), так и вообще собственный счётчик строк (то есть разницы между PRIMARY и UNIQUE опять же почти нет, приоритет у PRIMARY больше оказаться clustered ключом).
|
|||
|
||||
vicod |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 24.10.2007 Где: odessa.ua Репутация: нет Всего: 2 |
господа,
в чем разница между UNIQUE и UNIQUE KEY? |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MySQL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |