powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Термины естественный/суррогатный/искусственный ключ
41 сообщений из 41, показаны все 2 страниц
Термины естественный/суррогатный/искусственный ключ
    #33150447
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прежде всего - тема НЕ про преимущества/недостаки - это обсуждено многократно. Вопрос чисто терминологичекий.

Обычно первичный ключ таблицы называют "суррогатным ключом таблицы" если это поле,
1) не имеет смысла за пределами той БД, в которой определена таблица.
Точнее сказать единственный смысл его вне БД - разным значениям соответсвтуют разные записи. Глядя офф-лайн на список
Человек.ИД123456можно точно сказать, что людей двое. Однако надеятся, что при следующем обращении под ИД =123 по-прежнему лежит все тот же человек, что и в момент распечатки, вообще говоря запрещено.
Кроме того из (1) обычно следует
2) значение поля генерируется автоматически в БД .

"Естественным ключом таблицы" называют поле (группу полей) которое
1) используется в БД и внешнем мире в одинаковом смысле ибо
2) получает значение из стороннего по отношению к БД источника
и каким-то образом эквивалентность (1) сохраняется в дальнейшем.

А как назвать поле которое
1) используется в БД и внешнем мире в одинаковом смысле,
но
2) значение поля генерируется автоматически в БД
и каким-то образом эквивалентность (1) сохраняется в дальнейшем.
Может, "искусственный ключ" ?

Тогда каждый естественный ключ где-то является искусственным. Этим где-то не обязательно является компьютерная система. Можно тогда обсуждать типа
'ИМХО использование в системе Х в качестве ЕК таблицы Т искусственного ключа из системы Z вызывает сомнения ибо ...'
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33150966
Однако надеятся, что при следующем обращении под ИД =123 по-прежнему лежит все тот же человек, что и в момент распечатки, вообще говоря запрещено
Как раз наоборот, человек сменит фамилию, имя, но это будет тот же человек!
получает значение из стороннего по отношению к БД источника
и каким-то образом эквивалентность (1) сохраняется в дальнейшем

Вот тут действительно не правы, даже номер и серия паспорта не идентифицирует человека (они могут смениться)
А как назвать поле которое
1) используется в БД и внешнем мире в одинаковом смысле,
но
2) значение поля генерируется автоматически в БД
и каким-то образом эквивалентность (1) сохраняется в дальнейшем.
Может, "искусственный ключ" ?

Не знаю, как назвать, но это зависит от постановки задачи. Так в 1С:Зарплата и кадры поле "Табельный номер сотрудника" считалось уникальным (допустимо, всех новых принимать и давать новые номера). Но на некоторых предприятиях ведется практика давать вновь принятым работникам табельные номера уже уволившихся. Соответственно не о какой уникальности речи быть не может.
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33151118
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ненавижу 1С
Как раз наоборот, человек сменит фамилию, имя, но это будет тот же человек!Пока, как в вашем последнем примере кто-то не решил свободные ключи использовать для новых данных. Или выгрузил/загрузил данные с переприсвоением ключей. И это полное право администратора - он по определению не обязан сохранять смысл суррогатного ключа, также как СУБД не обязана гарантировать, что запись с данных ключом вечно будет иметь данный Rowid. Если такая обязанность существует, то этой другой случай - другой термин.
Ненавижу 1СВот тут действительно не правы, даже номер и серия паспорта не идентифицирует человека (они могут смениться)!Верно. Для человека подобрать естественный ключ не могут даже ЦРУ с ФСБ, но речь опять не о существовании или целесообразности, а о терминах. В предшествующей фразе использован термин "естественный ключ" , он нуждается в определении.
Ненавижу 1С
Так в 1С:Зарплата и кадры поле "Табельный номер сотрудника" считалось уникальным (допустимо, всех новых принимать и давать новые номера). Но на некоторых предприятиях ведется практика давать вновь принятым работникам табельные номера уже уволившихся. Соответственно не о какой уникальности речи быть не может. Не совсем понял, что значит считалось уникальным, если допускается более одной записи?
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33151250
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelR
А как назвать поле которое
1) используется в БД и внешнем мире в одинаковом смысле,
но
2) значение поля генерируется автоматически в БД
и каким-то образом эквивалентность (1) сохраняется в дальнейшем.
Может, "искусственный ключ" ?

Неизменность значений, и вообще все что Вы включили в пп2 не имеет прямого отношения к ключам (у них главное уникальность). Может иметь косвенное в плане физической реализации и прямое к идентификаторам. Но не везде первичный ключ считают идентификатором. Он может иметь значение физическое в плане производительности, и с учетом того, что некоторые операции в диалектах языков БД (или каких-то фичах) различных производителей возможны для первичных ключей, и не допустимы для альтекрнативных.

