|
|
|
| Как известно (а мне это стало известно недавно), первичный ключ может быть один и только один в таблице. Как правило, первичным ключом помечают столбец - счетчик записей, типа id_tbl_name, который к тому же может быть и автоувеличивающимся.
Но возможно пометить и несколько столбцов первичным ключом.
Вот и вопрос: в чем смысл и для чего так делается? Если можно, то приведите живой пример такого действа.
Спасибо. | |
|
|
|
|
|
|
|
для: baston
(08.04.2010 в 16:52)
| | первичный ключ (равно как и любой другой индекс) - это не метка. Это структура данных.
чтобы понять, как работает индекс, проще всего рассмотреть поле адреса на почтовом конверте. | |
|
|
|
|
|
|
|
для: 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Ни", где цифра это значение из первого столбца, а буквы - значение из второго столбца ("Володя" или "Николай").
Но смысл такого использования первичного ключа? Ведь для результатов поиска можно просто сделать запрос по одному полю и будет возвращен такой же результат, как если бы мы делали запрос по двум полям с первичным ключом.
Или я все равно неверно понимаю?
Спасибо. | |
|
|
|
|
|
|
|
для: baston
(09.04.2010 в 15:07)
| | >Например, есть таблица catalogs с тремя полями (id_catalog, name, first), в которой первичный ключ объявлен (или помечен) по двум столбцам - id_catalog и name(2).
Такая формулировка провоцирует предположение, что в составном индексе (коим кстати может быть сделан не только первичный но и любой другой ключ) ... так вот, в составном индексе эти два (три и т.д.) столбца равноправны и взаимозаменяемы. Это совершенно не так. Составной индекс это не метка и не объявление. Это структура данных, построенная на последовательности значений полей указанных столбцов. Указанных в строгом порядке.
И составной индекс не заменяет индексы отдельных столбцов.
Первого в последовательности столбца - не заменяет в общем случае (хотя в большистве частных такая замена возможна.)
Второго и далее - не заменяет никогда. | |
|
|
|