|
|
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
softwarerно есть подозрение, что Вы почему-то считаете, что для foreign key нужен PK.таки да:TempUserDubВнешний ключ может ссылаться и на первичный, и на уникальный ключ.TempUserDub, внешний ключ может ссылаться на что угодно :) да, в некоторых СУБД есть ограничение, что для создания FK надо создать "соответствующий" индекс на родительской таблице, но это, повторюсь, ограничение отдельных СУБД, никакое не глобальное правило. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 06:03 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
TempUserDubДанный вопрос о предназначении первичного ключа и отличии от уникально достатончо часто встречает в интернете, н о нигде нет точного ответа Имхо всё очень просто: для того, чтобы не писать в куче мест статей и книг фразу "на таблице есть хотя бы один уникальный ключ", Кодд однажды сказал "назовём один из уникальных ключей первичным" и далее пишет более коротко, "есть первичный ключ" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 10:10 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
> нигде нет точного ответа Предполагается, что атрибуты сущности имеют некий смысл в рамках предметной области. Для первичного ключа этого требования нет, если угодно, это элемент технического дизайна, а не предметной области. В конкретных реализациях СУБД объявление атрибута первичным ключом может предполагать неявное ограничение NOT NULL + индекс, делая ddl более компактным. В СУБД есть механизмы для генерации уникальных значений, которые вы можете использовать для значений первичных ключей. > Мы можем внешнему ключу назначить ссылку на уникальный и получим аналогичный результат. Не обязательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 11:22 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
TempUserDub, Каждая строка таблицы всегда имеет свой собственный уникальный номер. К сожалению он может измениться, поэтому приходится вводить (не для всех таблиц) искусственный заменитель - суррогатный ключ. Это и есть первичный ключ таблицы. Все ссылки идут только на него. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 11:55 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
_мод Подскажите. пожалуйста, какие ссылки вы подразумеваете? Где их можно применить? Если верно понял, то данным сурогатным ключом может быть и уникальный? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 12:07 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
TempUserDubДанный вопрос о предназначении первичного ключа и отличии от уникально достатончо часто встречает в интернете, но нигде нет точного ответа. Я искренне благодарен всем пользователям, учавствующим в данном обсуждении. Главное отличие уникальное ключа от первичного, помимо допустимости NULL - уникальных ключей может быть много, а первичный - один. Внешний ключ может ссылаться и на первичный, и на уникальный ключ. Ещё раз, разницы никакой и нет, потому и так сложно найти правильный ответ в сети. Первичный ключ -- это один, теоретически, любой из уникальных. То, что в уникальных ключах разрешают NULL-ы, а в первичных -- нет, это (на уровне теории) можно рассматривать как исторический курьёз. TempUserDubВ итоге, учитывая, что функции первичного ключа дублируются уникальным - для чего первчиному ключу делать ограничение на количество ключей? Как раз всё дело в функции. Функция первичного ключа -- идентифицировать запись. Функция уникального индекса -- обеспечивать уникальность. Просто люди договорились, что будут выбирать один ключ из множества, чтобы он был ключём по умолчанию, с помощью которого ищется запись. TempUserDubМы можем внешнему ключу назначить ссылку на уникальный и получим аналогичный результат. Да. Но если ты будешь ссылаться на поля первичного ключа, то синтаксис CREATE FOREIGN KEY может быть легче -- не надо указывать, на какой ключ ты ссылаешься, потому что PK только один (0..1). В частности и для этих целей в СУБД выбирают только один PK. TempUserDubМне необходимо понять этот вопрос, чтобы двигаться далее в изучении БД и SQL) По-моему ты слишком серьёзно подходишь к данной проблеме. Тут нет какой-то большой мысли или теории, стоящей за этим, просто вопросы удобства. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 12:37 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
guest_20040621> нигде нет точного ответа Предполагается, что атрибуты сущности имеют некий смысл в рамках предметной области. Для первичного ключа этого требования нет, если угодно, это элемент технического дизайна, а не предметной области. В конкретных реализациях СУБД объявление атрибута первичным ключом может предполагать неявное ограничение NOT NULL + индекс, делая ddl более компактным. В СУБД есть механизмы для генерации уникальных значений, которые вы можете использовать для значений первичных ключей. Это не так. первичный ключ, как и любое другое поле или набор полей в таблице, могут иметь или не иметь смысл в предметной области, которой посвящена таблица. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 12:40 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
_модTempUserDub, Каждая строка таблицы всегда имеет свой собственный уникальный номер. К сожалению он может измениться, поэтому приходится вводить (не для всех таблиц) искусственный заменитель - суррогатный ключ. Это и есть первичный ключ таблицы. Все ссылки идут только на него. Это тоже неправильно. Это такое обобщение на все СУБД из опыта общения с современным MSSQL, видимо. Оно неверно. Во-первых, первичный ключ не обязан быть суррогатным. Во-вторых, идентификаторы строк в таблицах в некоторых СУБД очень даже могут меняться, и меняются, и ничего глобально страшного в этом нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 12:43 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
TempUserDub _мод Подскажите. пожалуйста, какие ссылки вы подразумеваете? Где их можно применить? Если верно понял, то данным сурогатным ключом может быть и уникальный? Он, видимо, имел в виду ссылки на физическом уровне из записей индекса таблицы на записи самой таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 12:45 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
TempUserDub _мод Подскажите. пожалуйста, какие ссылки вы подразумеваете? Где их можно применить? Если верно понял, то данным сурогатным ключом может быть и уникальный? Ссылки между таблицами. Сурогатный ключ всегда единственный, уникальный и первичный. Все остальное не ключи а индексы для уникальности или ускорения поиска. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 12:46 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
MasterZivЭто тоже неправильно. Это такое обобщение на все СУБД из опыта общения с современным MSSQL, видимо. Оно неверно. Во-первых, первичный ключ не обязан быть суррогатным. Во-вторых, идентификаторы строк в таблицах в некоторых СУБД очень даже могут меняться, и меняются, и ничего глобально страшного в этом нет. Это опыт. Я всегда ввожу сур. ключ для ВСЕХ сущностных таблиц. Поэтому проблемы ключей для меня не существует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 12:57 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
мальчег спросил в чем смысл жизни и все хором бросились отвечать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 12:57 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
MasterZivОн, видимо, имел в виду ссылки на физическом уровне из записей индекса таблицы на записи самой таблицы. Отнюдь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 12:58 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
MasterZiv "Функция первичного ключа -- идентифицировать запись. Функция уникального индекса -- обеспечивать уникальность. Просто люди договорились, что будут выбирать один ключ из множества, чтобы он был ключём по умолчанию, с помощью которого ищется запись." Спасибо. Это самый адекватный ответ, после которого начинаешь понимать смысл первчиного ключа и отличие от уникального) Признаться, не понимаю, для чего было дублировать понятия и создавать первичный. У первичного ключа имеется преимущество - создание ключа из нескольких столбцов. Можно было дать возможность создавать группу уникальных ключей, дав ей название групповой уникальный ключ, что позволило бы избежать путаницы в понятиях, поскольку и при помощи уникальный ключа можно идентифицовать строку. [quot MasterZiv]TempUserDubОн, видимо, имел в виду ссылки на физическом уровне из записей индекса таблицы на записи самой таблицы. Да. Я верно понял, что мы не можем получит доступ к строке по прямой ссылке\адресу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 13:13 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
MasterZiv, возьмите за правило: меня поправлять нет необходимости. Фраза построена именно так, как должна, с учётом уровня подготовки задавшего вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 13:25 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
Вы бы почитали хотя бы о нормализации, проектировании БД и о том, какое значение там имеет первичный ключ. Вот для затравки: Переменная отношения находится во второй нормальной форме тогда и только тогда, когда она находится в первой нормальной форме и каждый неключевой атрибут неприводимо зависит от ее потенциального ключа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 15:02 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
guest_20040621MasterZiv, возьмите за правило: меня поправлять нет необходимости. Фраза построена именно так, как должна, с учётом уровня подготовки задавшего вопрос. Возьми за правило регистрироваться при входе, и я тогда смогу разбираться, кто постил данное сообщение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 17:30 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
TempUserDub MasterZiv "Функция первичного ключа -- идентифицировать запись. Функция уникального индекса -- обеспечивать уникальность. Просто люди договорились, что будут выбирать один ключ из множества, чтобы он был ключём по умолчанию, с помощью которого ищется запись." Спасибо. Это самый адекватный ответ, после которого начинаешь понимать смысл первчиного ключа и отличие от уникального) Да не будет тут вообще адекватного ответа. Все ответы будут в той или иной степени дурацкие. Потому что вопрос такой. TempUserDubПризнаться, не понимаю, для чего было дублировать понятия и создавать первичный. У первичного ключа имеется преимущество - создание ключа из нескольких столбцов. Можно было дать возможность создавать группу уникальных ключей, дав ей название групповой уникальный ключ, что позволило бы избежать путаницы в понятиях, поскольку и при помощи уникальный ключа можно идентифицовать строку. Ну, жизнь вообще сложна и многообразна.... TempUserDubЯ верно понял, что мы не можем получить доступ к строке по прямой ссылке\адресу? Так первичный ключ -- и есть "адрес" строки в таблице. Без него ты можешь только получить конкретную строку, перечисляя все строки тем или иным образом, выводя все строки, или строки с каким-либо фильтром. Да, без него к конкретной записи ты доступ не получишь. Достаточно хорошая аналогия -- адрес объекта. Если ты его имеешь, то прямо по адресу получаешь объект. Если не имеешь, то ты должен просканировать всю память, чтобы перебрать все объекты и найти нужный тебе. Если ты имеешь PK (первичный ключ), то ты можешь получить сразу запись. Если нет -- тебе надо перебрать все записи таблицы, чтобы найти нужный объект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 17:39 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
MasterZivЭто тоже неправильно. Это такое обобщение на все СУБД из опыта общения с современным MSSQL, видимо. Оно неверно. . скорей не с MSSQL, а какой-то иерархической он путает. В РМД принципиально не индексированное множество, а в иерархических типа индексированные множества (коллекции, массивы). Но для _мод эта разница не преодолима уже много лет. Такую твёрдость в этом вопросе может проявлять, скорей всего, только не исправимый иерархист. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 17:57 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
vadiminfo, _мод же гест, призрак, эфимерия... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 17:59 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
MasterZiv Под адекватным я подразумевал ответ, после которого будет понятнет смысл первичного ключа и отличие от уникального без глубокого погружения в теорию, простыми словами и правильно построенной фразой. Вопрос решен) Тему можно закрывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 19:06 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
MasterZiv Под адекватным я подразумевал ответ, после которого будет понятнет смысл первичного ключа и отличие от уникального без глубокого погружения в теорию, простыми словами и правильно построенной фразой. Вопрос решен) Тему можно закрывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 19:40 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
MasterZiv_мод же гест, призрак, эфимерия... Мы же в матрице (оффтоп) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2013, 09:21 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
vadiminfoВ РМД принципиально не индексированное множество Пора бы забыть эти глупости. Делом надо заниматься, а не модельками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2013, 09:23 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
_модvadiminfoВ РМД принципиально не индексированное множество Пора бы забыть эти глупости. Делом надо заниматься, а не модельками. Кодд изобрел РМД. Она потеснила иерархические. А мы типа внутри РМД опять иерархические "дела" приплетаем? Чтобы отстать от развитых стран и в этом вопросе? Спасибо, мы уж как-нибудь модельками обойдемся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2013, 09:43 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38397312&tid=1541121]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
158ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 10ms |
| total: | 270ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...