Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Смысл первичного ключа / 25 сообщений из 80, страница 1 из 4
10.09.2013, 01:51
    #38391630
TempUserDub
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Смысл первичного ключа
В SQL в параметрах таблицы может присутсвовать первичный ключ.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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



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

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

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


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

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


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


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

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

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

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


Ну это не очень значительно. Очень редко в жизни встречается.
...
Рейтинг: 0 / 0
11.09.2013, 09:56
    #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
11.09.2013, 11:24
    #38393338
vadiminfo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Смысл первичного ключа
TempUserDubВ SQL в параметрах таблицы может присутсвовать первичный ключ.

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

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

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

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

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

Ну, не знаю. Если вам не надо, то конечно не делайте. Мне, например, однажды довелось прикручивать дочку к операциям первичного учета. Если бы изначально не было суррогатного PK, даунтайм был бы адский.
...
Рейтинг: 0 / 0
11.09.2013, 13:58
    #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
11.09.2013, 14:26
    #38393628
guest_20040621
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Смысл первичного ключа
> в чем смысл его давать в начале книги?

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

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

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


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