В любом случае это поле, про которое Вы говорите, обыкновенно претендует на термин "естественный". Поскольку единственным признаком деления на Естественные или Суррогатные является принадлежность атрибута реальному объекту или нет.
Суррогатный мало о чем говорит юзеру (отсюда и название). Его, например, нет во документах, потому проверить нельзя. В реальном мире все равно приходится идентифицировать как-то иначе, када пытаются понять о чем речь. Но зато мало причин его менять, а это имеет значение. А раз в Вашем случае этими свойстывами обладает естественный, то Вам повезло.
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33151356
unrger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а еще пользуются термином абстрактный ключ :)
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33151564
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfo
Неизменность значений, и вообще все что Вы включили в пп2 не имеет прямого отношения к ключам (у них главное уникальность).Все, что не уникально, просто не имеет отношения к теме. Дальнейшая классификация имеет прямое отношение только к ключам. И строится она по признакам, харктеризующим взаимосвязь данной БД и внешнего мира (возможно других БД). Таких признаков предложено два:
- сохранение согласованности значений: да или нет. Если да, то такие ключи можно назвать бизнес-ключами - они имеют смысл во внешнем мире. Каким образом поддерживается согласованность пока не важно. Может быть просто неизменность, а может быть и специальные процедуры (перекодирование и пр.) для синхронизации изменений.
- источник значений:
если БД тогда это искусственный бизнес-ключ этой БД или просто искусственный ключ,
если внешний мир то это естественный бизнес-ключ или просто естественный ключ
vadiminfo Может иметь косвенное в плане физической реализации и прямое к идентификаторам. Но не везде первичный ключ считают идентификатором. Он может иметь значение физическое в плане производительности, и с учетом того, что некоторые операции в диалектах языков БД (или каких-то фичах) различных производителей возможны для первичных ключей, и не допустимы для альтекрнативных.
). С терминами альтернативный и первичный проблем нет, согласен.
vadiminfo
В любом случае это поле, про которое Вы говорите, обыкновенно претендует на термин "естественный". Поскольку единственным признаком деления на Естественные или Суррогатные является принадлежность атрибута реальному объекту или нет.
Вот это обыкновение мне не совсем нравится, ибо если мы генерируем ключ в БД, например, присваиваем инвентарный номер экземпляру книги в библиотеке, то изначально этот номер реальному объекту не принадлежит и в нем ничего естественного нет. Когда он будет нанесен на экземпляр, то уже конечно безразлично, откуда он взялся, главное что он одинаков в БД и во внешнем мире.
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33151672
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelR
Все, что не уникально, просто не имеет отношения к теме. Дальнейшая классификация имеет прямое отношение только к ключам.
если БД тогда это искусственный бизнес-ключ этой БД или просто искусственный ключ,
если внешний мир то это естественный бизнес-ключ или просто естественный ключ


Я хотел только сказать, что ключ связан с уникальностью и минимальностью (никакое другое подмножество атрибутов ключа не обладает уникальностью).
Болльше ни с чем (в том чистле и неизменностью). Атрибуты могут быть суррогантными или естественными или в зависимости от искуственности.
Уникальность имеет бизнес природу для естественных. Для искуственных она навязывается.

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

А воторое так и есть - естественный ключ

ModelR
ибо если мы генерируем ключ в БД, например, присваиваем инвентарный номер экземпляру книги в библиотеке, то изначально этот номер реальному объекту не принадлежит и в нем ничего естественного нет. Когда он будет нанесен на экземпляр, то уже конечно безразлично, откуда он взялся, главное что он одинаков в БД и во внешнем мире.

Как же инвентарный номер и не принадлежит? Еще как принадлежит. Это атрибут ПО данного предприятия - библиотеки. Прописанный в документах. Он юзеру потому о многом говорит. Библиотекарю больше порой, чем само название книги. Но его нельзя в общем случае сгенерить. Тока если поменять все инвентарные номера. Но они во многих доках уже есть. Их переделывать никто не захочет. Если этих документов еще нет и все пропускают культурно, через БД, тада возможно.
Вот если Вы просто генерите идентификатор, который не тока не инвентарный номер, но и вообще ни что в ПО, тада другое дело - не принадлежит реальному объекту.
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33153583
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если кого-то интересует мое мнение, то главное, что отличает суррогатный ( искусственный) ПК от натурального (естественного, интеллектуального) ПК, это вовсе не известность / неизвестность его наличия для внешнего пользователя информационной системы, а все же сам факт существования такого набора атрибутов вне информационной системы. То есть если некоторые характеристики создаются внутри информационной системы, то они не могут называться естественными. Поэтому любой ПК, значения которого генерируются программно (самой СУБД или клиентским ПО, неважно), во избежание путаницы следует называть суррогатным (искусственным).

После создания значений суррогатного ПК они могут приобрести смысл и вне информационной системы, но не перестанут быть суррогатными. Ибо если систему уничтожить (убить БД), то эти значения сразу обессмыслятся. То есть СПК может иметь смысл вне системы , но не в отсутствие системы .
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33153726
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mirЕсли кого-то интересует мое мнение, то главное, что отличает суррогатный ( искусственный) ПК от натурального (естественного, интеллектуального) ПК, это вовсе не известность / неизвестность его наличия для внешнего пользователя информационной системы, а все же сам факт существования такого набора атрибутов вне информационной системы. То есть если некоторые характеристики создаются внутри информационной системы, то они не могут называться естественными. Поэтому любой ПК, значения которого генерируются программно (самой СУБД или клиентским ПО, неважно), во избежание путаницы следует называть суррогатным (искусственным).

После создания значений суррогатного ПК они могут приобрести смысл и вне информационной системы, но не перестанут быть суррогатными. Ибо если систему уничтожить (убить БД), то эти значения сразу обессмыслятся. То есть СПК может иметь смысл вне системы , но не в отсутствие системы .Согласен, что все то, что генерируется в системе, не подходит под слово естественный, ибо в этот момент во внешнем мире просто отсутствует.
Однако по-моему полезно различать случаи, когда система генерирует ключи только для внутреннего употребления (суррогатный) и когда ключ предназначен также для использования во внешнем мире (исскуственный). Во втором случае система после опубликования ключа не может менять его смысл произвольным образом, т.е суррогатным он быть перестает.
Например, предположим что имя аккаунта на данном форуме - ключ. Он создается исключительно при взаимодействии с системой, потому не может быть классифицирован как естественный. В то же время, система не должна менять имя аккаунта без согласия владельца - это не суррогатный ключ. Это искусственный ключ, поддерживаемый некоторыми специальными процедурами.
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33153769
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, не обязательно после уничтожения системы искусственный ключ станет бессмысленным во внешнем мире. Например, даже если я не знаю, откуда взялся штрих-код на товаре, или ISBN на книге, живы ли системы- источники, ничто не мешает мне пользоваться этими кодами.
Вот номером карты разорившегося банка воспользоваться сложно, по крайней мере по прямому назначению
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33154338
Тип-Топ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ModelRОднако по-моему полезно различать случаи, когда система генерирует ключи только для внутреннего употребления (суррогатный) и когда ключ предназначен также для использования во внешнем мире (исскуственный). Во втором случае система после опубликования ключа не может менять его смысл произвольным образом, т.е суррогатным он быть перестает
Определения ключей из книги Joe Celko «Data & Databases: Concepts in Practice»
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33154635
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
г. Cелко известен своим трудом о деревьях и как автор книг по SQL, однако по поводу определений я бы не стал на него надеятся. Например его статья вызвала у меня больше вопросов, чем дала ответов:).
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33154696
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гм. все этто интерестно, но вот случай, скажем

есть кампании (id_comp - явный суррогат)
есть люди (id_per - явный суррогат)
и есть записи о работниках (id_comp,id_per)
(id_comp,id_per) - есть отражение реально существующего отношения, но состоит из суррогатов. Является ли он суррогатом, или же суррогат, это примерно так:
(id_rab), id_comp,id_per
(с тем, чтобы когда мы доопределим нашу модель периодами и прочая - не перекраивать пк)
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33155181
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 4321
Отличный вопрос! Сам над этим думаю, в следующем направлении...
В определении суррогатный/бизнес-ключ важно относительно чего мы определяемся, где проведена граница системы. Поскольку мы рассматриваем базу данных в целом, то для данной родительской таблицы, имеющей суррогатный ключ таблицы (СКТ), все внешние ключи на него из других таблиц этой БД также являются суррогатами нашей системы. Все они определенны на одном суррогатном домене - суррогатном ключе базы данных (СКБД) для той сущности, которую представляет таблица.

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

Выбор идентифицирующей / неидентифицирующей миграции первичного ключа в подчиненную таблицу - отдельная песня. Как суррогатные так и бизнес-ключи родительских таблиц могут мигрировать и тем и другим способом. В ваших примерах
Код: plaintext
1.
2.
T1: (id_comp,id_per) 

T2: (id_rab), id_comp,id_per

я бы сказал что все поля - это СКБД, а id_rab также СКТ таблицы T2 .
Достойна ли ситуация T1 какого-то специального термина кроме "идентифицирующая миграция СК" ? Не думаю, что в этом есть необходимость.
Итого имеем 2 таблицы, 5 полей все СКБД, З домена все суррогатные, 2 иденифицирующие и 2 неидентифицирующие миграции, 1 СКТ.

З.Ы. В T2 я бы еще добавил альтернативный ключ (id_comp,id_per) в соответствии с нашими текущими представлениями о предметной области.
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33155552
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelR2 4321
Отличный вопрос! Сам над этим думаю, в следующем направлении...

Подойдем с такой стороны:
в предметной области (вернее ее логической модели ) есть сущности
"компании", "персоны", "работники", причем "работники" - это отношение (в некотором приближении, ес-но) меж сущностями "компании" и "персоны" (именно "в предметной области", что означает, как говорилось, в ее логической модели - т.к. _соб-сно_ в п.о. нет даже и сущностей) - и по самой сущности "отношения" есть ничто иное, как набор указателей на компании и персоны, т.е. есть набор пар ключей этих сущностей. А уж то, что ключи сущностей взяты суррогатными - не влияет на природу отношения. Т.ч. заключаем что (id_comp,id_per) - естественный


