Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: В чем смысл использовать многостолбцовый первичный ключ?
 
 автор: baston   (08.04.2010 в 16:52)   письмо автору
 
 

Как известно (а мне это стало известно недавно), первичный ключ может быть один и только один в таблице. Как правило, первичным ключом помечают столбец - счетчик записей, типа id_tbl_name, который к тому же может быть и автоувеличивающимся.
Но возможно пометить и несколько столбцов первичным ключом.
Вот и вопрос: в чем смысл и для чего так делается? Если можно, то приведите живой пример такого действа.
Спасибо.

  Ответить  
 
 автор: Trianon   (09.04.2010 в 11:54)   письмо автору
 
   для: baston   (08.04.2010 в 16:52)
 

первичный ключ (равно как и любой другой индекс) - это не метка. Это структура данных.

чтобы понять, как работает индекс, проще всего рассмотреть поле адреса на почтовом конверте.

  Ответить  
 
 автор: baston   (09.04.2010 в 15:07)   письмо автору
 
   для: Trianon   (09.04.2010 в 11:54)
 

Возможно, я не верно выразился...
Я столкнулся с таким же вопросом, который был задан три года назад одним пользователем (http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=33103&page=104).

Исходя из прочитанного из книги и узнанного из перевода оф.мануала я сделал такой вывод: если первичный ключ построен на двух столбцах, к примеру, то значение такого ключа будет представлять собой две величины: значение из первого столбца и значение из второго столбца.
Например, есть таблица catalogs с тремя полями (id_catalog, name, first), в которой первичный ключ объявлен (или помечен) по двум столбцам - id_catalog и name(2).
Таким образом, значение первичного ключа для какой-нибудь строки может представлять из себя следующее: "1Во" или "5Ни", где цифра это значение из первого столбца, а буквы - значение из второго столбца ("Володя" или "Николай").

Но смысл такого использования первичного ключа? Ведь для результатов поиска можно просто сделать запрос по одному полю и будет возвращен такой же результат, как если бы мы делали запрос по двум полям с первичным ключом.
Или я все равно неверно понимаю?
Спасибо.

  Ответить  
 
 автор: Trianon   (09.04.2010 в 15:23)   письмо автору
 
   для: baston   (09.04.2010 в 15:07)
 

>Например, есть таблица catalogs с тремя полями (id_catalog, name, first), в которой первичный ключ объявлен (или помечен) по двум столбцам - id_catalog и name(2).

Такая формулировка провоцирует предположение, что в составном индексе (коим кстати может быть сделан не только первичный но и любой другой ключ) ... так вот, в составном индексе эти два (три и т.д.) столбца равноправны и взаимозаменяемы. Это совершенно не так. Составной индекс это не метка и не объявление. Это структура данных, построенная на последовательности значений полей указанных столбцов. Указанных в строгом порядке.
И составной индекс не заменяет индексы отдельных столбцов.
Первого в последовательности столбца - не заменяет в общем случае (хотя в большистве частных такая замена возможна.)
Второго и далее - не заменяет никогда.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования