|
|
|
Смысл первичного ключа
|
|||
|---|---|---|---|
|
#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 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38393387&tid=1541121]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
138ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 238ms |
| total: | 482ms |

| 0 / 0 |

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