ЗЗЫ На самом деле (id_comp,id_per) с развитием модели П.О. может перестать (что чаще всего и происходит) отвечать требованиям к ключу нового понимания сущности "работник" (например если в сущность "работник" входит должность, отдел или еще что либо, а персона и совместитель и/или растет по службе) - т.е. "на самом деле" "естественность" нашей связки будет зависеть от способа отображения действительности на сущности логической модели (можно ведь и единственному "работнику" нарисовать множество "ролей" (совместители) или множество "временнЫх" значений [атрибута] "сущности" "служебное положение" (те же роли), и тогда наш подход к сущности "работник" как отражение связи компания-персона сохранит свою "естественную" адекватность)
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33156317
Тип-Топ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ModelRг. Cелко известен своим трудом о деревьях и как автор книг по SQL, однако по поводу определений я бы не стал на него надеятся. Например его статья вызвала у меня больше вопросов, чем дала ответов:).
Joe Celko известен, прежде всего, как технический редактор Комитета стандартов баз данных ANSI X3H2. Он известен своими рубриками (по SQL) в журналах посвященных работе с СУБД (a-la "DBMS") и, конечно, как автор замечательных книг по SQL, базам данных и т.п.
Что касается определений... то с этим и Дейта масса проблем. Наверное, наиболее строгие определения у Ульмана, но определений разновидностей ключей мне у него не попадалось, к сожалению.
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33156407
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4321 Подойдем с такой стороны:
в предметной области (вернее ее логической модели ) есть сущности
"компании", "персоны", "работники", причем "работники" - это отношение (в некотором приближении, ес-но) меж сущностями "компании" и "персоны" (именно "в предметной области", что означает, как говорилось, в ее логической модели - т.к. _соб-сно_ в п.о. нет даже и сущностей) - и по самой сущности "отношения" есть ничто иное, как набор указателей на компании и персоны, т.е. есть набор пар ключей этих сущностей. А уж то, что ключи сущностей взяты суррогатными - не влияет на природу отношения.
Да. (id_comp,id_per) и как первичный ключ в T1, и как альтернативный ключ в T2 несомненно моделируют некое "естественное" бизнес-правило про найм работников. 4321 Т.ч. заключаем что (id_comp,id_per) - естественный
Не согласен. Главное - значение ключа (id_comp,id_per) также не имеет смысла за пределами БД и является суррогатным поскольку всего его компоненты-суррогаты. Заметьте, суррогатный ключ собственно таблицы людей также выражает "естественное" бизнес-правило уникальности людей. (см. начало топика). Благодаря этому можно например посчитать количество людей используя только суррогатное поле. Однако сам ключ если был суррогатным, то им и остается.
Конечно, наличие ключа (id_comp,id_per) существенно расширяет наши возможности. Используя лишь суррогатные ключи теперь можно посчитать среднее , максимальное, минимальное число людей - работников в организациях.
Усложним ситуацию. Пусть id_comp - это естественный ключ кампании. Что тогда сказать про (id_comp,id_per) ? Суррогатный на 50%?
По-моему не нужно применять эту терминологию к композитным ключам, включающим мигрировавшие ключи.
Резюме. Я бы назвал (id_comp,id_per) ключом, реализующим бизнес-правило, соответсвующим бизнес-правилу, но не естественным.
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33159958
mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тип-Топ Наверное, наиболее строгие определения у УльманаМне правда интересно, откуда возник миф о том, что Ульман -- Папа в плане теоретической строгости (типа Дейт рядом не валялся). Читал я внимательно его "БД: полный курс" и такого не наблюдал. Более того, у меня сложилось обратное мнение: Ульман в плане теоретической строгости с Дейтом и рядом не валялся. Примеры могу привести, ну хотя бы: строгие определения 1НФ и 2НФ в этой книге Ульмана вообще отсутствуют, нормализация начинается у него сразу с 3НФ. Определение функциональной и многознячной зависимости скверные, у Дейта лучше. И т.д.
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33160284
Составлять идентификатор объекта из идентификаторов других объектов нужно в том случае, если нет и не предполагается никаких характеристик у этого объекта. То есть, если это именно СОСТАВНОЙ ОБЪЕКТ, а не СВЯЗЬ между объектами, и не просто самостоятельный объект. У связи, как и у просто самостоятельного объекта, могут быть свои характеристики. Если вы используете ОСУБД, то связи М:М с характеристиками связи поддерживаются непосредственно. А "связи" более двух объектов, при ближайшем рассмотрении, являются связями М:М между составными объектами (чаще всего: между одним составным и одним простым объектами)...
Однако "назначение" (а есть еще "должность", если уж точнее) в примере 4321 - это и не составной объект, и не связь, а просто самостоятельный объект. И у него обыкновенный идентификатор, то есть второй вариант (даже, если считать, что это "связь")...
Здесь я пользовался терминологией объектных моделей данных и ОСУБД, где просто нет ключей (но есть уникальные характеристики, при необходимости), и нет нужды анализировать прилагательные к существительному "ключ"...
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33160592
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ЛеонидовичЗдесь я пользовался терминологией объектных моделей данных и ОСУБД, где просто нет ключей (но есть уникальные характеристики, при необходимости), и нет нужды анализировать прилагательные к существительному "ключ"... А уникальные характеристики не могут иметь прилагательных? Типа код страны по ISO - естественная уникальная характеристика.
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33160706
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Т.ч. заключаем что (id_comp,id_per) - естественный

