Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
Прежде всего - тема НЕ про преимущества/недостаки - это обсуждено многократно. Вопрос чисто терминологичекий. Обычно первичный ключ таблицы называют "суррогатным ключом таблицы" если это поле, 1) не имеет смысла за пределами той БД, в которой определена таблица. Точнее сказать единственный смысл его вне БД - разным значениям соответсвтуют разные записи. Глядя офф-лайн на список Человек.ИД123456можно точно сказать, что людей двое. Однако надеятся, что при следующем обращении под ИД =123 по-прежнему лежит все тот же человек, что и в момент распечатки, вообще говоря запрещено. Кроме того из (1) обычно следует 2) значение поля генерируется автоматически в БД . "Естественным ключом таблицы" называют поле (группу полей) которое 1) используется в БД и внешнем мире в одинаковом смысле ибо 2) получает значение из стороннего по отношению к БД источника и каким-то образом эквивалентность (1) сохраняется в дальнейшем. А как назвать поле которое 1) используется в БД и внешнем мире в одинаковом смысле, но 2) значение поля генерируется автоматически в БД и каким-то образом эквивалентность (1) сохраняется в дальнейшем. Может, "искусственный ключ" ? Тогда каждый естественный ключ где-то является искусственным. Этим где-то не обязательно является компьютерная система. Можно тогда обсуждать типа 'ИМХО использование в системе Х в качестве ЕК таблицы Т искусственного ключа из системы Z вызывает сомнения ибо ...' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2005, 15:50 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
Однако надеятся, что при следующем обращении под ИД =123 по-прежнему лежит все тот же человек, что и в момент распечатки, вообще говоря запрещено Как раз наоборот, человек сменит фамилию, имя, но это будет тот же человек! получает значение из стороннего по отношению к БД источника и каким-то образом эквивалентность (1) сохраняется в дальнейшем Вот тут действительно не правы, даже номер и серия паспорта не идентифицирует человека (они могут смениться) А как назвать поле которое 1) используется в БД и внешнем мире в одинаковом смысле, но 2) значение поля генерируется автоматически в БД и каким-то образом эквивалентность (1) сохраняется в дальнейшем. Может, "искусственный ключ" ? Не знаю, как назвать, но это зависит от постановки задачи. Так в 1С:Зарплата и кадры поле "Табельный номер сотрудника" считалось уникальным (допустимо, всех новых принимать и давать новые номера). Но на некоторых предприятиях ведется практика давать вновь принятым работникам табельные номера уже уволившихся. Соответственно не о какой уникальности речи быть не может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2005, 18:18 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
Ненавижу 1С Как раз наоборот, человек сменит фамилию, имя, но это будет тот же человек!Пока, как в вашем последнем примере кто-то не решил свободные ключи использовать для новых данных. Или выгрузил/загрузил данные с переприсвоением ключей. И это полное право администратора - он по определению не обязан сохранять смысл суррогатного ключа, также как СУБД не обязана гарантировать, что запись с данных ключом вечно будет иметь данный Rowid. Если такая обязанность существует, то этой другой случай - другой термин. Ненавижу 1СВот тут действительно не правы, даже номер и серия паспорта не идентифицирует человека (они могут смениться)!Верно. Для человека подобрать естественный ключ не могут даже ЦРУ с ФСБ, но речь опять не о существовании или целесообразности, а о терминах. В предшествующей фразе использован термин "естественный ключ" , он нуждается в определении. Ненавижу 1С Так в 1С:Зарплата и кадры поле "Табельный номер сотрудника" считалось уникальным (допустимо, всех новых принимать и давать новые номера). Но на некоторых предприятиях ведется практика давать вновь принятым работникам табельные номера уже уволившихся. Соответственно не о какой уникальности речи быть не может. Не совсем понял, что значит считалось уникальным, если допускается более одной записи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2005, 20:04 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
ModelR А как назвать поле которое 1) используется в БД и внешнем мире в одинаковом смысле, но 2) значение поля генерируется автоматически в БД и каким-то образом эквивалентность (1) сохраняется в дальнейшем. Может, "искусственный ключ" ? Неизменность значений, и вообще все что Вы включили в пп2 не имеет прямого отношения к ключам (у них главное уникальность). Может иметь косвенное в плане физической реализации и прямое к идентификаторам. Но не везде первичный ключ считают идентификатором. Он может иметь значение физическое в плане производительности, и с учетом того, что некоторые операции в диалектах языков БД (или каких-то фичах) различных производителей возможны для первичных ключей, и не допустимы для альтекрнативных. В любом случае это поле, про которое Вы говорите, обыкновенно претендует на термин "естественный". Поскольку единственным признаком деления на Естественные или Суррогатные является принадлежность атрибута реальному объекту или нет. Суррогатный мало о чем говорит юзеру (отсюда и название). Его, например, нет во документах, потому проверить нельзя. В реальном мире все равно приходится идентифицировать как-то иначе, када пытаются понять о чем речь. Но зато мало причин его менять, а это имеет значение. А раз в Вашем случае этими свойстывами обладает естественный, то Вам повезло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2005, 23:11 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
а еще пользуются термином абстрактный ключ :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2005, 06:28 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
vadiminfo Неизменность значений, и вообще все что Вы включили в пп2 не имеет прямого отношения к ключам (у них главное уникальность).Все, что не уникально, просто не имеет отношения к теме. Дальнейшая классификация имеет прямое отношение только к ключам. И строится она по признакам, харктеризующим взаимосвязь данной БД и внешнего мира (возможно других БД). Таких признаков предложено два: - сохранение согласованности значений: да или нет. Если да, то такие ключи можно назвать бизнес-ключами - они имеют смысл во внешнем мире. Каким образом поддерживается согласованность пока не важно. Может быть просто неизменность, а может быть и специальные процедуры (перекодирование и пр.) для синхронизации изменений. - источник значений: если БД тогда это искусственный бизнес-ключ этой БД или просто искусственный ключ, если внешний мир то это естественный бизнес-ключ или просто естественный ключ vadiminfo Может иметь косвенное в плане физической реализации и прямое к идентификаторам. Но не везде первичный ключ считают идентификатором. Он может иметь значение физическое в плане производительности, и с учетом того, что некоторые операции в диалектах языков БД (или каких-то фичах) различных производителей возможны для первичных ключей, и не допустимы для альтекрнативных. ). С терминами альтернативный и первичный проблем нет, согласен. vadiminfo В любом случае это поле, про которое Вы говорите, обыкновенно претендует на термин "естественный". Поскольку единственным признаком деления на Естественные или Суррогатные является принадлежность атрибута реальному объекту или нет. Вот это обыкновение мне не совсем нравится, ибо если мы генерируем ключ в БД, например, присваиваем инвентарный номер экземпляру книги в библиотеке, то изначально этот номер реальному объекту не принадлежит и в нем ничего естественного нет. Когда он будет нанесен на экземпляр, то уже конечно безразлично, откуда он взялся, главное что он одинаков в БД и во внешнем мире. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2005, 10:20 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
ModelR Все, что не уникально, просто не имеет отношения к теме. Дальнейшая классификация имеет прямое отношение только к ключам. если БД тогда это искусственный бизнес-ключ этой БД или просто искусственный ключ, если внешний мир то это естественный бизнес-ключ или просто естественный ключ Я хотел только сказать, что ключ связан с уникальностью и минимальностью (никакое другое подмножество атрибутов ключа не обладает уникальностью). Болльше ни с чем (в том чистле и неизменностью). Атрибуты могут быть суррогантными или естественными или в зависимости от искуственности. Уникальность имеет бизнес природу для естественных. Для искуственных она навязывается. Т.е. обыкновенно, без дополнительных распоряжений, то что Вы называете искусственный бизнес-ключ - просто суррогатный ключ. А воторое так и есть - естественный ключ ModelR ибо если мы генерируем ключ в БД, например, присваиваем инвентарный номер экземпляру книги в библиотеке, то изначально этот номер реальному объекту не принадлежит и в нем ничего естественного нет. Когда он будет нанесен на экземпляр, то уже конечно безразлично, откуда он взялся, главное что он одинаков в БД и во внешнем мире. Как же инвентарный номер и не принадлежит? Еще как принадлежит. Это атрибут ПО данного предприятия - библиотеки. Прописанный в документах. Он юзеру потому о многом говорит. Библиотекарю больше порой, чем само название книги. Но его нельзя в общем случае сгенерить. Тока если поменять все инвентарные номера. Но они во многих доках уже есть. Их переделывать никто не захочет. Если этих документов еще нет и все пропускают культурно, через БД, тада возможно. Вот если Вы просто генерите идентификатор, который не тока не инвентарный номер, но и вообще ни что в ПО, тада другое дело - не принадлежит реальному объекту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2005, 11:04 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
Если кого-то интересует мое мнение, то главное, что отличает суррогатный ( искусственный) ПК от натурального (естественного, интеллектуального) ПК, это вовсе не известность / неизвестность его наличия для внешнего пользователя информационной системы, а все же сам факт существования такого набора атрибутов вне информационной системы. То есть если некоторые характеристики создаются внутри информационной системы, то они не могут называться естественными. Поэтому любой ПК, значения которого генерируются программно (самой СУБД или клиентским ПО, неважно), во избежание путаницы следует называть суррогатным (искусственным). После создания значений суррогатного ПК они могут приобрести смысл и вне информационной системы, но не перестанут быть суррогатными. Ибо если систему уничтожить (убить БД), то эти значения сразу обессмыслятся. То есть СПК может иметь смысл вне системы , но не в отсутствие системы . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2005, 09:33 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
mirЕсли кого-то интересует мое мнение, то главное, что отличает суррогатный ( искусственный) ПК от натурального (естественного, интеллектуального) ПК, это вовсе не известность / неизвестность его наличия для внешнего пользователя информационной системы, а все же сам факт существования такого набора атрибутов вне информационной системы. То есть если некоторые характеристики создаются внутри информационной системы, то они не могут называться естественными. Поэтому любой ПК, значения которого генерируются программно (самой СУБД или клиентским ПО, неважно), во избежание путаницы следует называть суррогатным (искусственным). После создания значений суррогатного ПК они могут приобрести смысл и вне информационной системы, но не перестанут быть суррогатными. Ибо если систему уничтожить (убить БД), то эти значения сразу обессмыслятся. То есть СПК может иметь смысл вне системы , но не в отсутствие системы .Согласен, что все то, что генерируется в системе, не подходит под слово естественный, ибо в этот момент во внешнем мире просто отсутствует. Однако по-моему полезно различать случаи, когда система генерирует ключи только для внутреннего употребления (суррогатный) и когда ключ предназначен также для использования во внешнем мире (исскуственный). Во втором случае система после опубликования ключа не может менять его смысл произвольным образом, т.е суррогатным он быть перестает. Например, предположим что имя аккаунта на данном форуме - ключ. Он создается исключительно при взаимодействии с системой, потому не может быть классифицирован как естественный. В то же время, система не должна менять имя аккаунта без согласия владельца - это не суррогатный ключ. Это искусственный ключ, поддерживаемый некоторыми специальными процедурами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2005, 10:25 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
Кстати, не обязательно после уничтожения системы искусственный ключ станет бессмысленным во внешнем мире. Например, даже если я не знаю, откуда взялся штрих-код на товаре, или ISBN на книге, живы ли системы- источники, ничто не мешает мне пользоваться этими кодами. Вот номером карты разорившегося банка воспользоваться сложно, по крайней мере по прямому назначению ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2005, 10:34 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
ModelRОднако по-моему полезно различать случаи, когда система генерирует ключи только для внутреннего употребления (суррогатный) и когда ключ предназначен также для использования во внешнем мире (исскуственный). Во втором случае система после опубликования ключа не может менять его смысл произвольным образом, т.е суррогатным он быть перестает Определения ключей из книги Joe Celko «Data & Databases: Concepts in Practice» ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2005, 12:57 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
г. Cелко известен своим трудом о деревьях и как автор книг по SQL, однако по поводу определений я бы не стал на него надеятся. Например его статья вызвала у меня больше вопросов, чем дала ответов:). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2005, 14:17 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
гм. все этто интерестно, но вот случай, скажем есть кампании (id_comp - явный суррогат) есть люди (id_per - явный суррогат) и есть записи о работниках (id_comp,id_per) (id_comp,id_per) - есть отражение реально существующего отношения, но состоит из суррогатов. Является ли он суррогатом, или же суррогат, это примерно так: (id_rab), id_comp,id_per (с тем, чтобы когда мы доопределим нашу модель периодами и прочая - не перекраивать пк) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2005, 14:34 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
2 4321 Отличный вопрос! Сам над этим думаю, в следующем направлении... В определении суррогатный/бизнес-ключ важно относительно чего мы определяемся, где проведена граница системы. Поскольку мы рассматриваем базу данных в целом, то для данной родительской таблицы, имеющей суррогатный ключ таблицы (СКТ), все внешние ключи на него из других таблиц этой БД также являются суррогатами нашей системы. Все они определенны на одном суррогатном домене - суррогатном ключе базы данных (СКБД) для той сущности, которую представляет таблица. Если бы мы по каким-то причинам провели границу системы между родителем и дочерними таблицами, то получили бы ситуацию искусственный - естественные ключи. Выбор идентифицирующей / неидентифицирующей миграции первичного ключа в подчиненную таблицу - отдельная песня. Как суррогатные так и бизнес-ключи родительских таблиц могут мигрировать и тем и другим способом. В ваших примерах Код: plaintext 1. 2. я бы сказал что все поля - это СКБД, а id_rab также СКТ таблицы T2 . Достойна ли ситуация T1 какого-то специального термина кроме "идентифицирующая миграция СК" ? Не думаю, что в этом есть необходимость. Итого имеем 2 таблицы, 5 полей все СКБД, З домена все суррогатные, 2 иденифицирующие и 2 неидентифицирующие миграции, 1 СКТ. З.Ы. В T2 я бы еще добавил альтернативный ключ (id_comp,id_per) в соответствии с нашими текущими представлениями о предметной области. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2005, 16:22 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
ModelR2 4321 Отличный вопрос! Сам над этим думаю, в следующем направлении... Подойдем с такой стороны: в предметной области (вернее ее логической модели ) есть сущности "компании", "персоны", "работники", причем "работники" - это отношение (в некотором приближении, ес-но) меж сущностями "компании" и "персоны" (именно "в предметной области", что означает, как говорилось, в ее логической модели - т.к. _соб-сно_ в п.о. нет даже и сущностей) - и по самой сущности "отношения" есть ничто иное, как набор указателей на компании и персоны, т.е. есть набор пар ключей этих сущностей. А уж то, что ключи сущностей взяты суррогатными - не влияет на природу отношения. Т.ч. заключаем что (id_comp,id_per) - естественный ЗЗЫ На самом деле (id_comp,id_per) с развитием модели П.О. может перестать (что чаще всего и происходит) отвечать требованиям к ключу нового понимания сущности "работник" (например если в сущность "работник" входит должность, отдел или еще что либо, а персона и совместитель и/или растет по службе) - т.е. "на самом деле" "естественность" нашей связки будет зависеть от способа отображения действительности на сущности логической модели (можно ведь и единственному "работнику" нарисовать множество "ролей" (совместители) или множество "временнЫх" значений [атрибута] "сущности" "служебное положение" (те же роли), и тогда наш подход к сущности "работник" как отражение связи компания-персона сохранит свою "естественную" адекватность) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2005, 18:22 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
ModelRг. Cелко известен своим трудом о деревьях и как автор книг по SQL, однако по поводу определений я бы не стал на него надеятся. Например его статья вызвала у меня больше вопросов, чем дала ответов:). Joe Celko известен, прежде всего, как технический редактор Комитета стандартов баз данных ANSI X3H2. Он известен своими рубриками (по SQL) в журналах посвященных работе с СУБД (a-la "DBMS") и, конечно, как автор замечательных книг по SQL, базам данных и т.п. Что касается определений... то с этим и Дейта масса проблем. Наверное, наиболее строгие определения у Ульмана, но определений разновидностей ключей мне у него не попадалось, к сожалению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2005, 11:16 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
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) ключом, реализующим бизнес-правило, соответсвующим бизнес-правилу, но не естественным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2005, 11:42 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
Тип-Топ Наверное, наиболее строгие определения у УльманаМне правда интересно, откуда возник миф о том, что Ульман -- Папа в плане теоретической строгости (типа Дейт рядом не валялся). Читал я внимательно его "БД: полный курс" и такого не наблюдал. Более того, у меня сложилось обратное мнение: Ульман в плане теоретической строгости с Дейтом и рядом не валялся. Примеры могу привести, ну хотя бы: строгие определения 1НФ и 2НФ в этой книге Ульмана вообще отсутствуют, нормализация начинается у него сразу с 3НФ. Определение функциональной и многознячной зависимости скверные, у Дейта лучше. И т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2005, 17:36 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
Составлять идентификатор объекта из идентификаторов других объектов нужно в том случае, если нет и не предполагается никаких характеристик у этого объекта. То есть, если это именно СОСТАВНОЙ ОБЪЕКТ, а не СВЯЗЬ между объектами, и не просто самостоятельный объект. У связи, как и у просто самостоятельного объекта, могут быть свои характеристики. Если вы используете ОСУБД, то связи М:М с характеристиками связи поддерживаются непосредственно. А "связи" более двух объектов, при ближайшем рассмотрении, являются связями М:М между составными объектами (чаще всего: между одним составным и одним простым объектами)... Однако "назначение" (а есть еще "должность", если уж точнее) в примере 4321 - это и не составной объект, и не связь, а просто самостоятельный объект. И у него обыкновенный идентификатор, то есть второй вариант (даже, если считать, что это "связь")... Здесь я пользовался терминологией объектных моделей данных и ОСУБД, где просто нет ключей (но есть уникальные характеристики, при необходимости), и нет нужды анализировать прилагательные к существительному "ключ"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2005, 21:55 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
Андрей ЛеонидовичЗдесь я пользовался терминологией объектных моделей данных и ОСУБД, где просто нет ключей (но есть уникальные характеристики, при необходимости), и нет нужды анализировать прилагательные к существительному "ключ"... А уникальные характеристики не могут иметь прилагательных? Типа код страны по ISO - естественная уникальная характеристика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2005, 09:53 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
> Т.ч. заключаем что (id_comp,id_per) - естественный Ох%еть. Пожалуйста, никому об этом не говорите. Это будет Ваш маленький секрет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2005, 10:42 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Т.ч. заключаем что (id_comp,id_per) - естественный Ох%еть. Пожалуйста, никому об этом не говорите. Это будет Ваш маленький секрет. пришел куй згары, ля. и усих прасфетил. там же ясно написано, шо и почем заключаем. некая провокация как версия подхода. если есь вазраженья пасуществу (вумник, млин), приведи. нет - дык иди лесом. нам ты собсно (сам ля, без анасмля) не энтересен. будут мысли - будем на них маненько пасмареть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2005, 11:21 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
> там же ясно написано, шо и почем заключаем. Предварительный диагноз - олигофрения в стадии дебильности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2005, 12:28 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
guest_20040621> там же ясно написано, шо и почем заключаем. Предварительный диагноз - олигофрения в стадии дебильности. с Вашим диагнозом согласен. Удачного лечения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2005, 12:31 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
Подозреваю, ModelR, что уникальные характеристики (хотя речь шла, все-таки, о ключах, и, применительно к ОМД, об идентификаторах), нужные для "связи с внешним миром" (!) (не забывайте, так же, что идентификаторы вовсе не скрыты от пользователей, и их можно "использовать во внешнем мире), ВРЯД ЛИ МОГУТ БЫТЬ ИСКУССТВЕННЫМИ (порожденными внутри системы баз данных)... Они всегда "естественные", "предложенные" и "утвержденные" "мировым сообществом"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2005, 16:26 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
Андрей ЛеонидовичПодозреваю, ModelR, что уникальные характеристики (хотя речь шла, все-таки, о ключах, и, применительно к ОМД, об идентификаторахречь шла о наборах характеристик, обладающих двумя свойствами: 1) однозначно определять значения других характеристик, 2) минимальностью - подмножество набора не обладает свойством (1). В РМД такие наборы называются ключами. В SQL-системах требование (2) не выдвигается. Не вижу, почему бы не использовать этот термин в ООБД применительно к набору свойств класса либо в РМД либо в SQL смысле. Андрей Леонидович), нужные для "связи с внешним миром" (!) (не забывайте, так же, что идентификаторы вовсе не скрыты от пользователей, и их можно "использовать во внешнем миреЕсли возможность использования во внешнем мире понимается как обязанность системы не изменять смысла идентификатора, то это и называется искусственный ключ. Андрей Леонидович), ВРЯД ЛИ МОГУТ БЫТЬ ИСКУССТВЕННЫМИ (порожденными внутри системы баз данных)... Они всегда "естественные", "предложенные" и "утвержденные" "мировым сообществом"...Что этому препятствует? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2005, 12:18 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
Уточняю еще раз. Экземпляры уже идентифицированы идентификаторами. "Аналогия", хотя и натянутая (ведь первичные ключи - это не идентификаторы) с РМД: кортежи уже идентифицированы ПЕРВИЧНЫМИ ключами (неважно, "искусственными" или "естественными") ! Поэтому уникальные характеристики (в ОБД они используются 1 раз не 100-1000 объектов, причем эти случаи, обычно, стандартны, то есть хорошо известны из "мировой практики", так сказать) это "аналоги" АЛЬ-ТЕР-НА-ТИВ-НЫХ ключей. Сомневаюсь, чтобы возникла необходимость в искусственных (генерируемых системой) АЛЬТЕРНАТИВНЫХ ключах... А вот в естественных, наряду с суррогатными первичными, - это да... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2005, 19:11 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
Просто напомню, что в РМД различие между первичными и альтернативными ключами не играет практически никакой роли. Как отмечает Дейт, этот выбор делается "по традиции", не обязательно, и обоснование этого выбора выходит за рамки РМД. Никакими дополнительными свойствами первичный ключ не обладает, все потенциальные ключи равноправно идентифицируют (адресуют) кортеж. Поэтому говорить что OID это аналог реляционного первичного ключа, а уникальные характеристики - альтернативного, значит сказать, что это одно и тоже. Что, как я понимаю для ОБД совсем не так, поскольку там для ссылок на объект годится только OID. Кстати, в SQL системах такая разница есть - альтернативный ключ может включать NULLABLE поля, а первичный нет, не все СУБД умеют строить FK на альтернативные ключи. Но альтернативный NOT NULL ключ опять таки практически эквивалентен первичному. Можно объявить суррогатный ключ альтернативным, бизнес-ключ первичным, FK строить на суррогат и будет работать :). Короче, опять не вижу, что же мешает уникальной характеритстике, пусть в одном из 1000 случаев, быть искусственным ключом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2005, 20:04 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
ModelR Если возможность использования во внешнем мире понимается как обязанность системы не изменять смысла идентификатора, то это и называется искусственный ключ. Не совсем ясно, как система вообще может изменить смысл идентификатора (т.е. можно ли ее обязать менять смысл), который обыкновенно находится в голове у юзера. Или имеется в виду что он меняет его имя в схеме. Ну тада уже не до ключей. Тут кое что поущественней в жизни БД происходит. И что это за искусственный ключ. По большому счкту в БД все искусственного происхождения. Или это синоним суррогатного ключа, или вычислимого поля? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2005, 20:08 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
Изменить смысл идентификатора (речь идет смысле конкретного значения, а не о смысле наменования ) - значит под данным значением ИД='12334' хранить информацию о другом объекте, не том что вчера. При этом поле по-прежнему называется скажем "табельный номер", но функция, отображение "табельный номер" -> Человек изменилась в БД. Если сиcтема: 1) генерирует значения ключа, 2) эти значения используются во внешнем мире то ключ называется искусственным по отношению к этой системе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2005, 12:47 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
ModelR Изменить смысл идентификатора (речь идет смысле конкретного значения, а не о смысле наменования ) - значит под данным значением ИД='12334' хранить информацию о другом объекте, не том что вчера. Так это просто изменить значение идентификатора. Так точнее и проще. Смысл то все равно юзера. И это ничего не дает. ModelR Если сиcтема: 1) генерирует значения ключа, 2) эти значения используются во внешнем мире то ключ называется искусственным по отношению к этой системе. А почему не просто естественным и вычислимым как раньше? Ведь ничего не изменилось в этом смысле с тех пор. А искусственный, в условиях када и сами проги исусственны разве не будет сбивать с толу, а что он дает не понятно. В какой литре его так назвали? И кто? Фамилии их интересны тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2005, 14:42 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
vadiminfo ModelR Изменить смысл идентификатора (речь идет смысле конкретного значения, а не о смысле наменования ) - значит под данным значением ИД='12334' хранить информацию о другом объекте, не том что вчера. Так это просто изменить значение идентификатора. Так точнее и проще. Смысл то все равно юзера. И это ничего не дает. Не понял однако ... Изменилось значение идентификатора значит вместо ИД ='12334' стало ИД= '98765'. Смысл в формальных системах - это соответствие. Изменение смысла - изменение соответствия. Разумеется изменение значения ИД без изменения соответствующей информации меняет смысл, но смысл можно поменять и сохраняя значение ИД. Вся проблема бизнес-ключей в том, что смыслов два: в голове юзера одно соответствие, в БД другое. и эти смыслы требуют синхронизации. vadiminfo ModelR Если сиcтема: 1) генерирует значения ключа, 2) эти значения используются во внешнем мире то ключ называется искусственным по отношению к этой системе. А почему не просто естественным и вычислимым как раньше? Ведь ничего не изменилось в этом смысле с тех пор. А искусственный, в условиях када и сами проги исусственны разве не будет сбивать с толу, а что он дает не понятно. В какой литре его так назвали? И кто? Фамилии их интересны тоже.Так с этого все и началось: А как назвать поле которое 1) используется в БД и внешнем мире в одинаковом смысле, но 2) значение поля генерируется автоматически в БД и каким-то образом эквивалентность (1) сохраняется в дальнейшем. Может, "искусственный ключ" ? Нет пока общепризнанного термина. Твое предложение -"вычисляемый естественный" ,а если мы его заимствуем то просто "естественный", так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2005, 15:47 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
"Можно объявить суррогатный ключ альтернативным, ..., FK строить на суррогат и будет работать:)." Будет, будет работать. Я же написал: СОМНЕВАЮСЬ, ЧТОБЫ ВОЗНИКЛА НЕОБХОДИМОСТЬ. Уникальные характеристики (в ОБД они используются 1 раз не 100-1000 объектов, причем эти случаи, обычно, стандартны, то есть хорошо известны из "мировой практики", так сказать) это "аналоги" ИСКЛЮЧИТЕЛЬНО АЛЬТЕРНАТИВНЫХ ключей. Сомневаюсь, чтобы возникла необходимость в искусственных (генерируемых системой) АЛЬТЕРНАТИВНЫХ ключах... А вот в естественных, наряду с суррогатными первичными, - это да... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2005, 18:48 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
Андрей Леонидович"Можно объявить суррогатный ключ альтернативным, ..., FK строить на суррогат и будет работать:)." Будет, будет работать. Я же написал: СОМНЕВАЮСЬ, ЧТОБЫ ВОЗНИКЛА НЕОБХОДИМОСТЬ. Т.е. может не возникнет, а может и возникнет. Я есть понимай... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2005, 19:23 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
Спасибо всем кто принял участие в обсуждении. Статья про классификацию учитывает также обсуждение в соседних топиках. Комментарии и критика приветствуются :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2005, 14:47 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
ModelR Изменилось значение идентификатора значит вместо ИД ='12334' стало ИД= '98765'. Смысл в формальных системах - это соответствие. Изменение смысла - изменение соответствия Смысл его в том, что он идентификатор или что он там собой представляет как атрибут. И от того что поменялись данные он идентификатором быть не перестал. Вот если бы после того как он стал = '98765', его следовало бы интепретировать как средняя зарплата в баксах за год специалиста ИТ в нашей стране, то можно было бы сказать, что смысл изменился. Формальные системы имеют тенденцию по возможности абстрагироваться от смысла объектов. ModelR 1) используется в БД и внешнем мире в одинаковом смысле, но 2) значение поля генерируется автоматически в БД и каким-то образом эквивалентность (1) сохраняется в дальнейшем. Естественное поле. Причем все что в пп 2) не имеет никакого значения в этом плане. Нарушение эквивалентности - нарушение достоверности данных. Как он генерится руками или автоматически вообще не имеет значения. Это забота проггеров. Может изобретут наконец способ, када комп научится читать мысли и будет все генерить автоматически. А можно юзера заставить писать инкрементно 1, 2 , N, N+1. Низкий уровень автоматизиции. Тока и всего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2005, 15:51 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
vadiminfo ModelR Изменилось значение идентификатора значит вместо ИД ='12334' стало ИД= '98765'. Смысл в формальных системах - это соответствие. Изменение смысла - изменение соответствия Смысл его в том, что он идентификатор или что он там собой представляет как атрибут. И от того что поменялись данные он идентификатором быть не перестал. Вот если бы после того как он стал = '98765', его следовало бы интепретировать как средняя зарплата в баксах за год специалиста ИТ в нашей стране, то можно было бы сказать, что смысл изменился. Формальные системы имеют тенденцию по возможности абстрагироваться от смысла объектов. Наименование, область определения и область значений соответствия не изменились, а само соответсвие изменилось. Вот о чем речь. Секунду назад сведения об объекте внешнего мира, известном как "Иван Иваныч" , лежали в БД под ИД ='12334' , а теперь - под ИД= '98765'. Во внешнем мире ровно ничего не произошло. Все произошло в БД. vadiminfo ModelR 1) используется в БД и внешнем мире в одинаковом смысле, но 2) значение поля генерируется автоматически в БД и каким-то образом эквивалентность (1) сохраняется в дальнейшем. Естественное поле. Причем все что в пп 2) не имеет никакого значения в этом плане. Нарушение эквивалентности - нарушение достоверности данных. Как он генерится руками или автоматически вообще не имеет значения. Это забота проггеров. Может изобретут наконец способ, када комп научится читать мысли и будет все генерить автоматически. А можно юзера заставить писать инкрементно 1, 2 , N, N+1. Низкий уровень автоматизиции. Тока и всего.Для естественного поля забота проггеров - как и откуда его вводить, как отследить внешние изменения. Для исскуственного, кроме генерации - кого и как известить об изменениях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2005, 13:02 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
ModelR Наименование, область определения и область значений соответствия не изменились, а само соответсвие изменилось. Вот о чем речь. Секунду назад сведения об объекте внешнего мира, известном как "Иван Иваныч" , лежали в БД под ИД ='12334' , а теперь - под ИД= '98765'. Во внешнем мире ровно ничего не произошло. Все произошло в БД. Обыкновенно это просто изменились данные. Модель данных обеспечивает интерпритацию данных, т.е. средства для пониманиях их смысла. Например, в РМД смысл табл и столбцов. У нее для этого есть схема БД. Если изменение данных не ведет к изменению иинтерпритации схемы, то смысл не изменился с точки зрения модели - изменились тока данные. Стал новый ИД у "Иван Иваныч" - БД перешла в другое состояние как при любом другом изменении данных. Тем более ИД в данном примере не несет в себе никакого смыслы - он суррогатный. Вот если бы при ИД ='12334' Иван Иванович интерпретировался как студет, а при ИД= '98765' как преподователь - оставаясь в той же табле в том же столбце, и это влияет на запросы в БД. То смысл изменился. Я видел такие БД. Это нарушение принципов моделирования - меняется по сути модель данных при модификации данных. Интерпритация данных зависит от значений - одной схемы не достаточно, чтобы понять что они означют. ModelR Для естественного поля забота проггеров - как и откуда его вводить, как отследить внешние изменения. Для исскуственного, кроме генерации - кого и как известить об изменениях. Для естественного может и надо кого-то извещать. А суррогатный юзерам мало что говорит. Или у них еще одна БД хде они записали, что ИД ='12334' и теперь надо поменять на ИД= '98765'? Боюсь, что такая ИС где это надо делать по меньшей мере никуда не годится. Толи проектировщики редкие чайники, толи технологии необыкновенно устаревшие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2005, 14:37 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
vadiminfo Обыкновенно это просто изменились данные. Модель данных обеспечивает интерпритацию данных, т.е. средства для пониманиях их смысла. Например, в РМД смысл табл и столбцов. У нее для этого есть схема БД. Если изменение данных не ведет к изменению иинтерпритации схемы, то смысл не изменился с точки зрения модели - изменились тока данные. Смыслов вообще-то много, и кроме одного все сохранились- база по прежнему про кадры, таблица - про людей, и т.д., только соответсвие ЗНАЧЕНИЙ ИД и ЭКЗЕМПЛЯРОВ объектов внешнего мира изменилось. vadiminfo Стал новый ИД у "Иван Иваныч" - БД перешла в другое состояние как при любом другом изменении данных. Тем более ИД в данном примере не несет в себе никакого смыслы - он суррогатный. В том то и дело, что с точки зрения внешнего мира ничего не изменилось, база в прежнем состоянии, ибо собственно суррогаты извне - безразличны, также как скажем физическое размещение по дискам. vadiminfo Для естественного может и надо кого-то извещать. А суррогатный юзерам мало что говорит. Или у них еще одна БД хде они записали, что ИД ='12334' и теперь надо поменять на ИД= '98765'? Боюсь, что такая ИС где это надо делать по меньшей мере никуда не годится. Толи проектировщики редкие чайники, толи технологии необыкновенно устаревшие. Не суррогатный - искусственный. Есть две базы - в одной странам ПРИСВАИВАЮТ коды по ИСО, в другой их ИСПОЛЬЗУЮТ. Там где присваивают, если код страны - ключ, то он ключ искусственный. Там где используют, если код страны ключ -то он ключ естественный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2005, 16:10 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
Так, слегка отступая от темы: автор Не знаю, как назвать, но это зависит от постановки задачи. Так в 1С:Зарплата и кадры поле "Табельный номер сотрудника" считалось уникальным (допустимо, всех новых принимать и давать новые номера). Но на некоторых предприятиях ведется практика давать вновь принятым работникам табельные номера уже уволившихся. Соответственно не о какой уникальности речи быть не может. Суть табельного номера совсем в другом. Он подразумевает что в одно и то же время не может быть в базе 2 людей с одинаковыми табельными номерами. Следовательно, Таб.Ном+Дата принятия на работу+Дата увольнения - однозначно идентифицируют работника. К тому же если таб. номера повторяются, то периоды работы на предприятии двух сотрудников с одинаковыми таб. номерами не должны пересекаться. Аналогичная систуация с номерами договоров. Если учесть еще и дату подписания (или даже период действия договора) - то можно забить на неуникальность договоров. То что это тяжело обрабатывать - другой вопрос. (Всегда можно найти выход из трудной ситуации, однако) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2005, 17:41 |
|
||
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#18+
ModelR Смыслов вообще-то много, и кроме одного все сохранились- база по прежнему про кадры, таблица - про людей, и т.д., только соответсвие ЗНАЧЕНИЙ ИД и ЭКЗЕМПЛЯРОВ объектов внешнего мира изменилось. В рамках модели данных смысл один - ИД идентификатор (суррогатный). Любые соответсвия это просто данные описывающие сущность инфа, о которой хранится в БД. Это просто факты. Суррогатный потому, что к сущности припичатано, то чего нет во внешнем мире как Вы это называете или в ПО как это принято в литре. Поменялось значение, а смысл остался - 98765 это значение идентификатора Иванова, а не скажем, его зарплата. ModelR В том то и дело, что с точки зрения внешнего мира ничего не изменилось, база в прежнем состоянии, ибо собственно суррогаты извне - безразличны, также как скажем физическое размещение по дискам. Если суррогаты - безразличны для юзеров, то о смысле соответсвия, либо еще чего подобного, тем более говорить не приходится. Однако, состояние БД изменилось. И такие изменения не говорят ни о чем хорошем - слабый идентификатор, потому что меняется во времени. Вообще одна из причин выбора суррогата - надежда на его неизменчивость. Потому во многих СУБД предусмотрены более сильные идентификаторы, чем счетчики. Например, генераторы гллобальных идентификаторов - вот пример значения из Оракла 88941C950D7B448E8F89DC7720E786CF. Т.е. изменение суррогатных ИД выглядит как какие-то программные ухищрения, однако, связанные с изменением БД. Т.е. плохой стиль. Иногда в литре приходится видеть вообще утверждения, что для РМД ИД не должны меняться. Хотя, конечно, это не строго. В общем случае нельзя говорить и о том, что все запросы будут возвращать то же, что и до такого изменения. Если парни меняют значения суррогатов, то от них или такой системы можно ждать чего угодно. ModelR Не суррогатный - искусственный. Есть две базы - в одной странам ПРИСВАИВАЮТ коды по ИСО, в другой их ИСПОЛЬЗУЮТ. Там где присваивают, если код страны - ключ, то он ключ искусственный. Там где используют, если код страны ключ -то он ключ естественный. Суррогатный - имеет значение тока, то что он не соответствует никаким свойствам сущностей ПО, т.е. мало о чем говорит юзерам. ИСО, как Вы его описали, в обеих естественный. По нему могут быть запросы и все такое. Он прописан в каких-то утверденных в ПО документах. По нему могут быть выборки осмысленные. А то что его там не используют - так много , что есть в БД, чего часть юзеров не используют. На то они и БД, чтобы быть предназначенными для многих приложений. Ведь основная идея БД интеграция данных. Естественно, что часть данных кто-то не использует. Если, к примеру, в БД предприятия есть кадры и бухгалтекрия, то вся инфа про платежки для кадровиков может не представлять интереса. Что ж она теперь искусственная? Для кадровиков, но не искуственная для бухгалтеров? Для этого есть термины - типа локальная модель данных, глобальная. Они хоть к модели привязаны. А искусственный к чему? Что он дает в общем раскладе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2005, 13:14 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1545736]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
85ms |
get tp. blocked users: |
1ms |
| others: | 265ms |
| total: | 448ms |

| 0 / 0 |
