powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Смысл первичного ключа
25 сообщений из 80, страница 3 из 4
Смысл первичного ключа
    #38395410
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerно есть подозрение, что Вы почему-то считаете, что для foreign key нужен PK.таки да:TempUserDubВнешний ключ может ссылаться и на первичный, и на уникальный ключ.TempUserDub, внешний ключ может ссылаться на что угодно :) да, в некоторых СУБД есть ограничение, что для создания FK надо создать "соответствующий" индекс на родительской таблице, но это, повторюсь, ограничение отдельных СУБД, никакое не глобальное правило.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38395531
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TempUserDubДанный вопрос о предназначении первичного ключа и отличии от уникально достатончо часто встречает в интернете, н о нигде нет точного ответа
Имхо всё очень просто: для того, чтобы не писать в куче мест статей и книг фразу "на таблице есть хотя бы один уникальный ключ", Кодд однажды сказал "назовём один из уникальных ключей первичным" и далее пишет более коротко, "есть первичный ключ"
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38395688
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> нигде нет точного ответа

Предполагается, что атрибуты сущности имеют некий смысл в рамках предметной области. Для первичного ключа этого требования нет, если угодно, это элемент технического дизайна, а не предметной области. В конкретных реализациях СУБД объявление атрибута первичным ключом может предполагать неявное ограничение NOT NULL + индекс, делая ddl более компактным. В СУБД есть механизмы для генерации уникальных значений, которые вы можете использовать для значений первичных ключей.

> Мы можем внешнему ключу назначить ссылку на уникальный и получим аналогичный результат.

Не обязательно.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38395782
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TempUserDub,
Каждая строка таблицы всегда имеет свой собственный уникальный номер. К сожалению он может измениться, поэтому приходится вводить (не для всех таблиц) искусственный заменитель - суррогатный ключ. Это и есть первичный ключ таблицы. Все ссылки идут только на него.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38395815
TempUserDub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_мод
Подскажите. пожалуйста, какие ссылки вы подразумеваете? Где их можно применить? Если верно понял, то данным сурогатным ключом может быть и уникальный?
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38395871
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TempUserDubДанный вопрос о предназначении первичного ключа и отличии от уникально достатончо часто встречает в интернете, но нигде нет точного ответа. Я искренне благодарен всем пользователям, учавствующим в данном обсуждении.

Главное отличие уникальное ключа от первичного, помимо допустимости NULL - уникальных ключей может быть много, а первичный - один.
Внешний ключ может ссылаться и на первичный, и на уникальный ключ.


Ещё раз, разницы никакой и нет, потому и так сложно найти правильный ответ в сети.
Первичный ключ -- это один, теоретически, любой из уникальных.
То, что в уникальных ключах разрешают NULL-ы, а в первичных -- нет, это (на уровне теории) можно рассматривать как исторический курьёз.

TempUserDubВ итоге, учитывая, что функции первичного ключа дублируются уникальным - для чего первчиному ключу делать ограничение на количество ключей?


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

TempUserDubМы можем внешнему ключу назначить ссылку на уникальный и получим аналогичный результат.

Да. Но если ты будешь ссылаться на поля первичного ключа, то синтаксис CREATE FOREIGN KEY может быть легче -- не
надо указывать, на какой ключ ты ссылаешься, потому что PK только один (0..1).
В частности и для этих целей в СУБД выбирают только один PK.

TempUserDubМне необходимо понять этот вопрос, чтобы двигаться далее в изучении БД и SQL)


По-моему ты слишком серьёзно подходишь к данной проблеме.
Тут нет какой-то большой мысли или теории, стоящей за этим, просто вопросы удобства.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38395876
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> нигде нет точного ответа

Предполагается, что атрибуты сущности имеют некий смысл в рамках предметной области. Для первичного ключа этого требования нет, если угодно, это элемент технического дизайна, а не предметной области. В конкретных реализациях СУБД объявление атрибута первичным ключом может предполагать неявное ограничение NOT NULL + индекс, делая ddl более компактным. В СУБД есть механизмы для генерации уникальных значений, которые вы можете использовать для значений первичных ключей.


