powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Смысл первичного ключа
80 сообщений из 80, показаны все 4 страниц
Смысл первичного ключа
    #38391630
TempUserDub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В SQL в параметрах таблицы может присутсвовать первичный ключ.

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

Для получения информации из таблицы, используя команду Select, указываются имена столбцов и, для более точной выборки, необходимые условия.

Учитывая это, подскажите, пожалуйста, в чем смысл первичного ключа, для чего он используется?
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38391692
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TempUserDub используемый для идентификации каждой строки и обеспечивающий различимость всех строк.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38391700
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PK очень полезен для FK
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38391910
ЮВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TempUserDub...подскажите, пожалуйста, в чем смысл первичного ключа, для чего он используется?

Имхо, во многих СУБД значения первичного ключа автоматически индексируются (даже если на столбец с первичным ключом не задано явное создание индекса) или есть хэш-функция для вычисления номера записи по значению ключа.
Поэтому, если в запросе выборки (select) есть условие where на значение первичного ключа, то такая запись
будет найдена очень быстро (в этом случае, например, не надо будет сканировать таблицу из 1 млн. записей для поиска нужной записи).
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38392930
СхБд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TempUserDubВ SQL в параметрах таблицы может присутсвовать первичный ключ.

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

Для получения информации из таблицы, используя команду Select, указываются имена столбцов и, для более точной выборки, необходимые условия.

Учитывая это, подскажите, пожалуйста, в чем смысл первичного ключа, для чего он используется? не пожалей времени

создай тестовую базку можно примитивно приближённую к боевой
и поизгаляйся без ПК, ФК

обочевидишься..)
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38392950
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TempUserDubВ SQL в параметрах таблицы может присутсвовать первичный ключ.

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

Для получения информации из таблицы, используя команду Select, указываются имена столбцов и, для более точной выборки, необходимые условия.

Учитывая это, подскажите, пожалуйста, в чем смысл первичного ключа, для чего он используется?
Поскольку Вы задаете вопросы в разделе "Проектирование БД", а не "Проектирование реляционных БД", то должны понимать, что никакого смысла в концепции "ключей" нет. Это надуманная концепция и технология (PK/FK), необходимая только в среде псевдореляционных систем. В настоящих БД используется концепция связи между сущностями, а свойства с уникальными значениями могут, разумеется, использоваться для автоматизации контроля, направленного на предотвращение ввода дубликатов сущностей (очевидно, что полностью предотвратить ввод дубликатов невозможно, и, следовательно, должна быть реализована так же и функция слияния экземпляров).
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38393041
TempUserDub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответы.

Забегая вперед, я только начал изучать SQL.

Признаться, не понимаю в чем отличие первичного ключа от уникального.

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

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

Данное определение дается в начале книги, как основополагающее. Если единственное отличие первичного ключа от уникального только возможность связывать таблицы - в чем смысл его давать в начале книги?
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38393045
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TempUserDub Тем не менее, данной возможностью обладает и уникальный ключ.
Уникальный ключ может быть нулл. Уникальных ключей может быть несколько.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38393058
TempUserDub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SERG1257

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

table{f1,f2,f3,4}
Первичный ключ включает все четыре поля.
Но вдобавок к этому, например, первое и третье должны быть уникальными.
А вот второе и четвёртое по отдельности могут повторяться.
Т.е. будет 2 уникальных ключа (на f1 и на f3) и один первичный - на всю четвёрку.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38393086
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2tanglir
Чет мне кажется пример слишком надуманный.
Вот мой пример - таблица работников c полями ай-ди работника, табельный номер, имя, фамилия, дата рождения.
Первичный ключ - ай-ди
Уникальные ключи - табельный номер и комбинация имя, фамилия, дата рождения (у нас маленькая организация и вероятностью совпадений мы пренебрегаем)
Именно первичный ключ использует приложение когда пользователь тыкает на строку в гриде
Именно его мы используем чтобы привязать к работнику его причиндалы.

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

Какой из языков программирования наиболее понятен и тебе?
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38393124
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В SQL в параметрах таблицы может присутсвовать первичный ключ.


Не "может". А "должен".



Учитывая это, подскажите, пожалуйста, в чем смысл первичного ключа, для чего он используется?