Ох%еть. Пожалуйста, никому об этом не говорите. Это будет Ваш маленький секрет.
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33160803
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621> Т.ч. заключаем что (id_comp,id_per) - естественный

Ох%еть. Пожалуйста, никому об этом не говорите. Это будет Ваш маленький секрет.
пришел куй згары, ля. и усих прасфетил.

там же ясно написано, шо и почем заключаем. некая провокация как версия подхода. если есь вазраженья пасуществу (вумник, млин), приведи. нет - дык иди лесом. нам ты собсно (сам ля, без анасмля) не энтересен. будут мысли - будем на них маненько пасмареть.
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33161055
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> там же ясно написано, шо и почем заключаем.

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

Предварительный диагноз - олигофрения в стадии дебильности.
с Вашим диагнозом согласен. Удачного лечения.
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33161806
Подозреваю, ModelR, что уникальные характеристики (хотя речь шла, все-таки, о ключах, и, применительно к ОМД, об идентификаторах), нужные для "связи с внешним миром" (!) (не забывайте, так же, что идентификаторы вовсе не скрыты от пользователей, и их можно "использовать во внешнем мире), ВРЯД ЛИ МОГУТ БЫТЬ ИСКУССТВЕННЫМИ (порожденными внутри системы баз данных)... Они всегда "естественные", "предложенные" и "утвержденные" "мировым сообществом"...
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33163082
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей ЛеонидовичПодозреваю, ModelR, что уникальные характеристики (хотя речь шла, все-таки, о ключах, и, применительно к ОМД, об идентификаторахречь шла о наборах характеристик, обладающих двумя свойствами:
1) однозначно определять значения других характеристик,
2) минимальностью - подмножество набора не обладает свойством (1). В РМД такие наборы называются ключами.
В SQL-системах требование (2) не выдвигается. Не вижу, почему бы не использовать этот термин в ООБД применительно к набору свойств класса либо в РМД либо в SQL смысле. Андрей Леонидович), нужные для "связи с внешним миром" (!) (не забывайте, так же, что идентификаторы вовсе не скрыты от пользователей, и их можно "использовать во внешнем миреЕсли возможность использования во внешнем мире понимается как обязанность системы не изменять смысла идентификатора, то это и называется искусственный ключ. Андрей Леонидович), ВРЯД ЛИ МОГУТ БЫТЬ ИСКУССТВЕННЫМИ (порожденными внутри системы баз данных)... Они всегда "естественные", "предложенные" и "утвержденные" "мировым сообществом"...Что этому препятствует?
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33164544
Уточняю еще раз.
Экземпляры уже идентифицированы идентификаторами.
"Аналогия", хотя и натянутая (ведь первичные ключи - это не идентификаторы) с РМД: кортежи уже идентифицированы ПЕРВИЧНЫМИ ключами (неважно, "искусственными" или "естественными") !
Поэтому уникальные характеристики (в ОБД они используются 1 раз не 100-1000 объектов, причем эти случаи, обычно, стандартны, то есть хорошо известны из "мировой практики", так сказать) это "аналоги" АЛЬ-ТЕР-НА-ТИВ-НЫХ ключей. Сомневаюсь, чтобы возникла необходимость в искусственных (генерируемых системой) АЛЬТЕРНАТИВНЫХ ключах... А вот в естественных, наряду с суррогатными первичными, - это да...
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33164604
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто напомню, что в РМД различие между первичными и альтернативными ключами не играет практически никакой роли. Как отмечает Дейт, этот выбор делается "по традиции", не обязательно, и обоснование этого выбора выходит за рамки РМД. Никакими дополнительными свойствами первичный ключ не обладает, все потенциальные ключи равноправно идентифицируют (адресуют) кортеж.
Поэтому говорить что OID это аналог реляционного первичного ключа, а уникальные характеристики - альтернативного, значит сказать, что это одно и тоже. Что, как я понимаю для ОБД совсем не так, поскольку там для ссылок на объект годится только OID.

Кстати, в SQL системах такая разница есть - альтернативный ключ может включать NULLABLE поля, а первичный нет, не все СУБД умеют строить FK на альтернативные ключи. Но альтернативный NOT NULL ключ опять таки практически эквивалентен первичному. Можно объявить суррогатный ключ альтернативным, бизнес-ключ первичным, FK строить на суррогат и будет работать :).

