Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Термины естественный/суррогатный/искусственный ключ
|
|||
|---|---|---|---|
|
#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?fid=32&msg=33166347&tid=1545736]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
63ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 271ms |
| total: | 420ms |

| 0 / 0 |