Ты же сам написал:

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


Вот в этом и смысл, так и для этого он и используется.....

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


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


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

Это уже проблема твоих данных. Не допускай дубликаты в БД -- и такого не будет.

авторДанное определение дается в начале книги, как основополагающее. Если единственное отличие первичного ключа от уникального только возможность связывать таблицы - в чем смысл его давать в начале книги?

Единственное отличие первичного ключа от уникального -- в названии. Уникальный индекс ещё также называют просто "ключ", или "альтернативный ключ", тогда более понятно, что ключи все равнозначны, одинаково применимы. В таблице естть несколько ключей, один из них ты сам при проектировании таблицы выбираешь как главный.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38393167
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivНе "может". А "должен".
Если на таблицу не булет ссылок, то зачем?
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38393193
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivУ сущности в таблице может быть несколько способов идентификации. Каждый из способов -- это будет уникальный ключ.
Один из уникальных ключей ты в соответствии со своими соображениями о удобстве работы с данными выбираешь как главный.
Он ничем ни лучше и ни хуже других ключей (уникальных индексов), просто ты его выбрал как главный.За единственным исключением - первичный ключ не может включать nullable-столбцы, в то время как просто уникальный ключ, в общем случае, может.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38393196
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NafMasterZivНе "может". А "должен".
Если на таблицу не булет ссылок, то зачем она нужна вообще?Fixed
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38393202
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor TiegaelMasterZivУ сущности в таблице может быть несколько способов идентификации. Каждый из способов -- это будет уникальный ключ.
Один из уникальных ключей ты в соответствии со своими соображениями о удобстве работы с данными выбираешь как главный.
Он ничем ни лучше и ни хуже других ключей (уникальных индексов), просто ты его выбрал как главный.За единственным исключением - первичный ключ не может включать nullable-столбцы, в то время как просто уникальный ключ, в общем случае, может.


Ну это не очень значительно. Очень редко в жизни встречается.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38393203
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TempUserDubСпасибо за ответы.
Забегая вперед, я только начал изучать SQL.
А вопросы задаете не про SQL)) Вероятно, точнее, Вы только начали изучать теорию реляционных БД, пропустив теорию БД.
TempUserDubПризнаться, не понимаю в чем отличие первичного ключа от уникального.
Если в таблице указан столбец, обозначенный, как первичный ключ, то мы не может добавить в него поле, уже имеющееся в данном столбце. Тем не менее, данной возможностью обладает и уникальный ключ.
Точнее "возможный" ("потенциальный"), а не "уникальный". Вот текст автора так и не реализованной РМД:
"For each base relation one candidate key is selected as the primary key. For a given database, those domains upon which the simple (i.e., single-attribute) primary keys are defined are called the primary domains of that database. Note that not all component attributes of a compound (i.e., multiattribute) primary key need be defined on primary domains. Primary domains are important for the support of transactions such as "remove supplier 3 from the database", in which we wish to remove 3 wherever it occurs as a supplier serial number, but not in any of its other uses."
Не расстраивайтесь, если этот текст запутает Вас еще больше))...
"Первичный ключ" моделирует в РБД тот факт, что сущность существует независимо от значений ее свойств. В настоящих БД для этой цели используется идентификатор, не являющийся свойством сущности.
TempUserDubПервичный ключ служит для идентификации каждой строки. Не смотря на это, при выборке с помощью команды Select приходится указывать условие, представляющее собой содержимое поля-первичного ключа. Аналогичную возможность предоставляет уникальный ключ. Помимо этого, для точной идентификации строк мы можем использовать несколько условий. В случае, если будет несколько строк с абсолютно идентичными данными - мы все-равно получим необходимую нам информацию, хоть и продублированную.
В настоящей БД - да (поскольку идентификатор не является свойством сущности).
В РБД - нет, поскольку в отношении не может быть одинаковых кортежей.
В SQL-БД такая возможность допускается, но смысла в ней нет, по мнению Дейта.
TempUserDubДанное определение дается в начале книги, как основополагающее. Если единственное отличие первичного ключа от уникального только возможность связывать таблицы - в чем смысл его давать в начале книги?
Не связывать таблицы, а моделировать связь между сущностями , которые, в свою очередь, моделируются с помощью таблиц))
Связывать таблицы можно по любым полям.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38393338
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TempUserDubВ SQL в параметрах таблицы может присутсвовать первичный ключ.

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