Короче, опять не вижу, что же мешает уникальной характеритстике, пусть в одном из 1000 случаев, быть искусственным ключом.
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33164607
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelR
Если возможность использования во внешнем мире понимается как обязанность системы не изменять смысла идентификатора, то это и называется искусственный ключ.

Не совсем ясно, как система вообще может изменить смысл идентификатора (т.е. можно ли ее обязать менять смысл), который обыкновенно находится в голове у юзера. Или имеется в виду что он меняет его имя в схеме. Ну тада уже не до ключей. Тут кое что поущественней в жизни БД происходит.
И что это за искусственный ключ. По большому счкту в БД все искусственного происхождения. Или это синоним суррогатного ключа, или вычислимого поля?
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33165645
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изменить смысл идентификатора (речь идет смысле конкретного значения, а не о смысле наменования ) - значит под данным значением ИД='12334' хранить информацию о другом объекте, не том что вчера.
При этом поле по-прежнему называется скажем "табельный номер", но функция, отображение "табельный номер" -> Человек изменилась в БД.

Если сиcтема:
1) генерирует значения ключа,
2) эти значения используются во внешнем мире
то ключ называется искусственным по отношению к этой системе.
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33166112
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelR
Изменить смысл идентификатора (речь идет смысле конкретного значения, а не о смысле наменования ) - значит под данным значением ИД='12334' хранить информацию о другом объекте, не том что вчера.

Так это просто изменить значение идентификатора. Так точнее и проще. Смысл то все равно юзера. И это ничего не дает.

ModelR
Если сиcтема:
1) генерирует значения ключа,
2) эти значения используются во внешнем мире
то ключ называется искусственным по отношению к этой системе.

А почему не просто естественным и вычислимым как раньше? Ведь ничего не изменилось в этом смысле с тех пор. А искусственный, в условиях када и сами проги исусственны разве не будет сбивать с толу, а что он дает не понятно.
В какой литре его так назвали? И кто? Фамилии их интересны тоже.
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33166347
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfo ModelR
Изменить смысл идентификатора (речь идет смысле конкретного значения, а не о смысле наменования ) - значит под данным значением ИД='12334' хранить информацию о другом объекте, не том что вчера.

Так это просто изменить значение идентификатора. Так точнее и проще. Смысл то все равно юзера. И это ничего не дает.
Не понял однако ... Изменилось значение идентификатора значит вместо ИД ='12334' стало ИД= '98765'.
Смысл в формальных системах - это соответствие. Изменение смысла - изменение соответствия. Разумеется изменение значения ИД без изменения соответствующей информации меняет смысл, но смысл можно поменять и сохраняя значение ИД.
Вся проблема бизнес-ключей в том, что смыслов два:
в голове юзера одно соответствие,
в БД другое.
и эти смыслы требуют синхронизации.

vadiminfo
ModelR
Если сиcтема:
1) генерирует значения ключа,
2) эти значения используются во внешнем мире
то ключ называется искусственным по отношению к этой системе.

А почему не просто естественным и вычислимым как раньше? Ведь ничего не изменилось в этом смысле с тех пор. А искусственный, в условиях када и сами проги исусственны разве не будет сбивать с толу, а что он дает не понятно.
В какой литре его так назвали? И кто? Фамилии их интересны тоже.Так с этого все и началось:
А как назвать поле которое
1) используется в БД и внешнем мире в одинаковом смысле,
но
2) значение поля генерируется автоматически в БД
и каким-то образом эквивалентность (1) сохраняется в дальнейшем.
Может, "искусственный ключ" ?


Нет пока общепризнанного термина. Твое предложение -"вычисляемый естественный" ,а если мы его заимствуем то просто "естественный", так?
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33167027
"Можно объявить суррогатный ключ альтернативным, ..., FK строить на суррогат и будет работать:)."

Будет, будет работать. Я же написал: СОМНЕВАЮСЬ, ЧТОБЫ ВОЗНИКЛА НЕОБХОДИМОСТЬ.

Уникальные характеристики (в ОБД они используются 1 раз не 100-1000 объектов, причем эти случаи, обычно, стандартны, то есть хорошо известны из "мировой практики", так сказать) это "аналоги" ИСКЛЮЧИТЕЛЬНО АЛЬТЕРНАТИВНЫХ ключей. Сомневаюсь, чтобы возникла необходимость в искусственных (генерируемых системой) АЛЬТЕРНАТИВНЫХ ключах... А вот в естественных, наряду с суррогатными первичными, - это да...
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33167084
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Леонидович"Можно объявить суррогатный ключ альтернативным, ..., FK строить на суррогат и будет работать:)."

Будет, будет работать. Я же написал: СОМНЕВАЮСЬ, ЧТОБЫ ВОЗНИКЛА НЕОБХОДИМОСТЬ.

