|
|
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
В SQL в параметрах таблицы может присутсвовать первичный ключ. Первичный ключ - уникальный столбец (или их группа), используемый для идентификации каждой строки и обеспечивающий различимость всех строк. Для получения информации из таблицы, используя команду Select, указываются имена столбцов и, для более точной выборки, необходимые условия. Учитывая это, подскажите, пожалуйста, в чем смысл первичного ключа, для чего он используется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 01:51 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
TempUserDub используемый для идентификации каждой строки и обеспечивающий различимость всех строк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 08:45 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
PK очень полезен для FK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 09:00 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
TempUserDub...подскажите, пожалуйста, в чем смысл первичного ключа, для чего он используется? Имхо, во многих СУБД значения первичного ключа автоматически индексируются (даже если на столбец с первичным ключом не задано явное создание индекса) или есть хэш-функция для вычисления номера записи по значению ключа. Поэтому, если в запросе выборки (select) есть условие where на значение первичного ключа, то такая запись будет найдена очень быстро (в этом случае, например, не надо будет сканировать таблицу из 1 млн. записей для поиска нужной записи). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 11:33 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
TempUserDubВ SQL в параметрах таблицы может присутсвовать первичный ключ. Первичный ключ - уникальный столбец (или их группа), используемый для идентификации каждой строки и обеспечивающий различимость всех строк. Для получения информации из таблицы, используя команду Select, указываются имена столбцов и, для более точной выборки, необходимые условия. Учитывая это, подскажите, пожалуйста, в чем смысл первичного ключа, для чего он используется? не пожалей времени создай тестовую базку можно примитивно приближённую к боевой и поизгаляйся без ПК, ФК обочевидишься..) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 22:04 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
TempUserDubВ SQL в параметрах таблицы может присутсвовать первичный ключ. Первичный ключ - уникальный столбец (или их группа), используемый для идентификации каждой строки и обеспечивающий различимость всех строк. Для получения информации из таблицы, используя команду Select, указываются имена столбцов и, для более точной выборки, необходимые условия. Учитывая это, подскажите, пожалуйста, в чем смысл первичного ключа, для чего он используется? Поскольку Вы задаете вопросы в разделе "Проектирование БД", а не "Проектирование реляционных БД", то должны понимать, что никакого смысла в концепции "ключей" нет. Это надуманная концепция и технология (PK/FK), необходимая только в среде псевдореляционных систем. В настоящих БД используется концепция связи между сущностями, а свойства с уникальными значениями могут, разумеется, использоваться для автоматизации контроля, направленного на предотвращение ввода дубликатов сущностей (очевидно, что полностью предотвратить ввод дубликатов невозможно, и, следовательно, должна быть реализована так же и функция слияния экземпляров). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2013, 22:40 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы. Забегая вперед, я только начал изучать SQL. Признаться, не понимаю в чем отличие первичного ключа от уникального. Если в таблице указан столбец, обозначенный, как первичный ключ, то мы не может добавить в него поле, уже имеющееся в данном столбце. Тем не менее, данной возможностью обладает и уникальный ключ. Первичный ключ служит для идентификации каждой строки. Не смотря на это, при выборке с помощью команды Select приходится указывать условие, представляющее собой содержимое поля-первичного ключа. Аналогичную возможность предоставляет уникальный ключ. Помимо этого, для точной идентификации строк мы можем использовать несколько условий. В случае, если будет несколько строк с абсолютно идентичными данными - мы все-равно получим необходимую нам информацию, хоть и продублированную. Данное определение дается в начале книги, как основополагающее. Если единственное отличие первичного ключа от уникального только возможность связывать таблицы - в чем смысл его давать в начале книги? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 03:05 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
TempUserDub Тем не менее, данной возможностью обладает и уникальный ключ. Уникальный ключ может быть нулл. Уникальных ключей может быть несколько. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 03:40 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
SERG1257 Касаемо нескольких ключей - первичный ключ может состоять из нескольких столбцов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 04:36 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
TempUserDub, пример надуманный, но всё же... table{f1,f2,f3,4} Первичный ключ включает все четыре поля. Но вдобавок к этому, например, первое и третье должны быть уникальными. А вот второе и четвёртое по отдельности могут повторяться. Т.е. будет 2 уникальных ключа (на f1 и на f3) и один первичный - на всю четвёрку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 06:38 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
2tanglir Чет мне кажется пример слишком надуманный. Вот мой пример - таблица работников c полями ай-ди работника, табельный номер, имя, фамилия, дата рождения. Первичный ключ - ай-ди Уникальные ключи - табельный номер и комбинация имя, фамилия, дата рождения (у нас маленькая организация и вероятностью совпадений мы пренебрегаем) Именно первичный ключ использует приложение когда пользователь тыкает на строку в гриде Именно его мы используем чтобы привязать к работнику его причиндалы. Табельный номер вполне годится на роль первичного ключа, но он может неизвестен на момент вставки записи и вообще, изменен, что порождает проблему - что делать с атрибутами работника ссылающимися на этот пк Плюс по особому распоряжению в военное время табельный номер может быть неуникальным, что убило бы ссылочную целостность, так что суррогатный ключ надежнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 07:08 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
TempUserDub, Какой из языков программирования наиболее понятен и тебе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 08:43 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
В SQL в параметрах таблицы может присутсвовать первичный ключ. Не "может". А "должен". Учитывая это, подскажите, пожалуйста, в чем смысл первичного ключа, для чего он используется? Ты же сам написал: Первичный ключ - уникальный столбец (или их группа), используемый для идентификации каждой строки и обеспечивающий различимость всех строк. Вот в этом и смысл, так и для этого он и используется..... Что ещё тебе ещё нужно рассказать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 08:50 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
авторПризнаться, не понимаю в чем отличие первичного ключа от уникального. Это и хорошо, потому что отличия никакого нет. У сущности в таблице может быть несколько способов идентификации. Каждый из способов -- это будет уникальный ключ. Один из уникальных ключей ты в соответствии со своими соображениями о удобстве работы с данными выбираешь как главный. Он ничем ни лучше и ни хуже других ключей (уникальных индексов), просто ты его выбрал как главный. автор Помимо этого, для точной идентификации строк мы можем использовать несколько условий. В случае, если будет несколько строк с абсолютно идентичными данными - мы все-равно получим необходимую нам информацию, хоть и продублированную. Это уже проблема твоих данных. Не допускай дубликаты в БД -- и такого не будет. авторДанное определение дается в начале книги, как основополагающее. Если единственное отличие первичного ключа от уникального только возможность связывать таблицы - в чем смысл его давать в начале книги? Единственное отличие первичного ключа от уникального -- в названии. Уникальный индекс ещё также называют просто "ключ", или "альтернативный ключ", тогда более понятно, что ключи все равнозначны, одинаково применимы. В таблице естть несколько ключей, один из них ты сам при проектировании таблицы выбираешь как главный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 09:04 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
MasterZivНе "может". А "должен". Если на таблицу не булет ссылок, то зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 09:30 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
MasterZivУ сущности в таблице может быть несколько способов идентификации. Каждый из способов -- это будет уникальный ключ. Один из уникальных ключей ты в соответствии со своими соображениями о удобстве работы с данными выбираешь как главный. Он ничем ни лучше и ни хуже других ключей (уникальных индексов), просто ты его выбрал как главный.За единственным исключением - первичный ключ не может включать nullable-столбцы, в то время как просто уникальный ключ, в общем случае, может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 09:50 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
NafMasterZivНе "может". А "должен". Если на таблицу не булет ссылок, то зачем она нужна вообще?Fixed ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 09:51 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
Ennor TiegaelMasterZivУ сущности в таблице может быть несколько способов идентификации. Каждый из способов -- это будет уникальный ключ. Один из уникальных ключей ты в соответствии со своими соображениями о удобстве работы с данными выбираешь как главный. Он ничем ни лучше и ни хуже других ключей (уникальных индексов), просто ты его выбрал как главный.За единственным исключением - первичный ключ не может включать nullable-столбцы, в то время как просто уникальный ключ, в общем случае, может. Ну это не очень значительно. Очень редко в жизни встречается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 09:55 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
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Данное определение дается в начале книги, как основополагающее. Если единственное отличие первичного ключа от уникального только возможность связывать таблицы - в чем смысл его давать в начале книги? Не связывать таблицы, а моделировать связь между сущностями , которые, в свою очередь, моделируются с помощью таблиц)) Связывать таблицы можно по любым полям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 09:56 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
TempUserDubВ SQL в параметрах таблицы может присутсвовать первичный ключ. Первичный ключ - уникальный столбец (или их группа), используемый для идентификации каждой строки и обеспечивающий различимость всех строк. Для получения информации из таблицы, используя команду Select, указываются имена столбцов и, для более точной выборки, необходимые условия. Учитывая это, подскажите, пожалуйста, в чем смысл первичного ключа, для чего он используется? Объявление в схеме ключей позволят навязывать ограничения целостности за счет обеспечения уникальности значений группы столбцов. В частности, навязывать схеме функциональные зависимости между столбцами. Однако, первичный ключ теоретически в этом плане ничего добавляет по сравнению с альтернативными (ну может быть в некоторых СУБД группа столбцов альтернативного ключа может допускать NULL для части столбцов, что удобно). Но первичный ключ в таблице может быть только один. Что может иметь значение для упрощения понимания схемы, например, в случае использования суррогатных ключей. Кроме того, использование некоторых механизмов СУБД предполагает возможность указывать первичный ключ, например, некоторые виды в репликации Оракла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 11:24 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
Ennor TiegaelNafпропущено... Если на таблицу не булет ссылок, то зачем она нужна вообще?Fixed например таблица оборотов или остатков товара ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 11:51 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
Nafнапример таблица оборотов или остатков товараА, вы имеете в виду самый нижний уровень в иерархии. Я почему-то подумал про случай, когда таблица вообще не затрагивается никакими FK. Ну, не знаю. Если вам не надо, то конечно не делайте. Мне, например, однажды довелось прикручивать дочку к операциям первичного учета. Если бы изначально не было суррогатного PK, даунтайм был бы адский. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 12:23 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
Ennor TiegaelМне, например, однажды довелось прикручивать дочку к операциям первичного учета. Если бы изначально не было суррогатного PK, даунтайм был бы адский. Мм... а из-за чего, собственно? Код: sql 1. 2. 3. 4. 5. 6. 7. Вроде бы ничего из этого не требует адских мук. Ну только update может потребоваться проводить порциями с промежуточными коммитами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 13:58 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
> в чем смысл его давать в начале книги? В том, что это фундаментальное понятие, использовать которое вы будете всегда. Первый вопрос, который вы задаёте себе при проектировании любой сущности - как я буду идентифицировать экземпляры сущности? Представьте, что у вас не база данных, а пачка листов бумаги. Каждый лист содержит какие-то данные, которые могут отличаться, а могут и совпадать. Для того, чтобы объяснить вашему приятелю, каким именно листом нужно воспользоваться, вы можете использовать множество способов, самый простой и естественный из которых - пронумеровать листы и назвать приятелю нужный номер. Уникальный идентификатор не обязан быть числом, это просто наиболее понятная аналогия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 14:26 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
softwarer, В MSSQL блокировки schema modification не совместимы ни с какими другими, насколько я помню. Т.е. все писатели, а это 95% пользователей, выстроились бы в очередь, пока я не закончу. Ну и не привык я создавать таблицы без PK. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 18:51 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
Ennor Tiegaelsoftwarer, В MSSQL блокировки schema modification не совместимы ни с какими другими, насколько я помню. Т.е. все писатели, а это 95% пользователей, выстроились бы в очередь, пока я не закончу. А зачем нужно всю операцию делать в одной транзакции? Добавление в таблицу поля и выставленние default для него не займут много времени, а обновление не потребует блокировки schema modification ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 19:04 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
Ennor TiegaelВ MSSQL блокировки schema modification не совместимы ни с какими другими, насколько я помню. А какие операции в описанном сценарии вызовут такие блокировки надолго? Конечно, в каждом сервере есть местная специфика, и правильный скрипт, наверное, будет выглядеть несколько иначе, но в целом я почти уверен в существовании подобного верного пути. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2013, 19:06 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
softwarer, Кот Матроскин, Я не знаю, как в 2012 с сиквенсами, что с ними можно делать, а что нельзя. На тот момент это был 2005, там их не было, и в нем это выглядело бы так: 1. Атрибут identity нельзя выставить у существующего столбца, только через drop column / add (ни в какой версии нельзя, на самом деле). Это значит, что столбец придется сразу создавать как not null identity, иначе нумерация пойдет непонятно как (с новых записей? а старые останутся непронумерованными? и ловить потом эти дырки, стараясь избежать конфликтов уникальности?) 2. Вставка чего угодно not null приведет к тому, что практ. все страницы таблицы попадают на page split - в них надо добавить данные, а места уже нет. Если в табличке хотя бы 100М записей, на этом месте все очень конкретно подождут. 3. Инкремент не имеет смысла делать как просто столбец или некластерный индекс, он же монотонно возрастающий. При создании же кластерника все остальные индексы ребилдятся, у них заменяется RID на значение кластерного индекса. Тут, понятно, лучше малой кровью - сначала дропнуть все индексы, потом в конце их пересоздать. Но они же там не просто так, их кто-то использует. Вкратце - лучше сразу проектировать правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2013, 03:02 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
tanglir Я верно понял, что в случае, если 4 указанных столбца объявлены первичным ключом, то при добавлении строки с аналогичным набором информации - появится ошибка, но если изменить хотя бы одно значение, то строка добавится? Таким образом, уникальной является комбинация из 4-х столбцов, каждый из которых, в отдельности, может быть не уникальным, за исключением указанных? И еще, если нам необходим один уникальный столбец без свзяи с другими таблицами, то мы можем использовать и уникальный ключ и первичнй ключ? А если несколько, то либо каждому отдельно присваивать уникальный ключ, либо сразу назначить группу столбцов первичным ключом? В определении говорится о том, что первичный ключ позволяет быстро получить неободимую строку. Подскажите, пожалуйста, где это применяется, как её быстро получить кроме обычного указания Select * From Table Where <уникальный столбец> = <значение в уникальном столбце> ? Если приведенный способ единственный - в чем его преимущество перед обычной выборкой\обычном получении строки? MasterZiv Язык Java guest_20040621 Благодарю за отличный пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2013, 04:55 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
1.1)да 1.2)да 2.1)выше уже ведь отметили , что первичный ключ - один из множества уникальных, который по неким понятным вам причинам (в т.ч. и от балды) выбран "главным" 2.2)почему "либо"? это разные, но не взаимоисключающие действия 3)"определение" в студию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2013, 05:32 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
Ennor Tiegael1. Атрибут identity нельзя выставить у существующего столбца Тогда понятно, спасибо. ЗЫ. Вот поэтому я и не люблю всякие особые сущности.. хлопот с ними.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2013, 08:34 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
Ennor Tiegael1. Атрибут identity нельзя выставить у существующего столбца, только через drop column / add (ни в какой версии нельзя, на самом деле). Это значит, что столбец придется сразу создавать как not null identity, иначе нумерация пойдет непонятно как (с новых записей? а старые останутся непронумерованными? и ловить потом эти дырки, стараясь избежать конфликтов уникальности?) 2. Вставка чего угодно not null приведет к тому, что практ. все страницы таблицы попадают на page split - в них надо добавить данные, а места уже нет. Если в табличке хотя бы 100М записей, на этом месте все очень конкретно подождут. А почему бы не сделать через копирование и drop/переименование (благо констрейнтов все равно нет)? Некоторое время табличка будет недоступна - но вряд ли больше секунды. Ennor Tiegael3. Инкремент не имеет смысла делать как просто столбец или некластерный индекс, он же монотонно возрастающий. При создании же кластерника все остальные индексы ребилдятся, у них заменяется RID на значение кластерного индекса. Тут, понятно, лучше малой кровью - сначала дропнуть все индексы, потом в конце их пересоздать. Но они же там не просто так, их кто-то использует. А что, до PK табличка была кучей? Ну тогда большой беды не будет, если она так и останется :) Вопрос кластерного индекса, мне кажется, все-таки параллелен PK. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2013, 11:40 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин А почему бы не сделать через копирование и drop/переименование А что делать с записями, попавшими в табличку после копирования? Особенно в условиях отсутствия ключа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2013, 11:53 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
softwarerКот Матроскин А почему бы не сделать через копирование и drop/переименование А что делать с записями, попавшими в табличку после копирования? Особенно в условиях отсутствия ключа? "Отсутствие ПК" <> "возможность полностью одинаковых кортежей", все-таки. Копируем данные из таблицы один раз, потом блокируем ее и копируем отсутствующие (см. выше) второй раз (Сколько их там набежит за время "большого" копирования?) А если возможны кортежи с полностью одинаковыми "смысловыми" полями - так это в любом случае попадалово, что с суррогатом, что без. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2013, 12:19 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин"Отсутствие ПК" <> "возможность полностью одинаковых кортежей", все-таки Зато изрядно похоже на "поиск одинаковых записей долог и труден". Кот Матроскин(Сколько их там набежит за время "большого" копирования?) Может довольно изрядно. Во всяком случае, блокировать всю деятельность на время поиска разницы может быть.... очень неприятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2013, 12:24 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
softwarerКот Матроскин"Отсутствие ПК" <> "возможность полностью одинаковых кортежей", все-таки Зато изрядно похоже на "поиск одинаковых записей долог и труден". . Не верю в возможность таблицы хотя бы с 10 атрибутами без необходимости в первичном ключе. Сравнить 10 полей (пара самых селективных из которых будет в индексе) - долго и трудно? Кот Матроскин(Сколько их там набежит за время "большого" копирования?) Может довольно изрядно.[/quot] Каковы Ваши оценки "плохого случая"? Сколько у нас записей всего, сколько получаем в сутки, сколько продлится "большое" копирование, сколько займет поиск "новеньких" ( возникших за время оного копирования)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2013, 12:37 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
TempUserDub, MasterZiv Язык Java Первичный ключь — это аналог адреса объекта в java, это ссылка на объект, без которой объект будет просто недоступен. Если из таблицы убрать первичный ключь, и все записи будут одинаковыми, то ты ничего не сможешь сделать с этими записями по-отдельности, можно будет только что-то сделать со всеми ими вместе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2013, 12:59 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
softwarerEnnor TiegaelМне, например, однажды довелось прикручивать дочку к операциям первичного учета. Если бы изначально не было суррогатного PK, даунтайм был бы адский. Мм... а из-за чего, собственно? Код: sql 1. 2. 3. 4. 5. 6. 7. Вроде бы ничего из этого не требует адских мук. Ну только update может потребоваться проводить порциями с промежуточными коммитами. Когда будешь делать alter table T modify id not null - получишь в этот самый момент полное перестроение практически всей таблицы. Это факт проверенный опытом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2013, 17:26 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
Ivan Durak Когда будешь делать alter table T modify id not null - получишь в этот самый момент полное перестроение практически всей таблицы. Это факт проверенный опытом. Сочувствую. Чего только в мире не бывает. К счастью, у меня не столь печальный опыт. Максимум, может стоит добавить novalidate, чтобы сервер не тратил время на бесполезную проверку. А из-за чего так? Для чего полностью перестраивать всю таблицу ради одного-единственного constraint-а? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2013, 18:12 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2013, 19:36 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
tanglir Первичный ключ - уникальный столбец (или их группа), используемый для идентификации каждой строки <...>. Таким образом, первичный ключ, согласно определению, можно использовать для идентификации каждой строки и, соответсвенно, более быстрого к ней доступа. MasterZiv Мы можем в таблицу добавить строку без всяких ключей и затем получить её при помощи команды Select * from Table where <имя столбца> = <необходимое значение>. В итоге, объект доступен. Если рассмотреть вариант, когда пользователь заполняет базу неповторяющимися данными или когда необходимые столбцы имеют уникальный ключ, то в чем преимущество первичного ключа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2013, 22:42 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
tanglir Первичный ключ - уникальный столбец (или их группа), используемый для идентификации каждой строки <...>. Таким образом, первичный ключ, согласно определению, можно использовать для идентификации каждой строки и, соответсвенно, более быстрого к ней доступа. MasterZiv Мы можем в таблицу добавить строку без всяких ключей и затем получить её при помощи команды Select * from Table where <имя столбца> = <необходимое значение>. В итоге, объект доступен. Если рассмотреть вариант, когда пользователь заполняет базу неповторяющимися данными или когда необходимые столбцы имеют уникальный ключ, то в чем преимущество первичного ключа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2013, 22:42 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
TempUserDubЕсли рассмотреть вариант, когда пользователь заполняет базу неповторяющимися данными или когда необходимые столбцы имеют уникальный ключ, то в чем преимущество первичного ключа? Это бессмысленный вопрос. Первичный ключ - это просто "один из уникальных ключей". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2013, 22:50 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
softwarer Все больше склоняюсь к тому, что первичный ключ - это просто уникальный ключ с возможностью моделировать связь между сущностями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2013, 22:57 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин Не верю в возможность таблицы хотя бы с 10 атрибутами без необходимости в первичном ключе. Одно никак не связано с другим. Ключ нужен, когда нужно выбрать конкретную запись, количество атрибутов тут не при чём. Сравнить 10 полей (пара самых селективных из которых будет в индексе) - долго и трудно? Именно так. Когда часть этих полей null-овские, выражение сравнения рискует оказаться написанным с ошибками. А что касается в индексе - это, скорее, минус. Поскольку после сравнения полей "из индекса" потребуется одноблочным чтением лезть в таблицу за остальными, и хорошо ещё если clustering factor не заставит читать одно и то же по двадцать раз. Кот МатроскинКаковы Ваши оценки "плохого случая"? Сколько у нас записей всего, сколько получаем в сутки, сколько продлится "большое" копирование, сколько займет поиск "новеньких" ( возникших за время оного копирования)? Сколько получаем в сутки малокритично - это определяет только количесто требуемых вставок, время будет относительно небольшим. А вот сколько записей, какое оборудование, какая загрузка - это уже в меру фантазии. Но факт в том, что если при наличии ПК сравнение пройдёт простым и мелким MINUS по индексу, а там останется выгрести сравнительно небольшое количество записей, то сравнение полных таблиц будет либо MINUS full table scan-ов в памяти, либо дикое количество одноблочных чтений; то и другое - совсем другой коленкор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2013, 23:01 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
TempUserDubВсе больше склоняюсь к тому, что первичный ключ - это просто уникальный ключ с возможностью моделировать связь между сущностями. Первичный ключ - это просто уникальный ключ. Последних слов не понял, но есть подозрение, что Вы почему-то считаете, что для foreign key нужен PK. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2013, 23:02 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
TempUserDubТаким образом, первичный ключ, согласно определению, можно использовать для идентификации каждой строки и, соответсвенно, более быстрого к ней доступа.Вам уже много раз повторили, что он нужен только для однозначной идентификации строки(записи, сущности, ...). Скорость доступа не имеет к этому никакого отношения. Не надо больше ничего своего изобретать. TempUserDubЕсли рассмотреть вариант, когда пользователь заполняет базу неповторяющимися данными или когда необходимые столбцы имеют уникальный ключ, то в чем преимущество первичного ключа?Формально, любой уникальный ключ может быть первичным, в теории между ними нет больше никаких различий. Выбор одного из них в качестве первичного произволен и на практике диктуется некоторыми дополнительными, практическими же, соображениями, например, минимальностью общего размера или минимальным количеством атрибутов в составе. При реализации во многих РСУБД дали возможность создавать уникальные ключи, любой атрибут которого или даже все могуть быть NULL. Несколько сомнительное решение имеющее в разных РСУБД разный смысл из-за разной же интерпретации NULL, что приводит к недоразумениям при миграции баз данных между разными платформами. Если же ни один атрибут уникального ключа не может быть NULL и это указано на уровне механизма ограничений РСУБД(NOT NULL), то никакой разницы между таким уникальным и основным ключами не существует. Если задан подобный уникальный ключ, то он же может быть объявлен основым, если такого не существует. На практике, можно не задавать ограничения типа PRIMARY KEY, если существует уникальный(е) ключ(и), позволяющие однозначно идентифицировать каждую строку, но это нередко воспринимается как дурной тон. До тех пор пока в таблице явно не задан первичный(или уникальный, позволяющий однозначно идентифицировать строку(запись, сущность, ...) нет никакой гарантии, что в таблице не окажутся абсолютно одинаковые кортежи. IMHO, возможность создавать в РСУБД таблицы без явного указания способа идентификации строки(первичного или уникального(NOT NULL) ключей), является "медвежьей" услугой со стороны производителей и является потенциальным источником проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 01:29 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
ChA Спасибо за комментарийю Подскажите, пожалуйста, имея первичный ключ можно ли как-то быстрее\более коротким способом получить строку, чем при помощи команды Select * from Table where <имя столбца> = <необходимое значение> ? Пример - в Java в двумерном массиве можно искать необходимый элемент при помощи перебора каждой строки\ячейки. Тем не менее, если мы точно знаем какой нам нужен элемент, то мы можем сразу его получить, указав номер строки и столбца, например, Array[2][3]. В SQL вариант с командой Select, приведенной выше, более напоминает перебор массива. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 02:24 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
TempUserDubПодскажите, пожалуйста, имея первичный ключ можно ли как-то быстрее\более коротким способом получить строку, чем при помощи команды Select * from Table where <имя столбца> = <необходимое значение> ?Скорость получения данных теоретически не зависит от существования первичного ключа. На практике же, она зависит только от наличия "правильных" индексов. Первичный ключ обычно реализуется с помощью уникального индекса. TempUserDubПример - в Java в двумерном массиве можно искать необходимый элемент при помощи перебора каждой строки\ячейки. Тем не менее, если мы точно знаем какой нам нужен элемент, то мы можем сразу его получить, указав номер строки и столбца, например, Array[2][3]. В SQL вариант с командой Select, приведенной выше, более напоминает перебор массива.Как раз нет никакого перебора, SQL - декларативный язык. Вы просто указываете, по каким условиям вам нужно получить строки. РСУБД сам определяет каким способом он будет его выполнять. В частном случае, это может быть простое сканирование, т.е., перебор всех строк, пока не будут найдены все, удовлетворяющие заданным условиям. В то же время если есть "удачные" индексы, то поиск может начатся с них и только потом из таблицы будут выбираться данные, по ссылкам, полученным из индекса. Более подробно про индексы и способы доступа к данным лучше читать в учебниках или руководствах по конкретным РСУБД. P.S. У вас какие-то свои представления о том, что из себя представляют БД. Здесь редко отвечают на подобные вопросы, обычно сразу посылают в сад почитать какой-нибудь учебник по БД, так что вам ещё сильно повезло. Хотя не удивлюсь, если вас скоро с такими вопросами таки начнут посылать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 03:06 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
ChA Данный вопрос о предназначении первичного ключа и отличии от уникально достатончо часто встречает в интернете, н о нигде нет точного ответа Я искренне благодарен всем пользователям, учавствующим в данном обсуждении. Главное отличие уникальное ключа от первичного, помимо допустимости NULL - уникальных ключей может быть много, а первичный - один. Внешний ключ может ссылаться и на первичный, и на уникальный ключ. В итоге, учитывая, что функции первичного ключа дублируются уникальным - для чего первчиному ключу делать ограничение на количество ключей? Мы можем внешнему ключу назначить ссылку на уникальный и получим аналогичный результат. Мне необходимо понять этот вопрос, чтобы двигаться далее в изучении БД и SQL) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.09.2013, 04:24 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#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 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
vadiminfo, но мир то иерархический? синтез - анализ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2013, 14:02 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
ViPRosvadiminfo, но мир то иерархический? синтез - анализ "синтез - анализ" - из диалектической логики, т.е. мир то диалектический тада. Но если его (мир) затолкать в реляционные таблицы, то легче инфу извлекать, судя по успеху РМД. Да иногда и затакивается легко - таблицы тоже давно юзаются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2013, 14:12 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
vadiminfo, РМД - структурное упрощение модели, без СКЛ кода модель не полная но, дело в том, что СКЛ тоже можно описать как структуру тогда модель становится структурно полной, типизированной и 'селект "ишак" фром "человек"' не катит, мир становится однозначно интерпретируем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2013, 16:05 |
|
||
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#18+
> 'селект "ишак" фром "человек"' не катит, мир становится однозначно интерпретируем Это иллюзия. Достаточно рассматривать человека как животное, - результат будет другим. Контекст, Сахават. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2013, 17:25 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1541121]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
163ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
88ms |
get tp. blocked users: |
1ms |
| others: | 10ms |
| total: | 300ms |

| 0 / 0 |

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