Для получения информации из таблицы, используя команду Select, указываются имена столбцов и, для более точной выборки, необходимые условия.

Учитывая это, подскажите, пожалуйста, в чем смысл первичного ключа, для чего он используется?

Объявление в схеме ключей позволят навязывать ограничения целостности за счет обеспечения уникальности значений группы столбцов. В частности, навязывать схеме функциональные зависимости между столбцами. Однако, первичный ключ теоретически в этом плане ничего добавляет по сравнению с альтернативными (ну может быть в некоторых СУБД группа столбцов альтернативного ключа может допускать NULL для части столбцов, что удобно). Но первичный ключ в таблице может быть только один. Что может иметь значение для упрощения понимания схемы, например, в случае использования суррогатных ключей. Кроме того, использование некоторых механизмов СУБД предполагает возможность указывать первичный ключ, например, некоторые виды в репликации Оракла.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38393387
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor TiegaelNafпропущено...

Если на таблицу не булет ссылок, то зачем она нужна вообще?Fixed
например таблица оборотов или остатков товара
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38393428
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nafнапример таблица оборотов или остатков товараА, вы имеете в виду самый нижний уровень в иерархии. Я почему-то подумал про случай, когда таблица вообще не затрагивается никакими FK.

Ну, не знаю. Если вам не надо, то конечно не делайте. Мне, например, однажды довелось прикручивать дочку к операциям первичного учета. Если бы изначально не было суррогатного PK, даунтайм был бы адский.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38393580
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor TiegaelМне, например, однажды довелось прикручивать дочку к операциям первичного учета. Если бы изначально не было суррогатного PK, даунтайм был бы адский.
Мм... а из-за чего, собственно?

Код: sql
1.
2.
3.
4.
5.
6.
7.
create sequence S start with 1000000000000;
alter table T add id integer;
alter table T modify id default S.nextval;
update T set id = rownum where id is null;
alter table T modify id not null;
create index I on T(id);
alter table T add primary key;



Вроде бы ничего из этого не требует адских мук. Ну только update может потребоваться проводить порциями с промежуточными коммитами.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38393628
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> в чем смысл его давать в начале книги?

В том, что это фундаментальное понятие, использовать которое вы будете всегда. Первый вопрос, который вы задаёте себе при проектировании любой сущности - как я буду идентифицировать экземпляры сущности? Представьте, что у вас не база данных, а пачка листов бумаги. Каждый лист содержит какие-то данные, которые могут отличаться, а могут и совпадать. Для того, чтобы объяснить вашему приятелю, каким именно листом нужно воспользоваться, вы можете использовать множество способов, самый простой и естественный из которых - пронумеровать листы и назвать приятелю нужный номер. Уникальный идентификатор не обязан быть числом, это просто наиболее понятная аналогия.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38394049
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,

В MSSQL блокировки schema modification не совместимы ни с какими другими, насколько я помню. Т.е. все писатели, а это 95% пользователей, выстроились бы в очередь, пока я не закончу.

Ну и не привык я создавать таблицы без PK.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38394061
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor Tiegaelsoftwarer,

В MSSQL блокировки schema modification не совместимы ни с какими другими, насколько я помню. Т.е. все писатели, а это 95% пользователей, выстроились бы в очередь, пока я не закончу.

А зачем нужно всю операцию делать в одной транзакции?
Добавление в таблицу поля и выставленние default для него не займут много времени, а обновление не потребует блокировки schema modification
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38394062
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor TiegaelВ MSSQL блокировки schema modification не совместимы ни с какими другими, насколько я помню.
А какие операции в описанном сценарии вызовут такие блокировки надолго? Конечно, в каждом сервере есть местная специфика, и правильный скрипт, наверное, будет выглядеть несколько иначе, но в целом я почти уверен в существовании подобного верного пути.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38394217
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer, Кот Матроскин,

Я не знаю, как в 2012 с сиквенсами, что с ними можно делать, а что нельзя. На тот момент это был 2005, там их не было, и в нем это выглядело бы так:

1. Атрибут identity нельзя выставить у существующего столбца, только через drop column / add (ни в какой версии нельзя, на самом деле). Это значит, что столбец придется сразу создавать как not null identity, иначе нумерация пойдет непонятно как (с новых записей? а старые останутся непронумерованными? и ловить потом эти дырки, стараясь избежать конфликтов уникальности?)
2. Вставка чего угодно not null приведет к тому, что практ. все страницы таблицы попадают на page split - в них надо добавить данные, а места уже нет. Если в табличке хотя бы 100М записей, на этом месте все очень конкретно подождут.
3. Инкремент не имеет смысла делать как просто столбец или некластерный индекс, он же монотонно возрастающий. При создании же кластерника все остальные индексы ребилдятся, у них заменяется RID на значение кластерного индекса. Тут, понятно, лучше малой кровью - сначала дропнуть все индексы, потом в конце их пересоздать. Но они же там не просто так, их кто-то использует.

Вкратце - лучше сразу проектировать правильно.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38394223
TempUserDub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir
Я верно понял, что в случае, если 4 указанных столбца объявлены первичным ключом, то при добавлении строки с аналогичным набором информации - появится ошибка, но если изменить хотя бы одно значение, то строка добавится? Таким образом, уникальной является комбинация из 4-х столбцов, каждый из которых, в отдельности, может быть не уникальным, за исключением указанных?

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

В определении говорится о том, что первичный ключ позволяет быстро получить неободимую строку. Подскажите, пожалуйста, где это применяется, как её быстро получить кроме обычного указания Select * From Table Where <уникальный столбец> = <значение в уникальном столбце> ? Если приведенный способ единственный - в чем его преимущество перед обычной выборкой\обычном получении строки?

MasterZiv
Язык Java

guest_20040621
Благодарю за отличный пример.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38394226
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1.1)да
1.2)да
2.1)выше уже ведь отметили , что первичный ключ - один из множества уникальных, который по неким понятным вам причинам (в т.ч. и от балды) выбран "главным"
2.2)почему "либо"? это разные, но не взаимоисключающие действия
3)"определение" в студию
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38394252
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor Tiegael1. Атрибут identity нельзя выставить у существующего столбца
Тогда понятно, спасибо.

ЗЫ. Вот поэтому я и не люблю всякие особые сущности.. хлопот с ними..
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38394473
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor Tiegael1. Атрибут identity нельзя выставить у существующего столбца, только через drop column / add (ни в какой версии нельзя, на самом деле). Это значит, что столбец придется сразу создавать как not null identity, иначе нумерация пойдет непонятно как (с новых записей? а старые останутся непронумерованными? и ловить потом эти дырки, стараясь избежать конфликтов уникальности?)
2. Вставка чего угодно not null приведет к тому, что практ. все страницы таблицы попадают на page split - в них надо добавить данные, а места уже нет. Если в табличке хотя бы 100М записей, на этом месте все очень конкретно подождут.

А почему бы не сделать через копирование и drop/переименование (благо констрейнтов все равно нет)? Некоторое время табличка будет недоступна - но вряд ли больше секунды.

Ennor Tiegael3. Инкремент не имеет смысла делать как просто столбец или некластерный индекс, он же монотонно возрастающий. При создании же кластерника все остальные индексы ребилдятся, у них заменяется RID на значение кластерного индекса. Тут, понятно, лучше малой кровью - сначала дропнуть все индексы, потом в конце их пересоздать. Но они же там не просто так, их кто-то использует.


А что, до PK табличка была кучей? Ну тогда большой беды не будет, если она так и останется :)
Вопрос кластерного индекса, мне кажется, все-таки параллелен PK.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38394505
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскин А почему бы не сделать через копирование и drop/переименование
А что делать с записями, попавшими в табличку после копирования? Особенно в условиях отсутствия ключа?
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38394541
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerКот Матроскин А почему бы не сделать через копирование и drop/переименование
А что делать с записями, попавшими в табличку после копирования? Особенно в условиях отсутствия ключа?