Т.е. может не возникнет, а может и возникнет.
Я есть понимай...
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33205272
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем кто принял участие в обсуждении.
Статья про классификацию учитывает также обсуждение в соседних топиках.
Комментарии и критика приветствуются :).
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33205312
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelR
Изменилось значение идентификатора значит вместо ИД ='12334' стало ИД= '98765'.
Смысл в формальных системах - это соответствие. Изменение смысла - изменение соответствия

Смысл его в том, что он идентификатор или что он там собой представляет как атрибут. И от того что поменялись данные он идентификатором быть не перестал. Вот если бы после того как он стал = '98765', его следовало бы интепретировать как средняя зарплата в баксах за год специалиста ИТ в нашей стране, то можно было бы сказать, что смысл изменился.
Формальные системы имеют тенденцию по возможности абстрагироваться от смысла объектов.

ModelR
1) используется в БД и внешнем мире в одинаковом смысле,
но
2) значение поля генерируется автоматически в БД
и каким-то образом эквивалентность (1) сохраняется в дальнейшем.

Естественное поле. Причем все что в пп 2) не имеет никакого значения в этом плане. Нарушение эквивалентности - нарушение достоверности данных. Как он генерится руками или автоматически вообще не имеет значения. Это забота проггеров. Может изобретут наконец способ, када комп научится читать мысли и будет все генерить автоматически. А можно юзера заставить писать инкрементно 1, 2 , N, N+1. Низкий уровень автоматизиции. Тока и всего.
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33205646
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfo ModelR
Изменилось значение идентификатора значит вместо ИД ='12334' стало ИД= '98765'.
Смысл в формальных системах - это соответствие. Изменение смысла - изменение соответствия

Смысл его в том, что он идентификатор или что он там собой представляет как атрибут. И от того что поменялись данные он идентификатором быть не перестал. Вот если бы после того как он стал = '98765', его следовало бы интепретировать как средняя зарплата в баксах за год специалиста ИТ в нашей стране, то можно было бы сказать, что смысл изменился.
Формальные системы имеют тенденцию по возможности абстрагироваться от смысла объектов.
Наименование, область определения и область значений соответствия не изменились, а само соответсвие изменилось. Вот о чем речь. Секунду назад сведения об объекте внешнего мира, известном как "Иван Иваныч" , лежали в БД под ИД ='12334' , а теперь - под ИД= '98765'. Во внешнем мире ровно ничего не произошло. Все произошло в БД.
vadiminfo
ModelR
1) используется в БД и внешнем мире в одинаковом смысле,
но
2) значение поля генерируется автоматически в БД
и каким-то образом эквивалентность (1) сохраняется в дальнейшем.

Естественное поле. Причем все что в пп 2) не имеет никакого значения в этом плане. Нарушение эквивалентности - нарушение достоверности данных. Как он генерится руками или автоматически вообще не имеет значения. Это забота проггеров. Может изобретут наконец способ, када комп научится читать мысли и будет все генерить автоматически. А можно юзера заставить писать инкрементно 1, 2 , N, N+1. Низкий уровень автоматизиции. Тока и всего.Для естественного поля забота проггеров - как и откуда его вводить, как отследить внешние изменения. Для исскуственного, кроме генерации - кого и как известить об изменениях.
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33205807
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelR
Наименование, область определения и область значений соответствия не изменились, а само соответсвие изменилось. Вот о чем речь. Секунду назад сведения об объекте внешнего мира, известном как "Иван Иваныч" , лежали в БД под ИД ='12334' , а теперь - под ИД= '98765'. Во внешнем мире ровно ничего не произошло. Все произошло в БД.

Обыкновенно это просто изменились данные. Модель данных обеспечивает интерпритацию данных, т.е. средства для пониманиях их смысла. Например, в РМД смысл табл и столбцов. У нее для этого есть схема БД. Если изменение данных не ведет к изменению иинтерпритации схемы, то смысл не изменился с точки зрения модели - изменились тока данные.
Стал новый ИД у "Иван Иваныч" - БД перешла в другое состояние как при любом другом изменении данных. Тем более ИД в данном примере не несет в себе никакого смыслы - он суррогатный. Вот если бы при ИД ='12334' Иван Иванович интерпретировался как студет, а при ИД= '98765' как преподователь - оставаясь в той же табле в том же столбце, и это влияет на запросы в БД. То смысл изменился. Я видел такие БД. Это нарушение принципов моделирования - меняется по сути модель данных при модификации данных. Интерпритация данных зависит от значений - одной схемы не достаточно, чтобы понять что они означют.

ModelR
Для естественного поля забота проггеров - как и откуда его вводить, как отследить внешние изменения. Для исскуственного, кроме генерации - кого и как известить об изменениях.