Это не так. первичный ключ, как и любое другое поле или набор полей в таблице, могут иметь или не иметь смысл в предметной области, которой посвящена таблица.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38395885
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модTempUserDub,
Каждая строка таблицы всегда имеет свой собственный уникальный номер. К сожалению он может измениться, поэтому приходится вводить (не для всех таблиц) искусственный заменитель - суррогатный ключ. Это и есть первичный ключ таблицы. Все ссылки идут только на него.

Это тоже неправильно.
Это такое обобщение на все СУБД из опыта общения с современным MSSQL, видимо.
Оно неверно.

Во-первых, первичный ключ не обязан быть суррогатным.
Во-вторых, идентификаторы строк в таблицах в некоторых СУБД очень даже могут меняться, и меняются, и ничего глобально страшного в этом нет.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38395887
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TempUserDub _мод
Подскажите. пожалуйста, какие ссылки вы подразумеваете? Где их можно применить? Если верно понял, то данным сурогатным ключом может быть и уникальный?

Он, видимо, имел в виду ссылки на физическом уровне из записей индекса таблицы на записи самой таблицы.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38395891
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TempUserDub _мод
Подскажите. пожалуйста, какие ссылки вы подразумеваете? Где их можно применить? Если верно понял, то данным сурогатным ключом может быть и уникальный?
Ссылки между таблицами. Сурогатный ключ всегда единственный, уникальный и первичный. Все остальное не ключи а индексы для уникальности или ускорения поиска.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38395918
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivЭто тоже неправильно.
Это такое обобщение на все СУБД из опыта общения с современным MSSQL, видимо.
Оно неверно.

Во-первых, первичный ключ не обязан быть суррогатным.
Во-вторых, идентификаторы строк в таблицах в некоторых СУБД очень даже могут меняться, и меняются, и ничего глобально страшного в этом нет.
Это опыт. Я всегда ввожу сур. ключ для ВСЕХ сущностных таблиц. Поэтому проблемы ключей для меня не существует.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38395920
еарзолд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мальчег спросил в чем смысл жизни и все хором бросились отвечать
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38395922
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivОн, видимо, имел в виду ссылки на физическом уровне из записей индекса таблицы на записи самой таблицы.

Отнюдь :)
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38395947
TempUserDub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv

"Функция первичного ключа -- идентифицировать запись.
Функция уникального индекса -- обеспечивать уникальность. Просто люди договорились, что
будут выбирать один ключ из множества, чтобы он был ключём по умолчанию, с помощью которого
ищется запись."

Спасибо. Это самый адекватный ответ, после которого начинаешь понимать смысл первчиного ключа и отличие от уникального)

Признаться, не понимаю, для чего было дублировать понятия и создавать первичный. У первичного ключа имеется преимущество - создание ключа из нескольких столбцов. Можно было дать возможность создавать группу уникальных ключей, дав ей название групповой уникальный ключ, что позволило бы избежать путаницы в понятиях, поскольку и при помощи уникальный ключа можно идентифицовать строку.

[quot MasterZiv]TempUserDubОн, видимо, имел в виду ссылки на физическом уровне из записей индекса таблицы на записи самой таблицы.
Да.
Я верно понял, что мы не можем получит доступ к строке по прямой ссылке\адресу?
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38395971
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv, возьмите за правило: меня поправлять нет необходимости. Фраза построена именно так, как должна, с учётом уровня подготовки задавшего вопрос.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38396158
Фотография Zukora
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы бы почитали хотя бы о нормализации, проектировании БД и о том, какое значение там имеет первичный ключ.

Вот для затравки:

Переменная отношения находится во второй нормальной форме тогда и только тогда, когда она находится в первой нормальной форме и каждый неключевой атрибут неприводимо зависит от ее потенциального ключа.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38396371
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621MasterZiv, возьмите за правило: меня поправлять нет необходимости. Фраза построена именно так, как должна, с учётом уровня подготовки задавшего вопрос.

Возьми за правило регистрироваться при входе, и я тогда смогу разбираться, кто постил данное сообщение
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38396378
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TempUserDub MasterZiv

"Функция первичного ключа -- идентифицировать запись.
Функция уникального индекса -- обеспечивать уникальность. Просто люди договорились, что
будут выбирать один ключ из множества, чтобы он был ключём по умолчанию, с помощью которого
ищется запись."

Спасибо. Это самый адекватный ответ, после которого начинаешь понимать смысл первчиного ключа и отличие от уникального)


Да не будет тут вообще адекватного ответа.
Все ответы будут в той или иной степени дурацкие.
Потому что вопрос такой.

TempUserDubПризнаться, не понимаю, для чего было дублировать понятия и создавать первичный. У первичного ключа имеется преимущество - создание ключа из нескольких столбцов. Можно было дать возможность создавать группу уникальных ключей, дав ей название групповой уникальный ключ, что позволило бы избежать путаницы в понятиях, поскольку и при помощи уникальный ключа можно идентифицовать строку.


Ну, жизнь вообще сложна и многообразна....

TempUserDubЯ верно понял, что мы не можем получить доступ к строке по прямой ссылке\адресу?

Так первичный ключ -- и есть "адрес" строки в таблице.
Без него ты можешь только получить конкретную строку, перечисляя все строки тем или иным образом, выводя все строки, или строки с каким-либо фильтром.

Да, без него к конкретной записи ты доступ не получишь.

Достаточно хорошая аналогия -- адрес объекта. Если ты его имеешь, то прямо по адресу получаешь объект. Если не имеешь, то ты должен просканировать всю память, чтобы перебрать все объекты и найти нужный тебе.
Если ты имеешь PK (первичный ключ), то ты можешь получить сразу запись. Если нет -- тебе надо перебрать все записи таблицы, чтобы найти нужный объект.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38396394
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivЭто тоже неправильно.
Это такое обобщение на все СУБД из опыта общения с современным MSSQL, видимо.
Оно неверно.

.
скорей не с MSSQL, а какой-то иерархической он путает. В РМД принципиально не индексированное множество, а в иерархических типа индексированные множества (коллекции, массивы). Но для _мод эта разница не преодолима уже много лет. Такую твёрдость в этом вопросе может проявлять, скорей всего, только не исправимый иерархист.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38396398
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfo,

_мод же гест, призрак, эфимерия...
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38396445
TempUserDub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv
Под адекватным я подразумевал ответ, после которого будет понятнет смысл первичного ключа и отличие от уникального без глубокого погружения в теорию, простыми словами и правильно построенной фразой.

Вопрос решен)
Тему можно закрывать.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38396470
TempUserDub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv
Под адекватным я подразумевал ответ, после которого будет понятнет смысл первичного ключа и отличие от уникального без глубокого погружения в теорию, простыми словами и правильно построенной фразой.

Вопрос решен)
Тему можно закрывать.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38397312
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv_мод же гест, призрак, эфимерия...
Мы же в матрице (оффтоп)
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38397314
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vadiminfoВ РМД принципиально не индексированное множество
Пора бы забыть эти глупости. Делом надо заниматься, а не модельками.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38397327
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модvadiminfoВ РМД принципиально не индексированное множество
Пора бы забыть эти глупости. Делом надо заниматься, а не модельками.

Кодд изобрел РМД. Она потеснила иерархические. А мы типа внутри РМД опять иерархические "дела" приплетаем? Чтобы отстать от развитых стран и в этом вопросе?
Спасибо, мы уж как-нибудь модельками обойдемся.
...
Рейтинг: 0 / 0
25 сообщений из 80, страница 3 из 4
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Смысл первичного ключа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]