"Отсутствие ПК" <> "возможность полностью одинаковых кортежей", все-таки.
Копируем данные из таблицы один раз, потом блокируем ее и копируем отсутствующие (см. выше) второй раз (Сколько их там набежит за время "большого" копирования?)

А если возможны кортежи с полностью одинаковыми "смысловыми" полями - так это в любом случае попадалово, что с суррогатом, что без.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38394545
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскин"Отсутствие ПК" <> "возможность полностью одинаковых кортежей", все-таки
Зато изрядно похоже на "поиск одинаковых записей долог и труден".

Кот Матроскин(Сколько их там набежит за время "большого" копирования?)
Может довольно изрядно. Во всяком случае, блокировать всю деятельность на время поиска разницы может быть.... очень неприятно.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38394563
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerКот Матроскин"Отсутствие ПК" <> "возможность полностью одинаковых кортежей", все-таки
Зато изрядно похоже на "поиск одинаковых записей долог и труден".
.
Не верю в возможность таблицы хотя бы с 10 атрибутами без необходимости в первичном ключе. Сравнить 10 полей (пара самых селективных из которых будет в индексе) - долго и трудно?

Кот Матроскин(Сколько их там набежит за время "большого" копирования?)
Может довольно изрядно.[/quot]
Каковы Ваши оценки "плохого случая"? Сколько у нас записей всего, сколько получаем в сутки, сколько продлится "большое" копирование, сколько займет поиск "новеньких" ( возникших за время оного копирования)?
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38394612
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TempUserDub,

MasterZiv
Язык Java


Первичный ключь — это аналог адреса объекта в java, это ссылка на объект, без которой объект будет просто недоступен.

Если из таблицы убрать первичный ключь, и все записи будут одинаковыми, то ты ничего не сможешь сделать с этими записями по-отдельности, можно будет только что-то сделать со всеми ими вместе.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38395069
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerEnnor TiegaelМне, например, однажды довелось прикручивать дочку к операциям первичного учета. Если бы изначально не было суррогатного PK, даунтайм был бы адский.
Мм... а из-за чего, собственно?

Код: sql
1.
2.
3.
4.
5.
6.
7.
create sequence S start with 1000000000000;
alter table T add id integer;
alter table T modify id default S.nextval;
update T set id = rownum where id is null;
alter table T modify id not null;
create index I on T(id);
alter table T add primary key;



Вроде бы ничего из этого не требует адских мук. Ну только update может потребоваться проводить порциями с промежуточными коммитами.
Когда будешь делать alter table T modify id not null - получишь в этот самый момент полное перестроение практически всей таблицы.
Это факт проверенный опытом.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38395133
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan Durak Когда будешь делать alter table T modify id not null - получишь в этот самый момент полное перестроение практически всей таблицы. Это факт проверенный опытом.
Сочувствую. Чего только в мире не бывает. К счастью, у меня не столь печальный опыт. Максимум, может стоит добавить novalidate, чтобы сервер не тратил время на бесполезную проверку.

А из-за чего так? Для чего полностью перестраивать всю таблицу ради одного-единственного constraint-а?
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38395202
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerIvan Durak Когда будешь делать alter table T modify id not null - получишь в этот самый момент полное перестроение практически всей таблицы. Это факт проверенный опытом.
Сочувствую. Чего только в мире не бывает. К счастью, у меня не столь печальный опыт. Максимум, может стоит добавить novalidate, чтобы сервер не тратил время на бесполезную проверку.

А из-за чего так? Для чего полностью перестраивать всю таблицу ради одного-единственного constraint-а?
http://dba.stackexchange.com/questions/29522/why-does-alter-column-to-not-null-cause-massive-log-file-growth
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38395327
TempUserDub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir
Первичный ключ - уникальный столбец (или их группа), используемый для идентификации каждой строки <...>.

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

MasterZiv
Мы можем в таблицу добавить строку без всяких ключей и затем получить её при помощи команды Select * from Table where <имя столбца> = <необходимое значение>. В итоге, объект доступен.

Если рассмотреть вариант, когда пользователь заполняет базу неповторяющимися данными или когда необходимые столбцы имеют уникальный ключ, то в чем преимущество первичного ключа?
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38395328
TempUserDub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir
Первичный ключ - уникальный столбец (или их группа), используемый для идентификации каждой строки <...>.

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