Для естественного может и надо кого-то извещать. А суррогатный юзерам мало что говорит. Или у них еще одна БД хде они записали, что ИД ='12334' и теперь надо поменять на ИД= '98765'? Боюсь, что такая ИС где это надо делать по меньшей мере никуда не годится. Толи проектировщики редкие чайники, толи технологии необыкновенно устаревшие.
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33206094
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfo Обыкновенно это просто изменились данные. Модель данных обеспечивает интерпритацию данных, т.е. средства для пониманиях их смысла. Например, в РМД смысл табл и столбцов. У нее для этого есть схема БД. Если изменение данных не ведет к изменению иинтерпритации схемы, то смысл не изменился с точки зрения модели - изменились тока данные. Смыслов вообще-то много, и кроме одного все сохранились- база по прежнему про кадры, таблица - про людей, и т.д., только соответсвие ЗНАЧЕНИЙ ИД и ЭКЗЕМПЛЯРОВ объектов внешнего мира изменилось. vadiminfo Стал новый ИД у "Иван Иваныч" - БД перешла в другое состояние как при любом другом изменении данных. Тем более ИД в данном примере не несет в себе никакого смыслы - он суррогатный. В том то и дело, что с точки зрения внешнего мира ничего не изменилось, база в прежнем состоянии, ибо собственно суррогаты извне - безразличны, также как скажем физическое размещение по дискам. vadiminfo
Для естественного может и надо кого-то извещать. А суррогатный юзерам мало что говорит. Или у них еще одна БД хде они записали, что ИД ='12334' и теперь надо поменять на ИД= '98765'? Боюсь, что такая ИС где это надо делать по меньшей мере никуда не годится. Толи проектировщики редкие чайники, толи технологии необыкновенно устаревшие. Не суррогатный - искусственный. Есть две базы - в одной странам ПРИСВАИВАЮТ коды по ИСО, в другой их ИСПОЛЬЗУЮТ. Там где присваивают, если код страны - ключ, то он ключ искусственный. Там где используют, если код страны ключ -то он ключ естественный.
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33206251
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, слегка отступая от темы:
автор
Не знаю, как назвать, но это зависит от постановки задачи. Так в 1С:Зарплата и кадры поле "Табельный номер сотрудника" считалось уникальным (допустимо, всех новых принимать и давать новые номера). Но на некоторых предприятиях ведется практика давать вновь принятым работникам табельные номера уже уволившихся. Соответственно не о какой уникальности речи быть не может.

Суть табельного номера совсем в другом. Он подразумевает что в одно и то же время не может быть в базе 2 людей с одинаковыми табельными номерами.
Следовательно, Таб.Ном+Дата принятия на работу+Дата увольнения - однозначно идентифицируют работника. К тому же если таб. номера повторяются, то периоды работы на предприятии двух сотрудников с одинаковыми таб. номерами не должны пересекаться.

Аналогичная систуация с номерами договоров. Если учесть еще и дату подписания (или даже период действия договора) - то можно забить на неуникальность договоров.

То что это тяжело обрабатывать - другой вопрос. (Всегда можно найти выход
из трудной ситуации, однако)
...
Рейтинг: 0 / 0
Термины естественный/суррогатный/искусственный ключ
    #33206681
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelR
Смыслов вообще-то много, и кроме одного все сохранились- база по прежнему про кадры, таблица - про людей, и т.д., только соответсвие ЗНАЧЕНИЙ ИД и ЭКЗЕМПЛЯРОВ объектов внешнего мира изменилось.

В рамках модели данных смысл один - ИД идентификатор (суррогатный).
Любые соответсвия это просто данные описывающие сущность инфа, о которой хранится в БД. Это просто факты. Суррогатный потому, что к сущности припичатано, то чего нет во внешнем мире как Вы это называете или в ПО как это принято в литре. Поменялось значение, а смысл остался - 98765 это значение идентификатора Иванова, а не скажем, его зарплата.

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

Если суррогаты - безразличны для юзеров, то о смысле соответсвия, либо еще чего подобного, тем более говорить не приходится. Однако, состояние БД изменилось. И такие изменения не говорят ни о чем хорошем - слабый идентификатор, потому что меняется во времени. Вообще одна из причин выбора суррогата - надежда на его неизменчивость. Потому во многих СУБД предусмотрены более сильные идентификаторы, чем счетчики. Например, генераторы гллобальных идентификаторов - вот пример значения из Оракла 88941C950D7B448E8F89DC7720E786CF. Т.е. изменение суррогатных ИД выглядит как какие-то программные ухищрения, однако, связанные с изменением БД. Т.е. плохой стиль. Иногда в литре приходится видеть вообще утверждения, что для РМД ИД не должны меняться. Хотя, конечно, это не строго.
В общем случае нельзя говорить и о том, что все запросы будут возвращать то же, что и до такого изменения. Если парни меняют значения суррогатов, то от них или такой системы можно ждать чего угодно.

ModelR
Не суррогатный - искусственный. Есть две базы - в одной странам ПРИСВАИВАЮТ коды по ИСО, в другой их ИСПОЛЬЗУЮТ. Там где присваивают, если код страны - ключ, то он ключ искусственный. Там где используют, если код страны ключ -то он ключ естественный.

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


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