MasterZiv
Мы можем в таблицу добавить строку без всяких ключей и затем получить её при помощи команды Select * from Table where <имя столбца> = <необходимое значение>. В итоге, объект доступен.

Если рассмотреть вариант, когда пользователь заполняет базу неповторяющимися данными или когда необходимые столбцы имеют уникальный ключ, то в чем преимущество первичного ключа?
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38395333
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TempUserDubЕсли рассмотреть вариант, когда пользователь заполняет базу неповторяющимися данными или когда необходимые столбцы имеют уникальный ключ, то в чем преимущество первичного ключа?
Это бессмысленный вопрос. Первичный ключ - это просто "один из уникальных ключей".
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38395335
TempUserDub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer
Все больше склоняюсь к тому, что первичный ключ - это просто уникальный ключ с возможностью моделировать связь между сущностями.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38395337
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскин Не верю в возможность таблицы хотя бы с 10 атрибутами без необходимости в первичном ключе.
Одно никак не связано с другим. Ключ нужен, когда нужно выбрать конкретную запись, количество атрибутов тут не при чём.

Сравнить 10 полей (пара самых селективных из которых будет в индексе) - долго и трудно?
Именно так. Когда часть этих полей null-овские, выражение сравнения рискует оказаться написанным с ошибками. А что касается в индексе - это, скорее, минус. Поскольку после сравнения полей "из индекса" потребуется одноблочным чтением лезть в таблицу за остальными, и хорошо ещё если clustering factor не заставит читать одно и то же по двадцать раз.

Кот МатроскинКаковы Ваши оценки "плохого случая"? Сколько у нас записей всего, сколько получаем в сутки, сколько продлится "большое" копирование, сколько займет поиск "новеньких" ( возникших за время оного копирования)?
Сколько получаем в сутки малокритично - это определяет только количесто требуемых вставок, время будет относительно небольшим. А вот сколько записей, какое оборудование, какая загрузка - это уже в меру фантазии. Но факт в том, что если при наличии ПК сравнение пройдёт простым и мелким MINUS по индексу, а там останется выгрести сравнительно небольшое количество записей, то сравнение полных таблиц будет либо MINUS full table scan-ов в памяти, либо дикое количество одноблочных чтений; то и другое - совсем другой коленкор.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38395339
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TempUserDubВсе больше склоняюсь к тому, что первичный ключ - это просто уникальный ключ с возможностью моделировать связь между сущностями.
Первичный ключ - это просто уникальный ключ. Последних слов не понял, но есть подозрение, что Вы почему-то считаете, что для foreign key нужен PK.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38395372
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TempUserDubТаким образом, первичный ключ, согласно определению, можно использовать для идентификации каждой строки и, соответсвенно, более быстрого к ней доступа.Вам уже много раз повторили, что он нужен только для однозначной идентификации строки(записи, сущности, ...). Скорость доступа не имеет к этому никакого отношения. Не надо больше ничего своего изобретать.

TempUserDubЕсли рассмотреть вариант, когда пользователь заполняет базу неповторяющимися данными или когда необходимые столбцы имеют уникальный ключ, то в чем преимущество первичного ключа?Формально, любой уникальный ключ может быть первичным, в теории между ними нет больше никаких различий.
Выбор одного из них в качестве первичного произволен и на практике диктуется некоторыми дополнительными, практическими же, соображениями, например, минимальностью общего размера или минимальным количеством атрибутов в составе.

При реализации во многих РСУБД дали возможность создавать уникальные ключи, любой атрибут которого или даже все могуть быть NULL. Несколько сомнительное решение имеющее в разных РСУБД разный смысл из-за разной же интерпретации NULL, что приводит к недоразумениям при миграции баз данных между разными платформами. Если же ни один атрибут уникального ключа не может быть NULL и это указано на уровне механизма ограничений РСУБД(NOT NULL), то никакой разницы между таким уникальным и основным ключами не существует. Если задан подобный уникальный ключ, то он же может быть объявлен основым, если такого не существует. На практике, можно не задавать ограничения типа PRIMARY KEY, если существует уникальный(е) ключ(и), позволяющие однозначно идентифицировать каждую строку, но это нередко воспринимается как дурной тон.

До тех пор пока в таблице явно не задан первичный(или уникальный, позволяющий однозначно идентифицировать строку(запись, сущность, ...) нет никакой гарантии, что в таблице не окажутся абсолютно одинаковые кортежи. IMHO, возможность создавать в РСУБД таблицы без явного указания способа идентификации строки(первичного или уникального(NOT NULL) ключей), является "медвежьей" услугой со стороны производителей и является потенциальным источником проблем.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38395388
TempUserDub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ChA
Спасибо за комментарийю

Подскажите, пожалуйста, имея первичный ключ можно ли как-то быстрее\более коротким способом получить строку, чем при помощи команды Select * from Table where <имя столбца> = <необходимое значение> ?

Пример - в Java в двумерном массиве можно искать необходимый элемент при помощи перебора каждой строки\ячейки. Тем не менее, если мы точно знаем какой нам нужен элемент, то мы можем сразу его получить, указав номер строки и столбца, например, Array[2][3]. В SQL вариант с командой Select, приведенной выше, более напоминает перебор массива.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38395397
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TempUserDubПодскажите, пожалуйста, имея первичный ключ можно ли как-то быстрее\более коротким способом получить строку, чем при помощи команды Select * from Table where <имя столбца> = <необходимое значение> ?Скорость получения данных теоретически не зависит от существования первичного ключа. На практике же, она зависит только от наличия "правильных" индексов. Первичный ключ обычно реализуется с помощью уникального индекса.

TempUserDubПример - в Java в двумерном массиве можно искать необходимый элемент при помощи перебора каждой строки\ячейки. Тем не менее, если мы точно знаем какой нам нужен элемент, то мы можем сразу его получить, указав номер строки и столбца, например, Array[2][3]. В SQL вариант с командой Select, приведенной выше, более напоминает перебор массива.Как раз нет никакого перебора, SQL - декларативный язык. Вы просто указываете, по каким условиям вам нужно получить строки. РСУБД сам определяет каким способом он будет его выполнять. В частном случае, это может быть простое сканирование, т.е., перебор всех строк, пока не будут найдены все, удовлетворяющие заданным условиям. В то же время если есть "удачные" индексы, то поиск может начатся с них и только потом из таблицы будут выбираться данные, по ссылкам, полученным из индекса. Более подробно про индексы и способы доступа к данным лучше читать в учебниках или руководствах по конкретным РСУБД.

P.S. У вас какие-то свои представления о том, что из себя представляют БД. Здесь редко отвечают на подобные вопросы, обычно сразу посылают в сад почитать какой-нибудь учебник по БД, так что вам ещё сильно повезло. Хотя не удивлюсь, если вас скоро с такими вопросами таки начнут посылать.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38395405
TempUserDub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ChA
Данный вопрос о предназначении первичного ключа и отличии от уникально достатончо часто встречает в интернете, н о нигде нет точного ответа Я искренне благодарен всем пользователям, учавствующим в данном обсуждении.

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

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

Мне необходимо понять этот вопрос, чтобы двигаться далее в изучении БД и SQL)
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #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
Смысл первичного ключа
    #38397700
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfo,

но мир то иерархический? синтез - анализ
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38397710
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosvadiminfo,

но мир то иерархический? синтез - анализ

"синтез - анализ" - из диалектической логики, т.е. мир то диалектический тада.
Но если его (мир) затолкать в реляционные таблицы, то легче инфу извлекать, судя по успеху РМД. Да иногда и затакивается легко - таблицы тоже давно юзаются.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38397852
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfo,

РМД - структурное упрощение модели, без СКЛ кода модель не полная
но, дело в том, что СКЛ тоже можно описать как структуру
тогда модель становится структурно полной, типизированной и 'селект "ишак" фром "человек"' не катит, мир становится однозначно интерпретируем
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38397953
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> 'селект "ишак" фром "человек"' не катит, мир становится однозначно интерпретируем

Это иллюзия. Достаточно рассматривать человека как животное, - результат будет другим. Контекст, Сахават.
...
Рейтинг: 0 / 0
Смысл первичного ключа
    #38398130
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621,

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


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