powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
141 сообщений из 141, показаны все 6 страниц
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37679219
тверской
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В каждой СУБД по-своему реализован механизм, позволяющий автоматически заполнять/нумеровать строки в колонке для PK (генератор+триггер, специальный тип поля и др.)
Используете ли вы данные механизм, если ваше приложение самостоятельно заполняет поле под PK?

В FireBird, обычно, используют триггер, котороый проверяет наличие значения перед вставкой и, при необходимости, вставляет значение по генератору. Накладные расходы на стороне сервера (триггер) можно исключить.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37679402
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тверскойВ каждой СУБД по-своему реализован механизм, позволяющий автоматически заполнять/нумеровать строки в колонке для PK (генератор+триггер, специальный тип поля и др.)
Используете ли вы данные механизм, если ваше приложение самостоятельно заполняет поле под PK?
Я, например, в СУБД Caché стараюсь не использовать самостоятельное заполнение PK, то есть использую всегда стандартный PK, вернее OID, так как СУБД в том числе и объектно-ориентированная.
Впрочем, когда необходимо, на этот процесс можно повлиять, например, если необходимо начать нумерацию с определённого значения или чтобы значения шли не по порядку (аналог sequence).
Автоматический (стандартный) OID использую, чтобы не иметь в будущем проблем с возможностью использовать в классах bitmap -индексы.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37679529
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тверскойВ каждой СУБД по-своему реализован механизм, позволяющий автоматически заполнять/нумеровать строки в колонке для PK (генератор+триггер, специальный тип поля и др.)
Используете ли вы данные механизм, если ваше приложение самостоятельно заполняет поле под PK? В FireBird, обычно, используют триггер, котороый проверяет наличие значения перед вставкой и, при необходимости, вставляет значение по генератору. Накладные расходы на стороне сервера (триггер) можно исключить.

Тут ошибка. Приложение ни при каких условиях не должно заполнять PK. Если вы всё-же хотите, что-бы этот процесс проскальзывал через клиента, то правильно сделать так:
1. Клиент запрашивает с сервера новое значение PK.
2. Клиент отправляет на сервер запись, включив в эту запись и это значение PK.
Т.е. Значение РК делает полную петлю

Предвижу возражения "экономистов", типа такого:
- "А если клиент получит значение РК и не воспользуется им, то в стройной последовательности PK на сервере будет числовая дырка?
Ответ:
- Да, будет дырка, и это не страшно, обычное дело.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37679633
тверской
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zeon11,
1) приложение может запросить/зарезервировать у сервера диапазон значений (сколько необходимо, например неск. млн.) для PK и спокойно их использовать
В данном случае триггер или специальный тип поля для PK не используются, но несут доп. нагрузку на сервер при вставке записей.
2) в качестве PK могут использоваться GUID или что-то похожее, поэтому заполнять поле удобнее на клиенте
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37679754
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если ПК действительно является ПК, абстрактным уникальным кодом, не несущим никакой смысловой нагрузки, то никакие резервирования диапазонов не нужны.

Если вы возлагаете на ПК ф-ии некоего нумератора, понятного и приятного человеческому глазу, то это уже не ПК а "красивый номер" - табельный номер, номер по журналу документов, номер бланка, договора, векселя, чего-то еще.

Разделите эти функции и не смешивайте их.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37679814
тверской
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программист-Любитель,
никакого смешивания нет.
Выделение диапазона необходимо, если, например, вы вставляете 10 млн. записей в таблицу
- либо для каждой записи отрабатывает триггер+генератор
- либо поле PK корректно заполнено сразу на клиенте (из выделенного диапазона, для чего один раз обратились к генератору)

автоматическое заполнение PK на сервере (+накладные расходы при вставке каждой записи) <-> заполнение PK на клиенте (+внимательный контроль за разработкой ПО)
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37679851
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PK - не обязательно должен быть суррогатным, в общем случае. Но если суррогатный (естественный РК естественно на клиенте), то, скорее всего, должен заполняться на сервере во избежании разрешения излишних конфликтов клиентов, пытающихся написать одно и то же значение своим таким разным записям.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37679954
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Используете ли вы данные механизм, если ваше приложение самостоятельно заполняет
> поле под PK?

ЕСЛИ приложение самостоятельно генерирует значения для PK, то ЕСТЕСТВЕННО
генераторы не используются.

ТОЛЬКО ЕСТЬ ОДНО НО: я ещё ни разу не видел, чтобы приложение самостоятельно
заполняло PK. Т.е. все наши приложения всегда генерировали СУБД-шными
генераторами. Чтобы приложение могло бы "самостоятельно заполнять поле под PK",
PK должен быть естественным ключём, которых в природе не существует.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37679975
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тверскойzeon11,
1) приложение может запросить/зарезервировать у сервера диапазон значений (сколько необходимо, например неск. млн.) для PK и спокойно их использовать
В данном случае триггер или специальный тип поля для PK не используются, но несут доп. нагрузку на сервер при вставке записей.
2) в качестве PK могут использоваться GUID или что-то похожее, поэтому заполнять поле удобнее на клиенте

Подобные схемы актуальны, если вы пытаетесь построить систему типа "floppy_net". Тогда да, чтобы без геммора раз в неделю сливать данные от коммивояжёров в одну базу, и требуется или резервирование диапазона РК, или использовать GUID. Другие бизнес-схемы, где это понадобилось-бы, мне в голову не приходят. Причём, даже в этом случае, можно придумать более изящный вариант.
Ну, и насчёт GUID:
1.Очевидно, что ожидать ускорения работы БД и уменьшения размера БД в случае использования GUID не приходится.
2.При использовании целочисленного РК вы получаете в качестве бонуса лёгкий способ определения старшинства записи, контроль целостности данных.
3. РК рано или поздно при проектировании БД войдёт в другую таблицу в качестве FK,
и таких внешних ключей в одной таблице может быть не один, а достаточно много. Представьте, как будет выглядеть такая таблица при прямом просмотре?

По поводу вашей сентенции, что заполнять поле на клиенте удобнее, позволю себе спросить: чем удобнее-то?
ковырять не отвёрткой, а кухонным ножом в электрической розетке удобнее, поскольку он тут, под рукой, на кухне лежал, а за отвёрткой надо было в гараж идти?
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37679977
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> автоматическое заполнение PK на сервере (+накладные расходы при вставке каждой
> записи)

Там на самом деле нет никаких накладных расходов обычно, потому что как правило
для этих вещей в СУБД используются нетранзакционные и очень быстрые механизмы.
Грубо говоря, sequence -- это переменная в памяти СУБД с определённым именем,
и защищённая мьютексом (нетранзакционным). Каждые n генераций её новый верхний
диапазон (N+n) физически записывается на диск в специальную область данных БД.
Это очень быстро, n обычно несколько тысяч.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37680104
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
PK должен быть естественным ключём, которых в природе не существует.

Зато могут существовать в ИС. СУБД Аксцеес поддерживает каскадное обновление (не нуно париться с поддержколй), БД часто не большие, чтобы это каскадное одновление не напрягало. Там может быть суррогатный в общем случае и ниче особого не дает.
СУБД Оракл, наоборот, скорей, предполагает суррогаты. Мало того что каскадное обновление декларативно не поодеерживается, так еще и взаимными блокировками чревато изменение значения РК.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37680170
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfoMasterZivPK должен быть естественным ключём, которых в природе не существует.

Зато могут существовать в ИС. СУБД Аксцеес поддерживает каскадное обновление (не нуно париться с поддержколй), БД часто не большие, чтобы это каскадное одновление не напрягало. Там может быть суррогатный в общем случае и ниче особого не дает.
СУБД Оракл, наоборот, скорей, предполагает суррогаты. Мало того что каскадное обновление декларативно не поодеерживается, так еще и взаимными блокировками чревато изменение значения РК.

ЗАЧЕМ?!!!!
Любим стоять на лыжах в гамаке?
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37680219
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zeon11ЗАЧЕМ?!!!!
Любим стоять на лыжах в гамаке?
Пардон, не совсем понял что именно ЗАЧЕМ?!!!!
Естесвенные ключи зачем? Менять зачем? или что?
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37680329
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> ЗАЧЕМ?!!!!
> Любим стоять на лыжах в гамаке?

> Пардон, не совсем понял что именно ЗАЧЕМ?!!!!
> Естесвенные ключи зачем? Менять зачем? или что?

Зачем менять PK.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37681282
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Зачем менять PK.

Ну мало ли. Если естественный идентификатор в качестве PK, то к примеру, чтобы исправить опечатки. Ну напрмер, это номер регистрации предприятия. Через месяц выяснили что в номере ошибка. Вот и изменили.
Изменнеие суррогата выглядит как маловероятное ( ну собсно про это и говорил: в Оракле каскад в больших БД выглядит не привлекательно). Поэтому это как бы его важное достоинство перед естестевнным. Недостаток, что он суррогатный - ничему в "природе" (никакому свойству объектов предметной области) не соотвествует.

Впрочем, значения суррогатов произвольные, потому замена одного на другое ниче не исакажает в предметной области (в природе, если угодно). А если мы не знаем ЗАЧЕМ менять, то это не значит, что этого ЗАЧЕМ не придумают юзера, включая админов БД на протяжении всей эксплуатации БД.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37681381
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfoMasterZivЗачем менять PK.

Ну мало ли. Если естественный идентификатор в качестве PK, то к примеру, чтобы исправить опечатки. Ну напрмер, это номер регистрации предприятия. Через месяц выяснили что в номере ошибка. Вот и изменили.
Изменнеие суррогата выглядит как маловероятное ( ну собсно про это и говорил: в Оракле каскад в больших БД выглядит не привлекательно). Поэтому это как бы его важное достоинство перед естестевнным. Недостаток, что он суррогатный - ничему в "природе" (никакому свойству объектов предметной области) не соотвествует.

Впрочем, значения суррогатов произвольные, потому замена одного на другое ниче не исакажает в предметной области (в природе, если угодно). А если мы не знаем ЗАЧЕМ менять, то это не значит, что этого ЗАЧЕМ не придумают юзера, включая админов БД на протяжении всей эксплуатации БД.

Просто я в качестве PK всегда использовал суррогатный ключ и никогда не показывал его юзерам, поэтому с такими проблемами и не встречался, да и не жалею об этом. Вот и спросил, зачем создавать себе трудности, когда можно совсем без них обойтись?
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37681417
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zeon11Просто я в качестве PK всегда использовал суррогатный ключ и никогда не показывал его юзерам, поэтому с такими проблемами и не встречался, да и не жалею об этом. Вот и спросил, зачем создавать себе трудности, когда можно совсем без них обойтись?
При проектировании, разработке мы типа сталкиваемся с выбором альтернатив из-за того, что у разных вариантов есть свои достоинства и недостатки, которые в раных ситуациях могут иметь разный вес.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37682205
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfoЕсли естественный идентификатор в качестве PK, то к примеру, чтобы исправить опечатки. Привет путешественникам по граблям!
vadiminfoНу напрмер, это номер регистрации предприятия. Ага! Ничего естественнее номера регистрации у предприятия быть не может. Прям, фундаментальная физическая константа.
vadiminfoЧерез месяц выяснили что в номере ошибка. Вот и изменили. А сейчас, например, выборы пройдут, правительство поменяется и, внезапно, окажется, что предприятия неправильно регистрировали... Как говорится "всю систему менять надо"...
vadiminfoНедостаток, что он суррогатный - ничему в "природе" (никакому свойству объектов предметной области) не соотвествует. Вы уверены, что это недостаток?
vadiminfoА если мы не знаем ЗАЧЕМ менять, то это не значит, что этого ЗАЧЕМ не придумают юзера, включая админов БД на протяжении всей эксплуатации БД. Как уже было отмечено, юзерам не то что менять и видеть-то PK совсем не обязательно.
Что касается DBA, то коли он, в здравом уме за такое принялся, то и с суррогатными ключами справится.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37682214
baracs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfoПри проектировании, разработке мы типа сталкиваемся с выбором альтернатив из-за того, что у разных вариантов есть свои достоинства и недостатки, которые в раных ситуациях могут иметь разный вес. Форум можно закрывать.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37682250
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
> автоматическое заполнение PK на сервере (+накладные расходы при вставке каждой
> записи)

Там на самом деле нет никаких накладных расходов обычно

Там - это там. А у ТС - триггер еще сверху... Вот он и переживает.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37682271
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот если в клиент встроить самописный БД-движок, автоматом реплицирующийся со всеми остальными клиентами-движками (которых в сети набродкастит), то будет что ответить на вопрос " А чего это у вас, оболтусов, клиент PK генерит?! "!
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37683210
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
baracsПривет путешественникам по граблям! .
Привет, учителям жизни.
baracs Ага! Ничего естественнее номера регистрации у предприятия быть не может. Прям, фундаментальная физическая константа.

Ну хорошо коли есть. Но типа в примере меньше всего имели значения "степеня естественности"


baracsА сейчас, например, выборы пройдут, правительство поменяется и, внезапно, окажется, что предприятия неправильно регистрировали... Как говорится "всю систему менять надо"...

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


baracs Вы уверены, что это недостаток?
Ну к достоинстам это вроде редко относят. Нет конечно, для данных проги это номано. Но для БД вроде раньше достоинством это не считалось: в предметной области эти данные отсуствуют. Ухудшение структурного соотвествия МД предметной области.

baracs Как уже было отмечено, юзерам не то что менять и видеть-то PK совсем не обязательно..


Ну отмечать то можно хоть раньше хоть позже, какая разница. Ить отмечать и обосновывать типа не одно и то же в общем случае.
Не обязательно, не значит не возможно.

baracs
Что касается DBA, то коли он, в здравом уме за такое принялся, то и с суррогатными ключами справится.

А вопрос то был про: зачем изменять , а не про то справится или нет. Это выглядит как Вы тока опять подтвердили, что и суррогаты может понадобиться менять. Ну пусть хотя бы тока DBA в здравом уме.

baracs

Форум можно закрывать.
.

А по мне так наоборот: неопределенностей слишком много, так что рано закрывать. Впрочем, возможно, Вам виднее.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37715733
тверской
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zeon11Ну, и насчёт GUID:
1.Очевидно, что ожидать ускорения работы БД и уменьшения размера БД в случае использования GUID не приходится.
2.При использовании целочисленного РК вы получаете в качестве бонуса лёгкий способ определения старшинства записи, контроль целостности данных.
3. РК рано или поздно при проектировании БД войдёт в другую таблицу в качестве FK,
и таких внешних ключей в одной таблице может быть не один, а достаточно много. Представьте, как будет выглядеть такая таблица при прямом просмотре?

по 1.
Что очевидно? да, 16 байт GUID в два раза больше, чем 8 байн BigInt, но в масштабах БД это будут копейки
по 2.
Определение старшинства записи по значению PK - это, мягко говоря, бред. Подобный метод применяется в БД "на коленке", где данные добавляет только один пользователь и всегда только "по старшинству".
по 3.
Пользователь никогда не видит служебную информацию, типа PK/FK, индексов, ему это не надо и даже вредно.
Админ или разработчик, простатривая таблицу с несколькими десятками млн. записей, увидит одинаковую картину )))
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37715932
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тверскойzeon11Ну, и насчёт GUID:
1.Очевидно, что ожидать ускорения работы БД и уменьшения размера БД в случае использования GUID не приходится.
2.При использовании целочисленного РК вы получаете в качестве бонуса лёгкий способ определения старшинства записи, контроль целостности данных.
3. РК рано или поздно при проектировании БД войдёт в другую таблицу в качестве FK,
и таких внешних ключей в одной таблице может быть не один, а достаточно много. Представьте, как будет выглядеть такая таблица при прямом просмотре?

по 1.
Что очевидно? да, 16 байт GUID в два раза больше, чем 8 байн BigInt, но в масштабах БД это будут копейки

Начиная с того, что абсолютная уникальность GUID, собственно, не очень-то и гарантируется (т.е., могут быть дубликаты и не только теоретически), и заканчивая тем, что GUID по сути - случайное число, последовательная вставка которых в индексы приводит, мягко говоря, к тихому страху и ужасу для дисковой подсистемы при работе с большими объемами данных...
Если GUID-поле входит еще и в кластерный индекс (в стиле MSSQL) - туши свет, пиши письма...
тверскойпо 2.
Определение старшинства записи по значению PK - это, мягко говоря, бред. Подобный метод применяется в БД "на коленке", где данные добавляет только один пользователь и всегда только "по старшинству".

Не вопрос... Но тут такое дело... Например, есть задача, в котоой достаточно часто (раз в несколько секунд) требуется выбрать последние N вставленных записей в таблицу (что-то под десяток млн. записей в месяц, примерно 20 ГБ данных на диске)... Данные в таблицу вставляются несколькими "тупыми железяками"... Прикажете делать еще одно поле с датой/временем вставки и индексировать его? вариант, конечно, но вот только в случае с целочисленным автоинкрементным суррогатным ключом это даже не просто, а ОЧЕНЬ просто - выбрать последние записи по индексу... Без всяких дополнительных накладных расходов...
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37715933
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Удивительно, после вопроса о том, каким кодом лучше формировать суррогатные ключи, несколько человек немедленно написали, что естественные ключи - это плохо :-)
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37716016
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ежели предусматривается как в 1С и MSCRM выгрузка и загрузка конфигураций - то тут без GUID в качестве ключей - никуда!
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37716137
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spежели предусматривается как в 1С и MSCRM выгрузка и загрузка конфигураций - то тут без GUID в качестве ключей - никуда!Составной ключ, одна из частей которого "код реплики", спасет отца русской демократии. Решаемо без всяких GUID - легко и непринужденно!..
"Исключительная бесполезность" GUID в качестве ключа имеет весьма относительный смысл только при слиянии данных из категорически РАЗНОРОДНЫХ источников...
И исключительно в тех случаях, когда в хотя бы одной из "сливаемых" систем используются именно такие ПК...
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37717791
тверской
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sphinx_mvтверскойпо 2.
Определение старшинства записи по значению PK - это, мягко говоря, бред. Подобный метод применяется в БД "на коленке", где данные добавляет только один пользователь и всегда только "по старшинству".

Не вопрос... Но тут такое дело... Например, есть задача, в котоой достаточно часто (раз в несколько секунд) требуется выбрать последние N вставленных записей в таблицу (что-то под десяток млн. записей в месяц, примерно 20 ГБ данных на диске)... Данные в таблицу вставляются несколькими "тупыми железяками"... Прикажете делать еще одно поле с датой/временем вставки и индексировать его? вариант, конечно, но вот только в случае с целочисленным автоинкрементным суррогатным ключом это даже не просто, а ОЧЕНЬ просто - выбрать последние записи по индексу... Без всяких дополнительных накладных расходов...
Что показывает данный конкретный случай? Что в некоторых условиях самое большое значение автоинкрементного поля, скорее всего, совпадает с самыми "новыми" данными, но с этим никто и не спорит )))
Стоит одной из "тупых железок" задержать отправку данных (сбой на канале, увеличение буфера на железке, изменение порядка отправки данных из буфера или др.) и последние N записей уже могут не быть самыми новыми. Заменит производитель в одной из железок алгоритм "очередь" на "стэк", и использование автоинкрементного поля пойдет лесом.
И это без учета особенностей обработки вставляемых данных в процедурах/триггерах БД.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37717978
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тверскойЧто показывает данный конкретный случай? Что в некоторых условиях самое большое значение автоинкрементного поля, скорее всего, совпадает с самыми "новыми" данными, но с этим никто и не спорит )))
Стоит одной из "тупых железок" задержать отправку данных (сбой на канале, увеличение буфера на железке, изменение порядка отправки данных из буфера или др.) и последние N записей уже могут не быть самыми новыми. Заменит производитель в одной из железок алгоритм "очередь" на "стэк", и использование автоинкрементного поля пойдет лесом.
И это без учета особенностей обработки вставляемых данных в процедурах/триггерах БД.

-- Так что же делать? -- забеспокоился Балаганов. -- Как снискать хлеб насущный?
-- Надо мыслить, -- сурово сказал Остап. - Меня, например, кормят идеи. Я не протягиваю лапу за кислым исполкомовским рублем. Моя наметка пошире.

Это что, типа только GUID нас спасёт?
Ну, ну, плавали, знаем... Флаг в руки и вперёд. Удачи!
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37717996
тверской
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zeon11,
тема, если прочитали, - где заполняете PK, на клиенте или на сервере
GUID - один из примеров ключа (обсуждение его преимуществ и недостатков оставим)
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37718014
тверской
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zeon11,
вы же работаете с FB, всегда через триггер+генератор заполняете PK?
возможность получить от генератора диапазон и использовать его в приложении принципиально не используете?
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37718027
Kyubee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тверскойвозможность получить от генератора диапазон
Очень ненадёжно. Нужно всё время следить, чтобы диапазоны не пересеклись. То и дело какой-нибудь новый сотрудник базу в филиале развернёт, а диапазоны не открутит, и начинает приходить по репликации такое...
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37718043
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тверскойsphinx_mvпропущено...

Не вопрос... Но тут такое дело... Например, есть задача, в котоой достаточно часто (раз в несколько секунд) требуется выбрать последние N вставленных записей в таблицу (что-то под десяток млн. записей в месяц, примерно 20 ГБ данных на диске)... Данные в таблицу вставляются несколькими "тупыми железяками"... Прикажете делать еще одно поле с датой/временем вставки и индексировать его? вариант, конечно, но вот только в случае с целочисленным автоинкрементным суррогатным ключом это даже не просто, а ОЧЕНЬ просто - выбрать последние записи по индексу... Без всяких дополнительных накладных расходов...
Что показывает данный конкретный случай? Что в некоторых условиях самое большое значение автоинкрементного поля, скорее всего, совпадает с самыми "новыми" данными, но с этим никто и не спорит )))
Стоит одной из "тупых железок" задержать отправку данных (сбой на канале, увеличение буфера на железке, изменение порядка отправки данных из буфера или др.) и последние N записей уже могут не быть самыми новыми. Заменит производитель в одной из железок алгоритм "очередь" на "стэк", и использование автоинкрементного поля пойдет лесом.
И это без учета особенностей обработки вставляемых данных в процедурах/триггерах БД.
Вот только не надо высосаных из пальца детских страшилок рассказывать!
Во-первых, максимальная длина необработанной очереди в любом стеке должна быть равна 0!
Во-вторых, аварийное состояние системы тем и отличается от нормального , что в системе "происходит не совсем то и не совсем так"...
В-третьих, от того, что "канал упал" или "стек забился" последние вставленные в таблицу данные НЕ перестают быть последними вставленными данными, даже если они относятся к данным за позапрошлый век.
И весьма актуальное "а-на-на" кому надо (по чем надо) за аварийное состояние системы, минимальные требование по доступности которой ограничиваются на уровне "24/7/365", будет прописано с гораздо большей оперативностью (с сильно меньшими затратами).
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37718082
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тверскойzeon11,
тема, если прочитали, - где заполняете PK, на клиенте или на сервере
GUID - один из примеров ключа (обсуждение его преимуществ и недостатков оставим)

Обсуждать варианты БЕЗ обсуждения плюсов и минусов - бред!
GUID - это единственный разумный способ генерации ПК на клиенте.
И все бы бы хорошо, но вот только количество недостатков этого способа вполне зашкаливает по сравнениями с теми, якобы, преимуществами, которые он предоставляет...
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37719288
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvтверскойzeon11,
тема, если прочитали, - где заполняете PK, на клиенте или на сервере
GUID - один из примеров ключа (обсуждение его преимуществ и недостатков оставим)

Обсуждать варианты БЕЗ обсуждения плюсов и минусов - бред!
GUID - это единственный разумный способ генерации ПК на клиенте.
И все бы бы хорошо, но вот только количество недостатков этого способа вполне зашкаливает по сравнениями с теми, якобы, преимуществами, которые он предоставляет...

+1
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37719331
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тверскойzeon11,
вы же работаете с FB, всегда через триггер+генератор заполняете PK?
возможность получить от генератора диапазон и использовать его в приложении принципиально не используете?

Действительно, несколько раз были ситуации, когда хотелось заангажировать диапазон PK,
но поскольку подспудно чувствовал, что это принципиально не правильно (так получилось, что в те времена форума небыло, посоветоваться то-же было не с кем, в книжках то-же это не обсуждалось), старался этого не делать.
Один или два раза это делал, потом пожалел.
Сейчас убеждён, что это (выделение диапазона) зло. Но это моё личное мнение и я его никому не навязываю.

Давайте рассмотрим конкретную Вашу ситуацию, может быть можно решить проблему по-другому?
Могу предположить, на своём опыте, что проблема в удалённых рабочих местах.
Есть материнская БД и есть БД коммивояжёров. Периодически они слетаются в улей и несут свою толику мёда ;-).
Самое простое, это действительно распределить каждому свой диапазон.
Но что произойдёт на практике.
1. Мы на мамке должны вести реестр коммивояжёров, выделенные им диапазоны.
2. Каждому коммивояжёру мы должны предоставить СВОЮ индивидуальную базу данных. Пусть эта индивидуальность заключается только в предварительно настроенном генераторе, но тем не менее...
3. Мы должны постоянно следить за этими их БД, обслуживать их, смотреть, что-бы их диапазон не вылетел за границы.
4. Начали заливать их данные на мамку. По-любому, когда-то случится сбой (это аксиома), принесут дважды одни и те-же данные, сервер их не примет, тут уж начнутся танцы с бубном, наезды типа "мы принесли данные, а сервер не принимает, что за го...но вы тут слепили"

Проблем действительно много.

Хорошо, если у коммивояжёров мудрые грустные глаза, тогда всё получится. А если стеклянно-оловянные - лучше не браться за это :-)
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37719372
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvНо тут такое дело... Например, есть задача, в котоой достаточно часто (раз в несколько секунд) требуется выбрать последние N вставленных записей в таблицу (что-то под десяток млн. записей в месяц, примерно 20 ГБ данных на диске)... Данные в таблицу вставляются несколькими "тупыми железяками"... Прикажете делать еще одно поле с датой/временем вставки и индексировать его? вариант, конечно, но вот только в случае с целочисленным автоинкрементным суррогатным ключом это даже не просто, а ОЧЕНЬ просто - выбрать последние записи по индексу... Без всяких дополнительных накладных расходов...
Заплатки тоже часто выглядят как Очень просто. Но вседа ли на протяжении ЖЦ системы не снижают качества системы? Ить они могут увеличивать неопределенность програмного обеспечения.

В РМД нет понятия последние, первые записи - там неупорядоченность типа задекларирована. И стало быть если нужно такое, то с точки зрения МД, это должно быть поле сортитовки, т.е. не суррогат: его значения имею смысл в предметной области и должны контролироваться в общем случае юзерами. Т.е. он должен иметь их возможность подправлять в случае несоотвествия. Это сразу же ухудшает основное достоинсво суррогата - его неизменность.

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

Объявив поле суррогатным, Вы типа задекларировали, что его значения смысла не имеют, поэтому их изменение,например админом или другим разработчиком допустимы. Не важно зачем ему это понадибится, но имеет право. А если теперь юзаются непосредственно какие-то значения в запросах, то это надо поддерживать с помошью ОЦ. Например, запретить смену. А это уже доп затраты.

Если уж возник вопрос кто первый, кто последний, то, возможно, рано или поздно может возникнуть вопрос на сколько он превый по времени. Сукррогат и вообще не дата на это не ответит.

Ну тут говорили, что суррогаты не должны быть видны типа юзеру. Ну что же. Хорошо. Но тада напрашивается, что их не должны значения ни в каких сортировках. Ведь это в какой-то мере приравнивет их значеня к содержательным данным: но последние можно провенрить, например, по документам или как там у них положены проверки содержания БД, а первые то нет: их в нет в передметной области никак.

Нужно помнить про особенность данного суррогата, против обычного их юзания. Тоже доп затраты.

И вообще.

Скорее всего, преждевеременно говороить, что другие альтернативы заведомо хуже.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37719407
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfo......
Объявив поле суррогатным, Вы типа задекларировали, что его значения смысла не имеют , поэтому их изменение ,например админом или другим разработчиком допустимы . Не важно зачем ему это понадибится, но имеет право. А если теперь юзаются непосредственно какие-то значения в запросах, то это надо поддерживать с помошью ОЦ. Например, запретить смену. А это уже доп затраты.



Зачем менять данные, которые не имеют отражения реального мира? Их-же специально делают суррогатными, что-бы ни в чью голову не пришла мысль их менять.
Или живём по принципу "то, что не запрещено, то обязательно нужно сделать?"
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37719418
тверской
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kyubeeтверскойвозможность получить от генератора диапазон
Очень ненадёжно. Нужно всё время следить, чтобы диапазоны не пересеклись. То и дело какой-нибудь новый сотрудник базу в филиале развернёт, а диапазоны не открутит, и начинает приходить по репликации такое...
видимо мы оразных диапазонах говорим
в FireBird в конкретной базе от генератора можно получить диапазон значений и повторная выдача этих значений не произойдет (если специально не химичить с генератором)

для многофилиальной структуры часто используется следующая схема:
в БД филиала PK/FK это ID записи
в центральной БД - PK/FK состоят из ID записи и ID филиала
это снимает остроту проблемы уникальности записей в пределах системы
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37719438
тверской
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sphinx_mvтверскойzeon11,
тема, если прочитали, - где заполняете PK, на клиенте или на сервере
GUID - один из примеров ключа (обсуждение его преимуществ и недостатков оставим)

Обсуждать варианты БЕЗ обсуждения плюсов и минусов - бред!
GUID - это единственный разумный способ генерации ПК на клиенте.
И все бы бы хорошо, но вот только количество недостатков этого способа вполне зашкаливает по сравнениями с теми, якобы, преимуществами, которые он предоставляет...
свет клином на GUID сошелся?
вопрос не ЧЕМ заполняете PK, а ГДЕ это выполняете (на сервере или на клиенте)
вы пытаетесь спорить о разумности GUID, его преимуществах и недостатках - это в других темах
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37719450
тверской
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zeon11тверскойzeon11,
вы же работаете с FB, всегда через триггер+генератор заполняете PK?
возможность получить от генератора диапазон и использовать его в приложении принципиально не используете?
...
Давайте рассмотрим конкретную Вашу ситуацию, может быть можно решить проблему по-другому?
Могу предположить, на своём опыте, что проблема в удалённых рабочих местах.
...

необходимо заливать большие объемы данных (а не в синхронизации или объединении БД), писал об этом здесь , возможно не акцентировал на этом внимание
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37719561
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тверской,

Ну, это другое дело.
Если объём большой, нет ссылочной целостности, для скорости отключаем триггеры
(мы-же в монополии ?), берём начальное значение генератора, устанавливаем генратор в +100 000 000, заливаем данные с клиента, где поле PK формируется на клиенте. включаем триггер.
Но это всё опасно, нужно быть очень тщательным!
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37719585
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zeon11Зачем менять данные, которые не имеют отражения реального мира? Их-же специально делают суррогатными, что-бы ни в чью голову не пришла мысль их менять.
Или живём по принципу "то, что не запрещено, то обязательно нужно сделать?"


Но тада получается живем по принципу: если не знаем зачем, то значит не зачем? У Чехова ружье на стене стреляет. Зачем?
На подводке Курск разработчики тоже не перезаложились: возможно, не прелдвидели какого-то Зачем.

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

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

В общем, не знание Зачем, возможно, не достаточно убедительное обоснгование в общем случае, мне кажется.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37719661
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfo,

Про ружьё ты напортачил, смешал две разных сентенции в одну кучу.
1. Чехов, как известно говорил, "Если в начале пьесы на стене висит ружье, то (к концу пьесы) оно должно выстрелить". Тут явный кинематографический подход, так сказать подготовка зрителя. Согласись, на сцене глупо-бы выглядело, если надо стрелять, актёр убежал за кулисы, притащил ружо, мочканул оппонента.
2. "Раз в год и палка стреляет" - тут да, согласен, но всего не предусмотришь.

Я не сторонник того, что-бы каждую сточку кода обрамлять try ..... finally ....end
Ко-всему нужно подходить взвешенно
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37719782
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zeon11Ко-всему нужно подходить взвешенно


Вот и я гАвАрУ.

Вольное юзание суррогата (например, сортировка, выборка по ним), в частности, инкрементного, может оказаться не достаточно взвешенным подходом в общем случае.
Ну на бросовых БД номано, наверное.
А в общем случае, возможно, более консервативным подходом, было бы этого избегать.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37720019
тверской
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zeon11тверской,
Ну, это другое дело.
Если объём большой, нет ссылочной целостности, для скорости отключаем триггеры
(мы-же в монополии ?), берём начальное значение генератора, устанавливаем генратор в +100 000 000, заливаем данные с клиента, где поле PK формируется на клиенте. включаем триггер.
Но это всё опасно, нужно быть очень тщательным!
Монополия не обязательна. Триггер можно совсем не создавать, вместо постоянного вкл./выкл.
Отвественность на приложении за правильное заполнение PK. Ограничение PK всё равно не даст ввести дубликат в это поле, приложение само должно уметь обрабатывать последствия своих ошибок.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37720201
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfosphinx_mvНо тут такое дело... Например, есть задача, в котоой достаточно часто (раз в несколько секунд) требуется выбрать последние N вставленных записей в таблицу (что-то под десяток млн. записей в месяц, примерно 20 ГБ данных на диске)... Данные в таблицу вставляются несколькими "тупыми железяками"... Прикажете делать еще одно поле с датой/временем вставки и индексировать его? вариант, конечно, но вот только в случае с целочисленным автоинкрементным суррогатным ключом это даже не просто, а ОЧЕНЬ просто - выбрать последние записи по индексу... Без всяких дополнительных накладных расходов...
Заплатки тоже часто выглядят как Очень просто. Но вседа ли на протяжении ЖЦ системы не снижают качества системы? Ить они могут увеличивать неопределенность програмного обеспечения.

В РМД нет понятия последние, первые записи - там неупорядоченность типа задекларирована. И стало быть если нужно такое, то с точки зрения МД, это должно быть поле сортитовки, т.е. не суррогат: его значения имею смысл в предметной области и должны контролироваться в общем случае юзерами. Т.е. он должен иметь их возможность подправлять в случае несоотвествия. Это сразу же ухудшает основное достоинсво суррогата - его неизменность.

Если информационная система допускает, что пользователи могут произвольным образом изменять значения первичных ключей, это следует рассматривать как серьезную ОШИБКУ реализации..
У некоторой сущности есть нечто уникальное, что пользователь должен вводить и иногда менять?
Про альтернативные ключи чего-нибудь не расскажете?

Ну, и по поводу порядка/беспорядка...
Доступ к данным "по индексу" подразумевает, что данные упорядочиваются...
К чему сентеции о недекларированности упорядоченности в РМД - не понятно...

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

Ну-ка... Про "full scan" поподробнее...
Например, на основе вот этого примера - select top NNN * from tblXXX order by id desc
Индекс по ID присутствует... Я даже больше скажу: это первичный индекс по автоинкрементному полю...
"Получить последние NNN записи, вставленные в таблицу" - так звучала задача...
vadiminfoОбъявив поле суррогатным, Вы типа задекларировали, что его значения смысла не имеют, поэтому их изменение,например админом или другим разработчиком допустимы. Не важно зачем ему это понадибится, но имеет право. А если теперь юзаются непосредственно какие-то значения в запросах, то это надо поддерживать с помошью ОЦ. Например, запретить смену. А это уже доп затраты.

Внятно объяснить ДЛЯ ЧЕГО нужно менять первичный ключ вряд ли кто-то сможет...
ПОСЛЕ чего - я могу... Но я столько не выпью...

Вам нужно менять что-то "уникальное" - это альтернантивный ключ. И все!
Никаких проблем с проверкой ссылочной целостности и каскадными обновлениями!..
vadiminfoЕсли уж возник вопрос кто первый, кто последний, то, возможно, рано или поздно может возникнуть вопрос на сколько он превый по времени. Сукррогат и вообще не дата на это не ответит.

Во-первых, когда возникнет этот вопрос - тогда он и должен решаться.
А, во-вторых, Вы будете смеяться... Без ДАТЫ правильно получить посленюю "ПО ВРЕМЕНИ" запись вы вряд ли сможете...
vadiminfoНу тут говорили, что суррогаты не должны быть видны типа юзеру. Ну что же. Хорошо. Но тада напрашивается, что их не должны значения ни в каких сортировках. Ведь это в какой-то мере приравнивет их значеня к содержательным данным: но последние можно провенрить, например, по документам или как там у них положены проверки содержания БД, а первые то нет: их в нет в передметной области никак.

В реальных системе первичные ключи используются для идентификации записи и для контроля ссылочной целостности.
Никто НЕ заставляет пользователей и разработчиков использовать их значение в сортировках.
Но кто сказал, что (в некоторых задачах) такая сортировка не может понадобиться?
vadiminfoНужно помнить про особенность данного суррогата, против обычного их юзания. Тоже доп затраты.

Ну, и какие ДОПОЛНИТЕЛЬНЫЕ затраты для суррогата Вы наблюдаете? Особенно - если он "автоинкрементный"?
Ну, хотя бы на вскидку... Неужто резервирование диапазонов ключей?
А ЗАЧЕМ их резервировать?!
vadiminfoИ вообще.

Скорее всего, преждевеременно говороить, что другие альтернативы заведомо хуже.
Выбор между естественным и искусственным (суррогатным) ключем - в пользу суррогата...
Выбор между монотонно нарастающим (ака, "автоинкрементным") суррогатом и генерируемым случайным образом (например, GUID) - в пользу "автоинкремента"...
Генерирование значения ключа на сервере БЕЗОПАСНЕЕ генерации ключа на клиенте...
Собственно, альтернатив, как бы, больше и нет...
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37720231
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тверскойzeon11тверской,
Ну, это другое дело.
Если объём большой, нет ссылочной целостности, для скорости отключаем триггеры
(мы-же в монополии ?), берём начальное значение генератора, устанавливаем генратор в +100 000 000, заливаем данные с клиента, где поле PK формируется на клиенте. включаем триггер.
Но это всё опасно, нужно быть очень тщательным!
Монополия не обязательна. Триггер можно совсем не создавать, вместо постоянного вкл./выкл.
Отвественность на приложении за правильное заполнение PK. Ограничение PK всё равно не даст ввести дубликат в это поле, приложение само должно уметь обрабатывать последствия своих ошибок.
Все бы замечательно...
Но, исходя из поставленной задачи, вставляется МНОГО записей... Например, 1,000,000...
Предположим, возникнет ошибка на 999,999-й записи... Приложение, конечно, "должно уметь обрабатывать" такие ситуации...
И даже предположим, что приложение эту ситуацию обработает...
Вот только на сервере при этом все равно должна откатится вставка всех предыдущих 999,998 штук...
И оно Вам надо?!
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37720423
тверской
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sphinx_mvВсе бы замечательно...
Но, исходя из поставленной задачи, вставляется МНОГО записей... Например, 1,000,000...
Предположим, возникнет ошибка на 999,999-й записи... Приложение, конечно, "должно уметь обрабатывать" такие ситуации...
И даже предположим, что приложение эту ситуацию обработает...
Вот только на сервере при этом все равно должна откатится вставка всех предыдущих 999,998 штук...
И оно Вам надо?!
не вижу проблемы, всё зависит от источника ошибки
если ошибка именно в некорректной вставке ID - надо выявить ошибку и устранить, это не сложно (если генератор никто вручную не крутит туда-сюда, иначе ошибки вылезут и при заполнении ID на стороне сервера)
если ошибка не в ID (обрыв канала или др.) - от выбора метода заполнения ID (на сервере или на клиенте) она не зависит
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37720602
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тверскойsphinx_mvВсе бы замечательно...
Но, исходя из поставленной задачи, вставляется МНОГО записей... Например, 1,000,000...
Предположим, возникнет ошибка на 999,999-й записи... Приложение, конечно, "должно уметь обрабатывать" такие ситуации...
И даже предположим, что приложение эту ситуацию обработает...
Вот только на сервере при этом все равно должна откатится вставка всех предыдущих 999,998 штук...
И оно Вам надо?!
не вижу проблемы, всё зависит от источника ошибки
если ошибка именно в некорректной вставке ID - надо выявить ошибку и устранить, это не сложно (если генератор никто вручную не крутит туда-сюда, иначе ошибки вылезут и при заполнении ID на стороне сервера)

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

И интересный такой вопрос на тему "простоты"...
Для того, чтобы пофиксить дубликаты, нужно будет в конфликтных заливаемых записях прописать новые значения ПК (при этом как таковые значения могут быть ЛЮБЫМИ)...
Необходимо проверить, что (на момент времени "Ч") новое значение отсутствует в таблице-получателе...
При этом не стоит забывать про ссылочную целостность, и откорректировать все зависимые данные...
Где гарантия, что за время всех этих телодвижений какой-нибудь другой ключ не станет проблемным? (и понеслась новая итерация)
тверскойесли ошибка не в ID (обрыв канала или др.) - от выбора метода заполнения ID (на сервере или на клиенте) она не зависит
Если режим вставки не монопольный , то возникновение проблемы с уникальностью вставки ключа будет не исключительной , а очень стандартной ситуацией... В случае с заполнением ID на сервере (если никто не играется с генераторами) дублирующееся значение получить крайне маловероятно.

Рутинное разруливание конфликтов ПК на вставках больших объемов данных - оно вам ДЕЙСТВИТЕЛЬНО надо?
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37720737
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvЕсли информационная система допускает, что пользователи могут произвольным образом изменять значения первичных ключей, это следует рассматривать как серьезную ОШИБКУ реализации..


Ну Вы можете рассматривать и не произвольным образом измененные первичные ключи на здоровье.
Но Вы же, надеюсь, планируете написать закон обязывающий рассматриватть всех остальных?

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

Ну вообще-то есть, наверное. Выше уже приводили примеры.

sphinx_mv
Ну, и по поводу порядка/беспорядка...
Доступ к данным "по индексу" подразумевает, что данные упорядочиваются...
К чему сентеции о недекларированности упорядоченности в РМД - не понятно...

Ну, возможно, доступ к данным "по индексу" не имеет отношение к РМД. Все таки индексы - средства повышения проиводительности в СУБД, в которых данные хранятся на вторичных носителях. В СУБД "ин мемори" индексы, возможно, вообще не нужны, а РМД все еще нужна. А Вы говорите, что не понимаете.

sphinx_mv
Вас смущает, что суррогатный ключ не укладывается в Вашу модель данных?


Я, вроде, не смущался, а допускал существование недостаков. Т.е. я юзаю суррогаты, но не считаю, что у них нет недостатков.





sphinx_mv
Суррогат, который не имеет отображения в предметной области, НЕ влияет на саму предметную область, но со своими функциями справляется не в пример лучше естественных ключей, любой из которых может в любой произвольный момент времени перестать быть ключем... Даже если это ключ изначально был составным...

А естественные, к примеру, луче суррогатных, тем что "помогают идентифицировать" сущности, а не просто записи. В частности, суррогат не помешает Вам завести дубль сущности, хотя и с разными суррогатами.



sphinx_mv
Ну-ка... Про "full scan" поподробнее...

Имелось ввиду Икремент сам по себе не отменяет фулскана. По крайней мере, во многих СУБД. А с индексами не тока суррогаты инкрементные фул скан могут отменить.

sphinx_mvНапример, на основе вот этого примера - select top NNN * from tblXXX order by id desc
Индекс по ID присутствует... Я даже больше скажу: это первичный индекс по автоинкрементному полю...
"Получить последние NNN записи, вставленные в таблицу" - так звучала задача...

Ну приндексируйте по дате. Кроме того, там было про другие колонки для сортировки, которые не являются суррогатами и даже РК.


sphinx_mv
Внятно объяснить ДЛЯ ЧЕГО нужно менять первичный ключ вряд ли кто-то сможет...
ПОСЛЕ чего - я могу... Но я столько не выпью...

Зато если изменит, то не нарушит информационное содержание БД. Для особо придирчивых: не нарушая ОЦ, изменит.
И стало быть Вы буите рассмативать серьезную ОШИБКУ?

sphinx_mvВам нужно менять что-то "уникальное" - это альтернантивный ключ. И все!

Это был приказ?

sphinx_mvНикаких проблем с проверкой ссылочной целостности и каскадными обновлениями!..

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


sphinx_mvВо-первых, когда возникнет этот вопрос - тогда он и должен решаться.

А, во-вторых, Вы будете смеяться... Без ДАТЫ правильно получить посленюю "ПО ВРЕМЕНИ" запись вы вряд ли сможете...

Может быть буит поздняк метаться.
Смеяться не буду, хотя именно на преимущество ДАТы перед инкрементом я намекал.
Дату задним числом то не проставить в общем случае: вот и поздняк решать буит.



sphinx_mvНу, и какие ДОПОЛНИТЕЛЬНЫЕ затраты для суррогата Вы наблюдаете? Особенно - если он "автоинкрементный"?
Ну, хотя бы на вскидку... Неужто резервирование диапазонов ключей?
А ЗАЧЕМ их резервировать?!

Вообще-то намекалось на то, что если кто-то юзает суррогаты по значениям в запросах, то это особенность по сравнеиню с суррогатами, которые юзаются именно исходя из того что их значения смысла не имеют.
Например, Если в запросе написано
WHERE id=5, то после замены 5 на 500 запрос покажет не то что должен, скорее всего. Например, данные пропали и их восстанвливали из доков вручную.


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

sphinx_mvВыбор между монотонно нарастающим (ака, "автоинкрементным") суррогатом и генерируемым случайным образом (например, GUID) - в пользу "автоинкремента"...
Генерирование значения ключа на сервере БЕЗОПАСНЕЕ генерации ключа на клиенте...
Собственно, альтернатив, как бы, больше и нет...
Вообще-то об этом я ничего не говорил. Но и тут альтернатива есть. Автоинкремент слабая идентификацтия, только в пределах таблы. А GUID - во вселенной. Это может иметь значение в каких-то случаях.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37720986
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfosphinx_mvЕсли информационная система допускает, что пользователи могут произвольным образом изменять значения первичных ключей, это следует рассматривать как серьезную ОШИБКУ реализации..


Ну Вы можете рассматривать и не произвольным образом измененные первичные ключи на здоровье.
Но Вы же, надеюсь, планируете написать закон обязывающий рассматриватть всех остальных?

Есть некоторый "контингент", который "ничей опыт ничему не научит"...
Для них, как говорит народная мудрость, никакие законы не писаны...
vadiminfosphinx_mvУ некоторой сущности есть нечто уникальное, что пользователь должен вводить и иногда менять?

Ну вообще-то есть, наверное. Выше уже приводили примеры.

Вообще-то нечто, что может измениться идентифицирующим быть не может, да и претендовать на уникальность может с ОЧЕНЬ большой натяжкой - изменение может привести к "занулению" значения поля. Результат проверки уникальности пустых значений - весьма интересный академический вопрос, выходящий за рамки обсуждения.

ну, ладно... Возьмем простой "классический" пример - однозначным образом идентифицировать человека как?
Как говорит "теория" - по номеру удостоверяющего личность документа.
Вопрос на засыпку... У меня этих (действующих!) документов пять штук... Ну, и который из номеров "правильный"?
А еще есть некоторое количество личностей, которые НЕ имеют документов (например, ЕЩЕ)...
vadiminfosphinx_mvНу, и по поводу порядка/беспорядка...
Доступ к данным "по индексу" подразумевает, что данные упорядочиваются...
К чему сентеции о недекларированности упорядоченности в РМД - не понятно...

Ну, возможно, доступ к данным "по индексу" не имеет отношение к РМД. Все таки индексы - средства повышения проиводительности в СУБД, в которых данные хранятся на вторичных носителях. В СУБД "ин мемори" индексы, возможно, вообще не нужны, а РМД все еще нужна. А Вы говорите, что не понимаете.

Т.е., Вы как бы "не в курсе", что несортированые списки - смерть для поиска?
Тем более при нынешних объемах "мемори"...
vadiminfosphinx_mvВас смущает, что суррогатный ключ не укладывается в Вашу модель данных?

Я, вроде, не смущался, а допускал существование недостаков. Т.е. я юзаю суррогаты, но не считаю, что у них нет недостатков.

"Халва, халва"... Ну, хотя бы один, который отсутствует в естественных?
vadiminfosphinx_mvСуррогат, который не имеет отображения в предметной области, НЕ влияет на саму предметную область, но со своими функциями справляется не в пример лучше естественных ключей, любой из которых может в любой произвольный момент времени перестать быть ключем... Даже если это ключ изначально был составным...

А естественные, к примеру, луче суррогатных, тем что "помогают идентифицировать" сущности, а не просто записи. В частности, суррогат не помешает Вам завести дубль сущности, хотя и с разными суррогатами.

С абсолютно таким же успехом я могу задублировать сущности на "естественных" ПК!
vadiminfosphinx_mvНу-ка... Про "full scan" поподробнее...

Имелось ввиду Икремент сам по себе не отменяет фулскана. По крайней мере, во многих СУБД. А с индексами не тока суррогаты инкрементные фул скан могут отменить.

Но только автоинкрементные суррогаты делают это с максимально возможной эффективностью...
vadiminfosphinx_mvНапример, на основе вот этого примера - select top NNN * from tblXXX order by id desc
Индекс по ID присутствует... Я даже больше скажу: это первичный индекс по автоинкрементному полю...
"Получить последние NNN записи, вставленные в таблицу" - так звучала задача...

Ну приндексируйте по дате. Кроме того, там было про другие колонки для сортировки, которые не являются суррогатами и даже РК.

Вообще-то. даже на соседних компьютерах синхронизация времени "улетает" - это даже если не учитывать переход на зимнее/летнее время и часовые пояса... Будем такое ненадежное значение считать достоверным?
vadiminfosphinx_mvВнятно объяснить ДЛЯ ЧЕГО нужно менять первичный ключ вряд ли кто-то сможет...
ПОСЛЕ чего - я могу... Но я столько не выпью...

Зато если изменит, то не нарушит информационное содержание БД. Для особо придирчивых: не нарушая ОЦ, изменит.
И стало быть Вы буите рассмативать серьезную ОШИБКУ?

Вы всерьез считаете, что целостность данных не нарушится?
А что нам скажут неформальная ссылочная целостность и репликация?
Кстати, как вариант репликации имеет смысл рассматривать отчеты...
vadiminfosphinx_mvВам нужно менять что-то "уникальное" - это альтернантивный ключ. И все!

Это был приказ?

Да. И исполнять БЕГОМ!
vadiminfosphinx_mvНикаких проблем с проверкой ссылочной целостности и каскадными обновлениями!..

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

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

Может быть буит поздняк метаться.
Смеяться не буду, хотя именно на преимущество ДАТы перед инкрементом я намекал.
Дату задним числом то не проставить в общем случае: вот и поздняк решать буит.

Последняя физически вставленная запись при серверном автоинкременте определяется как запись с максимальным значением ключа.
А вот когда будет стоять задача определения последней по времени записи - тут нужно будет использовать поле дата/время.
При этом как раз дату/время. в отличие, например, от "identity" в MSSQL или "автоинкремента" в том же абсцессе, менять можно направо и налево... Т.е., ОЧЕНЬ не факт, что значение поля хоть как-то соотносится с реальностью...
vadiminfosphinx_mvНу, и какие ДОПОЛНИТЕЛЬНЫЕ затраты для суррогата Вы наблюдаете? Особенно - если он "автоинкрементный"?
Ну, хотя бы на вскидку... Неужто резервирование диапазонов ключей?
А ЗАЧЕМ их резервировать?!

Вообще-то намекалось на то, что если кто-то юзает суррогаты по значениям в запросах, то это особенность по сравнеиню с суррогатами, которые юзаются именно исходя из того что их значения смысла не имеют.
Например, Если в запросе написано
WHERE id=5, то после замены 5 на 500 запрос покажет не то что должен, скорее всего. Например, данные пропали и их восстанвливали из доков вручную.

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

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

sphinx_mv
ну, ладно... Возьмем простой "классический" пример - однозначным образом идентифицировать человека как?
Как говорит "теория" - по номеру удостоверяющего личность документа.
Вопрос на засыпку... У меня этих (действующих!) документов пять штук... Ну, и который из номеров "правильный"?
А еще есть некоторое количество личностей, которые НЕ имеют документов (например, ЕЩЕ)...

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

sphinx_mvТ.е., Вы как бы "не в курсе", что несортированые списки - смерть для поиска?
Тем более при нынешних объемах "мемори"...


Я как бы не в курсе что какие-то там списки имеют отношение к РМД. Вот в иерархичесих упорядоченность, вроде, присутствует: там типа на уровне МД поддерживается первые последние и т.д.

sphinx_mv"Халва, халва"... Ну, хотя бы один, который отсутствует в естественных?

Ну так это ж широко вроде известно. Еще, вроде, Кодд не хотел ничего, чего нет в предметной области иметь в МД. Ну даже не знау. Вам что слово "суррогатный" не говорит о некоем предвзятом отношении?


sphinx_mv
С абсолютно таким же успехом я могу задублировать сущности на "естественных" ПК!

Ну поробуйте занести Сидорова с естественным по страховому. А я с разными суррогатами, думаю, смогу занести.

sphinx_mvНо только автоинкрементные суррогаты делают это с максимально возможной эффективностью...

Ну мне ничего про это не известно: планы запросов вроде никак не учитываю автоинремент это или нет.

sphinx_mvВообще-то. даже на соседних компьютерах синхронизация времени "улетает" - это даже если не учитывать переход на зимнее/летнее время и часовые пояса... Будем такое ненадежное значение считать достоверным?

Причем здесь синхронизация на разных, када речь о последовательности по времени заносов в одну таблу. Там было важно кто раньше кто позже. Думаю, надежнее, чем инкремент для этой цели в общем случае: мало ли как оно там внутри тразакции отработает: то что "позже занести" возьми и да и окажись с меньшим инкрементом. У инкимента нет цели отслеживать перые и последние: у него цель уникольность значений.

sphinx_mvВы всерьез считаете, что целостность данных не нарушится?
А что нам скажут неформальная ссылочная целостность и репликация?
Кстати, как вариант репликации имеет смысл рассматривать отчеты...

Ну а для кого я написал, что ОЦ не изменит. Ну так извините моно по ошибке всю БД стереть. Про неформальную ссылочную целостность оставлю неформалам думать. Что до репликации, ну отреплицирует. По любасу это проблемы репликации если у нее траблы, када юзе меняет данные ниче не нарушая.


sphinx_mvДа. И исполнять БЕГОМ!

Счас все брошу и побегу.

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

Ну уж извините. В гору пойдет проектировщик. Мы здесь вроде и обсуждаем, чтобы снизить подобные риски.

sphinx_mvПоследняя физически вставленная запись при серверном автоинкременте определяется как запись с максимальным значением ключа.

Ну это када как. Мож так получилось, что создали внутри транзакции 10 записей, присвоимли им инкременты, но последней вставили с минимальным инкрементом.

Впрочем, я раньше думал что последняя вставленная запись может иметь значение для админов разработчиков: в предметной области не понятия вставка записей. Есть сущности и может иметь значение последие созданные. Админам же и разработчикам предпочтительное получать свою инфу не оказывая влияния на МД. Например, с помощью аудита.

sphinx_mvВообще-то, некоторая выборка в которой участвует значение суррогатного ключа справочника НЕ перестает быть выборкой по значению суррогата... Если некто пишет некоторый запрос и НЕ представляет КАКОЙ результат он хочет получить - это несколько в стороне от обсуждаемого вопроса...

Не в стороне. Совсем не в стороне. Поскоку там пояснялось про особенности юзания суррогата. Вы же его вставили в запрос по значеню для сортировки. Пришел другой разработчик. Увидел в табле суррогаты. Если он не знал об особенностях юзания их в Вашей БД, то взял да их, так что то что в Вашем запросе было вставлено раньше теперь окажется позже. Ну действительно, термин "суррогат" означает, что его конкрентные значения не влияют на инфу в БД


Вот если бы у колнки было наименование SORT или Дата, и он бы их понял, то его бы спросили потом: "А чего же Вы хотели, молодой человек?" Раз поле SORT то по нему что-то отсартировано. А суррогат - главное чтобы ОЦ были не нарушены: меняй если надо на здоровье.


sphinx_mvДля GUID с сетевой платой формируется на основе MAC-адреса... Ну, так вот... Уникальные MAC-адреса бывают... Но только НЕ в этой вселенной... Специально в подтверждение этому существует возможность а) "ручками" перебить MAC-адрес и б) склонировать его с другого интерфейса... Соответственно, шанс на получение дублированного GUID не очень большой, но заявлять об абсолютной его уникальности во вселенной - не "круто"...

В ООМД такие идетификаторы присваиватся системой объектам. И, вроде, они декларируют уникальность во вселенной. РМДшники им ответили на это GUID. Вот я и подумал. Впрочем не вникал.


В любом случае по сравнению с инкрементом, который совсем не уникален за переделами таблы, большая разница в плане силы идентификации. Т.е. преимущества GUID в этом плане есть как ни крути.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37721604
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfosphinx_mvВообще-то нечто, что может измениться идентифицирующим быть не может, да и претендовать на уникальность может с ОЧЕНЬ большой натяжкой - изменение может привести к "занулению" значения поля. Результат проверки уникальности пустых значений - весьма интересный академический вопрос, выходящий за рамки обсуждения.

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

Вот только после ошибочного заведения номера, этот номер проехался по десятку разных операторов в разных информационных системах (непосредственно друг с другом не связаных)... Теперь все это "щастье" надо фиксить...
А тут такая обида и досада настанет!..
vadiminfosphinx_mvну, ладно... Возьмем простой "классический" пример - однозначным образом идентифицировать человека как?
Как говорит "теория" - по номеру удостоверяющего личность документа.
Вопрос на засыпку... У меня этих (действующих!) документов пять штук... Ну, и который из номеров "правильный"?
А еще есть некоторое количество личностей, которые НЕ имеют документов (например, ЕЩЕ)...

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

А теперь вопрос на засыпку - ЧТО есть суть страхового номера?
Пусть меня отшлепает тапком первый, кто внятно докажет, что это НЕ суррогат!
Естественный ключи!.. Естественные ключи!.. А как присмотришься по-внимательнее - СУРРОГАТЫ! ВСЕГДА И ВЕЗДЕ!

vadiminfosphinx_mvТ.е., Вы как бы "не в курсе", что несортированые списки - смерть для поиска?
Тем более при нынешних объемах "мемори"...

Я как бы не в курсе что какие-то там списки имеют отношение к РМД. Вот в иерархичесих упорядоченность, вроде, присутствует: там типа на уровне МД поддерживается первые последние и т.д.

Сортировка и поиск - суть, основные алгоритмы при обработке данных...
Читайте первоисточники - они, как бы, рулес...
vadiminfosphinx_mv"Халва, халва"... Ну, хотя бы один, который отсутствует в естественных?

Ну так это ж широко вроде известно. Еще, вроде, Кодд не хотел ничего, чего нет в предметной области иметь в МД. Ну даже не знау. Вам что слово "суррогатный" не говорит о некоем предвзятом отношении?

Суррогат - заменитель, аналог...
Может, перед тем как пытаться плеваться в сторону некотрых терминов, стоило бы по-внимательнее изучить их происхождение?
vadiminfosphinx_mvС абсолютно таким же успехом я могу задублировать сущности на "естественных" ПК!

Ну поробуйте занести Сидорова с естественным по страховому. А я с разными суррогатами, думаю, смогу занести.

А это ничего, что "естественный по страховому" ничто иное как автоинкремент внутри информационной системы страхавания?
И, кстати, ошибки ввода никто не отменял...
В результате операторской ошибки НЕВЕРНОЕ значение иденитификатора начинает произвольным образом разгуливать по информационной системе. Кстати, некто Сидоров ЛЕГКО И НЕПРИНУЖДЕННО зарегистрировался в системе дважды... А то и трижды... В результате АНАЛОГИЧНОЙ ошибки...
vadiminfo
sphinx_mvНо только автоинкрементные суррогаты делают это с максимально возможной эффективностью...

Ну мне ничего про это не известно: планы запросов вроде никак не учитываю автоинремент это или нет.

А не надо аппелировать к тупому оптимизатору запросов...
Любые операции над целочисленными данными выполняются ЭФФЕКТИВНЕЕ, чем операции над их строковым представлением.
ЭТОГО достаточно - естественные ключи (практически) НИКОГДА не могут быть представлены как ЧИСЛО.
vadiminfosphinx_mvВообще-то. даже на соседних компьютерах синхронизация времени "улетает" - это даже если не учитывать переход на зимнее/летнее время и часовые пояса... Будем такое ненадежное значение считать достоверным?

Причем здесь синхронизация на разных, када речь о последовательности по времени заносов в одну таблу. Там было важно кто раньше кто позже. Думаю, надежнее, чем инкремент для этой цели в общем случае: мало ли как оно там внутри тразакции отработает: то что "позже занести" возьми и да и окажись с меньшим инкрементом. У инкимента нет цели отслеживать перые и последние: у него цель уникольность значений.

Вы НЕ представляете особенности функционирования АВТОИНКРЕМЕНТНОГО поля!
НИКОГДА (в штатной ситуации!) НЕЛЬЗЯ ВСТАВИТЬ в такой ключ значение, которое меньше любого ранее введенного!
Соответственно, в следствии этой ПРОСТУЮ особенности автоинкрементного ключа ВСЕГДА есть возможность определения ПОРЯДКА ВСТАВКИ записей в таблицу.
vadiminfosphinx_mvВы всерьез считаете, что целостность данных не нарушится?
А что нам скажут неформальная ссылочная целостность и репликация?
Кстати, как вариант репликации имеет смысл рассматривать отчеты...

Ну а для кого я написал, что ОЦ не изменит. Ну так извините моно по ошибке всю БД стереть. Про неформальную ссылочную целостность оставлю неформалам думать. Что до репликации, ну отреплицирует. По любасу это проблемы репликации если у нее траблы, када юзе меняет данные ниче не нарушая.

При использовании репликации любые изменения значений первичных ключей ведет к НАРУШЕНИЯМ в целостности данных с практической НЕВОЗМОЖНОСТЬЮ разрешения конфликтов и ИСПРАВЛЕНИЯ ошибок - ошибка начинает РЕПЛИЦИРОВАТЬСЯ!
Если Вы с этим не согласны, это принуждает усомнится в Вашей квалификации.
vadiminfosphinx_mvВы забыли одну ма-а-аленькую нюансину...
Ссылочная целостность может быть задекларированной, а может быть реализована в программной логике...
И все каскадные радости идут в горы...
Не говоря уже об ограничениях каскадных операций на разных платформах...

Ну уж извините. В гору пойдет проектировщик. Мы здесь вроде и обсуждаем, чтобы снизить подобные риски.

Самый простой способ снижения рисков нарушения целостности данных - запрет пользователю ЛЮБЫМ способом изменять значения первичных ключей...
У Вас есть в этом сомнения?
vadiminfosphinx_mvПоследняя физически вставленная запись при серверном автоинкременте определяется как запись с максимальным значением ключа.

Ну это када как. Мож так получилось, что создали внутри транзакции 10 записей, присвоимли им инкременты, но последней вставили с минимальным инкрементом.

"Импосибл мистер Карабасофф" (с)
Автоинкремент на то и автоинкремент, что любое следующее значение должно быть больше предыдущего.
А то, что Вы описываете - это все что угодно, но с автоинкрементом даже не сидело на одной поляне!
vadiminfoВпрочем, я раньше думал что последняя вставленная запись может иметь значение для админов разработчиков: в предметной области не понятия вставка записей. Есть сущности и может иметь значение последие созданные. Админам же и разработчикам предпочтительное получать свою инфу не оказывая влияния на МД. Например, с помощью аудита.

Во-первых,в ЛЮБОЙ предметной области ЕСТЬ понятие вставки записей - иначе откуда данные попадут в систему.
Во-вторых, в ЛЮБОЙ "транзакционной" системе (образно - некоторая последовательность операций) ЕСТЬ понятие ОЧЕРЕДЬ, т.е. существует понятие "первый" и "последний". Отдельно в разрезе создания и обработки... И аудит к этому как бы "даже близко не стояло" - у него задача категорически другая...
vadiminfosphinx_mvВообще-то, некоторая выборка в которой участвует значение суррогатного ключа справочника НЕ перестает быть выборкой по значению суррогата... Если некто пишет некоторый запрос и НЕ представляет КАКОЙ результат он хочет получить - это несколько в стороне от обсуждаемого вопроса...

Не в стороне. Совсем не в стороне. Поскоку там пояснялось про особенности юзания суррогата. Вы же его вставили в запрос по значеню для сортировки. Пришел другой разработчик. Увидел в табле суррогаты. Если он не знал об особенностях юзания их в Вашей БД, то взял да их, так что то что в Вашем запросе было вставлено раньше теперь окажется позже. Ну действительно, термин "суррогат" означает, что его конкрентные значения не влияют на инфу в БД

Если другой разработчик НЕ разобравшись в системе начинает делать запросы к ней и получает результаты которые НЕВЕРНО интерпретирует - (ОЧЕНЬ) мягко говоря, КТО ЕМУ ДОКТОР???
И, действительно, главное преимущество суррогатов - ОНИ НЕ ВЛИЯЮТ НА ИНФОРМАЦИЮ В БД!
Они обеспечивают идентификацию записей и контролируют ссылочную целостность.
vadiminfoВот если бы у колнки было наименование SORT или Дата, и он бы их понял, то его бы спросили потом: "А чего же Вы хотели, молодой человек?" Раз поле SORT то по нему что-то отсартировано. А суррогат - главное чтобы ОЦ были не нарушены: меняй если надо на здоровье.

Круть немеряная! По названию колонки определять его назначение! А я грешным делом (даже не знаю почему) полагал, что об этом надо читать в документации на информационную систему...
Возник ОЧЕНЬ нескромный вопрос... Вы точно уверены, что проектирование БД - это Ваша сфера деятельности?
vadiminfosphinx_mvДля GUID с сетевой платой формируется на основе MAC-адреса... Ну, так вот... Уникальные MAC-адреса бывают... Но только НЕ в этой вселенной... Специально в подтверждение этому существует возможность а) "ручками" перебить MAC-адрес и б) склонировать его с другого интерфейса... Соответственно, шанс на получение дублированного GUID не очень большой, но заявлять об абсолютной его уникальности во вселенной - не "круто"...
В ООМД такие идетификаторы присваиватся системой объектам. И, вроде, они декларируют уникальность во вселенной. РМДшники им ответили на это GUID. Вот я и подумал. Впрочем не вникал.

Надо не думать... Надо знать... И вникать...
То, что ООМД везде где ни попадя используют GUID - это ОГРАНИЧЕНИЕ, связаное с невозможностью единообразного получения идентификаторов на разных платформах. Для GUID сделано допущение, что оно "в-общем случае" уникально и сравнительно просто генерируется - вот поэтому и применяется...
vadiminfoВ любом случае по сравнению с инкрементом, который совсем не уникален за переделами таблы, большая разница в плане силы идентификации. Т.е. преимущества GUID в этом плане есть как ни крути.
В рамках ЛЮБОЙ информационной системы НИКТО и НИКОГДА НЕ МОЖЕТ запретить использование "СКВОЗНОГО" АВТИНКРЕМЕНТА для идентификации ЛЮБЫХ (вплоть до ВСЕХ) объектов системы... А на тему "абсолютной уникальности" GUID уже писалось...
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37721848
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvА теперь вопрос на засыпку - ЧТО есть суть страхового номера?
Пусть меня отшлепает тапком первый, кто внятно докажет, что это НЕ суррогат!
Естественный ключи!.. Естественные ключи!.. А как присмотришься по-внимательнее - СУРРОГАТЫ! ВСЕГДА И ВЕЗДЕ!

В БД суррогатный - тот которого нет в предметной области (ПО) (т.е. не представляет информационного интереса для юзеров), а есть тока в энтой БД. Страховой номер усилиями ПФ РФ является свойством персон РФ. Его, к примеру, операторы могут сравнить с докуметами, которые приносят пиплы при приеме на работу. Его могут затребовать заинтересованные лица.

sphinx_mvСортировка и поиск - суть, основные алгоритмы при обработке данных...
Читайте первоисточники - они, как бы, рулес...

РМД предполагает декларативную систему запросов. Т.е. эта МД забила на скока могла на алгоритмы обработки данных на уровне пректировщика БД на логическом уровне. Ну это как бы одно из ее важных достоинств. Не знау как Вы это не увидели в первоисточниках.


sphinx_mvА это ничего, что "естественный по страховому" ничто иное как автоинкремент внутри информационной системы страхавания?
И, кстати, ошибки ввода никто не отменял...

Ничего. Ить суррогатность не равна инкременту. И кстати, ошибки ввода это траблы юзеров. А вот ежели он ошибок не делал и ввел дубли, то это, скорей всего, траблы разработчика. Проверять то правильность ввода юзер обязан, а вот искать дубли в БД нет. Я сталкивался с примером повторного ввода пачек из 200 инд сведений в одной такой БД.

sphinx_mvВ результате операторской ошибки НЕВЕРНОЕ значение иденитификатора начинает произвольным образом разгуливать по информационной системе. Кстати, некто Сидоров ЛЕГКО И НЕПРИНУЖДЕННО зарегистрировался в системе дважды... А то и трижды... В результате АНАЛОГИЧНОЙ ошибки...

Я говорю о достоинствах и недостаках. Eсли юзер не ошибся, он не наберт Сидорова дважды. А с сурогатом то наберет. Этого достаточно, чтобы зафиксировать преимущество естественного.
Т.е. он в этом суррогат явно хуже. Тока и всего.

sphinx_mvА не надо аппелировать к тупому оптимизатору запросов...
Любые операции над целочисленными данными выполняются ЭФФЕКТИВНЕЕ, чем операции над их строковым представлением.
ЭТОГО достаточно - естественные ключи (практически) НИКОГДА не могут быть представлены как ЧИСЛО.

Ну, может быть, не тупее нас с Вами этот оптимизатор.
Кроме того, ЭФФЕКТИВНЕЕ это одно, а какой буит выигрыш в каждом конкретном случае на практике - другое. Опять же колнка предназначенная для соритировки, может быть числовой, если что.

sphinx_mvВы НЕ представляете особенности функционирования АВТОИНКРЕМЕНТНОГО поля!
НИКОГДА (в штатной ситуации!) НЕЛЬЗЯ ВСТАВИТЬ в такой ключ значение, которое меньше любого ранее введенного!
Соответственно, в следствии этой ПРОСТУЮ особенности автоинкрементного ключа ВСЕГДА есть возможность определения ПОРЯДКА ВСТАВКИ записей в таблицу.

Да ладно. Инкрементость суррогатных ключей вовсе не предазначалась для определения ПОРЯДКА, а тока для неповторяемости. Есть две тразакции. В первой сгенрилось 101 для записи таблы, во второй 100. Первую закоммитили. А вторую закомиитили через пол час. Т.е. 100 оказалась позжее 101, а может и 200, что за эти пол часа кто-то налабал.


sphinx_mvПри использовании репликации любые изменения значений первичных ключей ведет к НАРУШЕНИЯМ в целостности данных с практической НЕВОЗМОЖНОСТЬЮ разрешения конфликтов и ИСПРАВЛЕНИЯ ошибок - ошибка начинает РЕПЛИЦИРОВАТЬСЯ!

Если при каких-то видах изменеий в конкретной СУБД данных возникают сложности, что имеет место, то не факт, что это не буит устранено в других версиях.

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

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

sphinx_mvЕсли Вы с этим не согласны, это принуждает усомнится в Вашей квалификации.

Ну хорошо что Вы хоть в чем то способны усомниться.


sphinx_mvСамый простой способ снижения рисков нарушения целостности данных - запрет пользователю ЛЮБЫМ способом изменять значения первичных ключей...
У Вас есть в этом сомнения?

У меня во всем есть сомнения.
Изменение равно удалению и добавлению. Вот автоинкремент для того же объекта реального мира и поменялся.
Возможно, ОЦ и вообще не нарушатся при этом. А вот запросы со значениями суррогатов могут вполне показать не то шо надо.

sphinx_mvВо-первых,в ЛЮБОЙ предметной области ЕСТЬ понятие вставки записей - иначе откуда данные попадут в систему.

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

sphinx_mvВо-вторых, в ЛЮБОЙ "транзакционной" системе (образно - некоторая последовательность операций) ЕСТЬ понятие ОЧЕРЕДЬ, т.е. существует понятие "первый" и "последний".

Да скока угодно.
Это имеет отношение к МД, возможно еще меньшее чем индексы.

sphinx_mvИ аудит к этому как бы "даже близко не стояло" - у него задача категорически другая...

Что у Вас скрывается по "этим" я не возьмусь угадать с уверенностью. Но , к последним внесенным записям в таблу аудит может иметь категорическое отношение, если админу нуно отслеживать последние внесенные записи. Ауит разными аспектами "внесения" записей может интересоваться (как впрочем и обновления и удаления).


sphinx_mvИ, действительно, главное преимущество суррогатов - ОНИ НЕ ВЛИЯЮТ НА ИНФОРМАЦИЮ В БД!

Во це да.
Но у Вас то они влияют: их значения в сортировке. Извинит, если это не влияние, то что? Изменить их значение, получите другой ответ запроса. Это не влияние на информацию, по Вашему.

sphinx_mv
Они обеспечивают идентификацию записей и контролируют ссылочную целостность.

Суррогаты? И я того же мнеия. Все остальное включая отслеживание последователности внесения записей не входит в "задачу" ключей вообще и суррогатных, в часности. Это типа дополнительная нагрузка тока на инкрементые.

sphinx_mvКруть немеряная! По названию колонки определять его назначение! А я грешным делом (даже не знаю почему) полагал, что об этом надо читать в документации на информационную систему...

Погодите. Попробую угадать. У Вас вместо типа имени колонки "Номер телефона", скорее всего там имя типа A12567? А смысл того что скрывается за A12567 в доке нуно искать? Я хде-то это уже слышал.
Хороша МД. Ну что же, одно из достоинств РМД - простая интепритация данных, возможно, идет в гору у Вас там.

sphinx_mvВозник ОЧЕНЬ нескромный вопрос... Вы точно уверены, что проектирование БД - это Ваша сфера деятельности?

Да уж Вам не позавидуешь в плане не скромности: ить таким вопросом Вы претендуете на то, что в то что это Ваша сфера усомниться незя. Что безусловно не ОЧЕНЬ скромно.

Я не в чем не уверен. В том числе и в том что моя сфера деятельности.
Не знаю, правда, какое это отношение имеет к достоинствам и недостаткам суррогатных инкрементных ключей.

sphinx_mvНадо не думать... Надо знать... И вникать...

Да Вам не в сфере проектирования каких-то там БД тусить. Вам ба лозунги для митингов проектировать. Цены б Вам, может быть, не было.

sphinx_mvВ рамках ЛЮБОЙ информационной системы НИКТО и НИКОГДА НЕ МОЖЕТ запретить использование "СКВОЗНОГО" АВТИНКРЕМЕНТА для идентификации ЛЮБЫХ (вплоть до ВСЕХ) объектов системы...
Ну ну. Нет конечно в мультимастер репликации (равноправная репликация в Оракле) для двух узлов мне приходлось за счет разной четности на узлах инкрементов добиваться типа усиления силы идентификации для копий.

Но в Рамках ЛЮБОЙ ИС гемориться с усилением силы идентификации инкрементов, надеюсь, НИКТО и НИКОГДА НЕ БУДЕТ заставлять.

sphinx_mv А на тему "абсолютной уникальности" GUID уже писалось
...
Ну достаточно для фиксация наличия хоть одного преимущества над инкрементными и этого:
sphinx_mvДля GUID сделано допущение, что оно "в-общем случае" уникально и сравнительно просто генерируется...
.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37721974
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfosphinx_mvА теперь вопрос на засыпку - ЧТО есть суть страхового номера?
Пусть меня отшлепает тапком первый, кто внятно докажет, что это НЕ суррогат!
Естественный ключи!.. Естественные ключи!.. А как присмотришься по-внимательнее - СУРРОГАТЫ! ВСЕГДА И ВЕЗДЕ!

В БД суррогатный - тот которого нет в предметной области (ПО) (т.е. не представляет информационного интереса для юзеров), а есть тока в энтой БД. Страховой номер усилиями ПФ РФ является свойством персон РФ. Его, к примеру, операторы могут сравнить с докуметами, которые приносят пиплы при приеме на работу. Его могут затребовать заинтересованные лица.

Это ничего, что вы ОГРАНИЧИЛИ возможности Вашей информационной системы ТОЛЬКО гражданами РФ?
Приеду я в РФ - ну, и какой номер Вы нарисуете в вашем "естественном ключе"?
Даже номер удостоверяющего документа я могу ОФИЦИАЛЬНО сменить в течение нескольких часов - утром написать заявление, вечером получить новые...
vadiminfosphinx_mvСортировка и поиск - суть, основные алгоритмы при обработке данных...
Читайте первоисточники - они, как бы, рулес...

РМД предполагает декларативную систему запросов. Т.е. эта МД забила на скока могла на алгоритмы обработки данных на уровне пректировщика БД на логическом уровне. Ну это как бы одно из ее важных достоинств. Не знау как Вы это не увидели в первоисточниках.

Ваша "сферическая информационная в система в вакууме" может сколько угодно забивать чего угодно и на что угодно...
Вот только в "реальном" мире "забивать" на некоторые вещи крайне не рекомендуется...
vadiminfosphinx_mvА это ничего, что "естественный по страховому" ничто иное как автоинкремент внутри информационной системы страхавания?
И, кстати, ошибки ввода никто не отменял...

Ничего. Ить суррогатность не равна инкременту. И кстати, ошибки ввода это траблы юзеров. А вот ежели он ошибок не делал и ввел дубли, то это, скорей всего, траблы разработчика. Проверять то правильность ввода юзер обязан, а вот искать дубли в БД нет. Я сталкивался с примером повторного ввода пачек из 200 инд сведений в одной такой БД.

Не надо все валить на бедных юзеров - им ПОЛОЖЕНО ошибаться.
А вот то, что некоторая информационная система НЕ отреагировала на появившиеся дубли - признак того, что кое-кто слишком доверяет теориям жидкого вакуума...
vadiminfosphinx_mvВ результате операторской ошибки НЕВЕРНОЕ значение иденитификатора начинает произвольным образом разгуливать по информационной системе. Кстати, некто Сидоров ЛЕГКО И НЕПРИНУЖДЕННО зарегистрировался в системе дважды... А то и трижды... В результате АНАЛОГИЧНОЙ ошибки...

Я говорю о достоинствах и недостаках. Eсли юзер не ошибся, он не наберт Сидорова дважды. А с сурогатом то наберет. Этого достаточно, чтобы зафиксировать преимущество естественного.
Т.е. он в этом суррогат явно хуже. Тока и всего.

Если пользователь ОШИБСЯ при вводе значения первичного ключа - последствия этой ошибки на порядки тяжелее, чем при использовании суррогатов.
Пример, как у меня в течение единиц часов меняется номер удостоверяющего документа (с учетом отсутствия у меня страхового номера) приводит к тому, что даже ПРАВИЛЬНО введенные оператором данные ПЕРЕСТАЮТ соответствовать реальной действительности.
vadiminfosphinx_mvА не надо аппелировать к тупому оптимизатору запросов...
Любые операции над целочисленными данными выполняются ЭФФЕКТИВНЕЕ, чем операции над их строковым представлением.
ЭТОГО достаточно - естественные ключи (практически) НИКОГДА не могут быть представлены как ЧИСЛО.

Ну, может быть, не тупее нас с Вами этот оптимизатор.
Кроме того, ЭФФЕКТИВНЕЕ это одно, а какой буит выигрыш в каждом конкретном случае на практике - другое. Опять же колнка предназначенная для соритировки, может быть числовой, если что.

Ура!! Даешь еще одно поле для пользовательского ввода и широчайшего простора для операторских ошибок!
vadiminfosphinx_mvВы НЕ представляете особенности функционирования АВТОИНКРЕМЕНТНОГО поля!
НИКОГДА (в штатной ситуации!) НЕЛЬЗЯ ВСТАВИТЬ в такой ключ значение, которое меньше любого ранее введенного!
Соответственно, в следствии этой ПРОСТУЮ особенности автоинкрементного ключа ВСЕГДА есть возможность определения ПОРЯДКА ВСТАВКИ записей в таблицу.

Да ладно. Инкрементость суррогатных ключей вовсе не предазначалась для определения ПОРЯДКА, а тока для неповторяемости. Есть две тразакции. В первой сгенрилось 101 для записи таблы, во второй 100. Первую закоммитили. А вторую закомиитили через пол час. Т.е. 100 оказалась позжее 101, а может и 200, что за эти пол часа кто-то налабал.

Проблема длинных пользовательских транзакций и вызываемых ими проблемах - НЕ проблема суррогатов.
Допустил проектировщик возможность таких ситуации - это КОНКРЕТНАЯ особенность реализации КОНКРЕТНОЙ информационной системы. И это ВСЕГО лишь означает, что в ДАННОЙ КОНКРЕТНОЙ реализации порядок НЕ РАБОТАЕТ.
vadiminfosphinx_mvПри использовании репликации любые изменения значений первичных ключей ведет к НАРУШЕНИЯМ в целостности данных с практической НЕВОЗМОЖНОСТЬЮ разрешения конфликтов и ИСПРАВЛЕНИЯ ошибок - ошибка начинает РЕПЛИЦИРОВАТЬСЯ!

Если при каких-то видах изменеий в конкретной СУБД данных возникают сложности, что имеет место, то не факт, что это не буит устранено в других версиях.

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

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

Изменения первичных ключей не желательны не только в Oracle, но и в ЛЮБОЙ информационной системе, построенной на ЛЮБОЙ другой реляционной платформе.
vadiminfosphinx_mvСамый простой способ снижения рисков нарушения целостности данных - запрет пользователю ЛЮБЫМ способом изменять значения первичных ключей...
У Вас есть в этом сомнения?

У меня во всем есть сомнения.
Изменение равно удалению и добавлению. Вот автоинкремент для того же объекта реального мира и поменялся.
Возможно, ОЦ и вообще не нарушатся при этом. А вот запросы со значениями суррогатов могут вполне показать не то шо надо.

АФИГЕТЬ!И где такую траву продают? Дайте две!!!
И вы всегда вместо обновления данных сначала удаляете, а потом добавляете новые? А че - оно же ж "равно"!!!
vadiminfosphinx_mvВо-первых,в ЛЮБОЙ предметной области ЕСТЬ понятие вставки записей - иначе откуда данные попадут в систему.

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

А если я заменю операцию "вставки записей", имеющую смысл в реляционной модели, на операцию "вставки объекта", которые актуальны для ООБД - ЭТО СИЛЬНО изменит смысл соответствующей операции?
Или представить запись таблицы в виде объекта - это действительно так сложно???
vadiminfosphinx_mvИ аудит к этому как бы "даже близко не стояло" - у него задача категорически другая...

Что у Вас скрывается по "этим" я не возьмусь угадать с уверенностью. Но , к последним внесенным записям в таблу аудит может иметь категорическое отношение, если админу нуно отслеживать последние внесенные записи. Ауит разными аспектами "внесения" записей может интересоваться (как впрочем и обновления и удаления).

Ну, да... Ну, да...
Берем огроменную пушку... И стреляем по малюсеньким воробьям... И снаряды чтобы были с ядерным зарядом...
vadiminfosphinx_mvИ, действительно, главное преимущество суррогатов - ОНИ НЕ ВЛИЯЮТ НА ИНФОРМАЦИЮ В БД!

Во це да.
Но у Вас то они влияют: их значения в сортировке. Извинит, если это не влияние, то что? Изменить их значение, получите другой ответ запроса. Это не влияние на информацию, по Вашему.

Подмена понятий!
Наличие в модели данных суррогатных ключей никак НЕ влияет на информацию, которую хранит модель.
А Вы целенаправленно МЕНЯЕТЕ - ручками! - информацию в ключе и тут же предъявляете претензии к суррогату!
НЕ СЕРЬЕЗНО...
И НЕПРОФЕССИОНАЛЬНО!
vadiminfosphinx_mvОни обеспечивают идентификацию записей и контролируют ссылочную целостность.

Суррогаты? И я того же мнеия. Все остальное включая отслеживание последователности внесения записей не входит в "задачу" ключей вообще и суррогатных, в часности. Это типа дополнительная нагрузка тока на инкрементые.

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

Погодите. Попробую угадать. У Вас вместо типа имени колонки "Номер телефона", скорее всего там имя типа A12567? А смысл того что скрывается за A12567 в доке нуно искать? Я хде-то это уже слышал.
Хороша МД. Ну что же, одно из достоинств РМД - простая интепритация данных, возможно, идет в гору у Вас там.

Срочно меняете хрустальный шар - он у вас испортился...
И повторно пройдите курсы - новые версии требуют переэкзаменовки...
vadiminfosphinx_mvВозник ОЧЕНЬ нескромный вопрос... Вы точно уверены, что проектирование БД - это Ваша сфера деятельности?

Да уж Вам не позавидуешь в плане не скромности: ить таким вопросом Вы претендуете на то, что в то что это Ваша сфера усомниться незя. Что безусловно не ОЧЕНЬ скромно.

Не моя, но к сожалению, мне приходится копаться в этом д%^%&.
vadiminfoЯ не в чем не уверен. В том числе и в том что моя сфера деятельности.
Не знаю, правда, какое это отношение имеет к достоинствам и недостаткам суррогатных инкрементных ключей.

Самое прямое...
Начиная с того, что любое допущение изменения значений ПК набивает шишки на самом первом проекте БД...
И заканчивая умениями не совсем стандартного использования некоторых имеющихся возможностей...
vadiminfosphinx_mvНадо не думать... Надо знать... И вникать...

Да Вам не в сфере проектирования каких-то там БД тусить. Вам ба лозунги для митингов проектировать. Цены б Вам, может быть, не было.

Выше Вашего "харекришна" (как в этом обсуждении) мне, к сожалению, не прогнуться...
vadiminfosphinx_mvВ рамках ЛЮБОЙ информационной системы НИКТО и НИКОГДА НЕ МОЖЕТ запретить использование "СКВОЗНОГО" АВТИНКРЕМЕНТА для идентификации ЛЮБЫХ (вплоть до ВСЕХ) объектов системы...
Ну ну. Нет конечно в мультимастер репликации (равноправная репликация в Оракле) для двух узлов мне приходлось за счет разной четности на узлах инкрементов добиваться типа усиления силы идентификации для копий.

"Нормальные герои всегда идут в обход" (с)
Оказывается, это так сложно в оракле создать составной ключ!
vadiminfoНо в Рамках ЛЮБОЙ ИС гемориться с усилением силы идентификации инкрементов, надеюсь, НИКТО и НИКОГДА НЕ БУДЕТ заставлять.

Реплики ЛЕГКО сводятся (и разводятся) с использованием составных ключей.
Более того - этим способом ЛЕГКО сливаются даже данные разных платформ - в рамках обобщенной информационной системы...
vadiminfosphinx_mv А на тему "абсолютной уникальности" GUID уже писалось
...
Ну достаточно для фиксация наличия хоть одного преимущества над инкрементными и этого:
sphinx_mvДля GUID сделано допущение, что оно "в-общем случае" уникально и сравнительно просто генерируется...
.
Я правильно понимаю, что внетранзакционное нечто типа "i++" для вас - это архисложно и является верхом программистической мысли?
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37722254
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvЭто ничего, что вы ОГРАНИЧИЛИ возможности Вашей информационной системы ТОЛЬКО гражданами РФ?
Приеду я в РФ - ну, и какой номер Вы нарисуете в вашем "естественном ключе"?

Ничего.
Был просто пример показывающий достинства естественных ключей. И только.

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

А Вы что суррогатом зарешаете всю идентификацию глобально? А они придумывают там всякие биометрические. Бабло тратят. Им ба к Вам обратиться.


sphinx_mvВаша "сферическая информационная в система в вакууме" может сколько угодно забивать чего угодно и на что угодно...
Вот только в "реальном" мире "забивать" на некоторые вещи крайне не рекомендуется...

Я про мои системы вообще ниче не говорил. Там про РМД была речь. Вам мож луче иерахические подойдут? Там есть и упорядоченности записей на уровне МД и алгоритмы - там навигационный доступ к данным.
Лано, все чисто митинговое буду опускать далее.

sphinx_mvА вот то, что некоторая информационная система НЕ отреагировала на появившиеся дубли - признак того, что кое-кто слишком доверяет теориям жидкого вакуума...

Ну вот и хорошо: там хде суррогат не отриагирует, естесвенный отреагирует(када юзер правильно заносит). Када не правильно суррогат все равно не поможет.


sphinx_mvПроблема длинных пользовательских транзакций и вызываемых ими проблемах - НЕ проблема суррогатов.
Допустил проектировщик возможность таких ситуации - это КОНКРЕТНАЯ особенность реализации КОНКРЕТНОЙ информационной системы. И это ВСЕГО лишь означает, что в ДАННОЙ КОНКРЕТНОЙ реализации порядок НЕ РАБОТАЕТ.


Теперь КОНКРЕТНАЯ?
Ну так пример и был приведен против ЛЮБОЙ системы. Ить Вы вроде инкрементный суррогат как самое надежное продвигали. А теперь согласны что может НЕ РАБОТАТЬ? Ну прогресс есть.

sphinx_mvИ вы всегда вместо обновления данных сначала удаляете, а потом добавляете новые? А че - оно же ж "равно"!!!

Ну Вы ловкач.
Вы же хотели запретить пользователю менять первичный ключ. И спрашивали про мои сомнения на этот счет.
Я типа сказал, Вам по сути, что удаление и вставка помогут ему преодолеть такие запреты в случае суррогата. Что тада Вам и удаление и вставку придется ограничивать как-то. Тока и всего.



sphinx_mvПодмена понятий!
Наличие в модели данных суррогатных ключей никак НЕ влияет на информацию, которую хранит модель.
А Вы целенаправленно МЕНЯЕТЕ - ручками! - информацию в ключе и тут же предъявляете претензии к суррогату!
НЕ СЕРЬЕЗНО...
И НЕПРОФЕССИОНАЛЬНО!

Даже если я не меняю ничего, это она у Вас влияет, так как значение в запросе. Изменение, тока для тестирования что влиет.
Вот если бы поменяли и инфа в запросах не изменилась, то не влияет.
Чет-то Вы как-то очень "ПРОФЕССИОНАЛЬНО" понимете ответы, на Ваши утверждения.

sphinx_mvРеплики ЛЕГКО сводятся (и разводятся) с использованием составных ключей.
Более того - этим способом ЛЕГКО сливаются даже данные разных платформ - в рамках обобщенной информационной системы...

Реплика это копирование - физика. Структура и ОЦ - логика БД.
Внесение изменений в логику ради физики, возможно, существенный недостаток. Это не совершество данной версии СУБД.
СУБД как бы должна обеспечить отделение физического от логического.

sphinx_mvЯ правильно понимаю, что внетранзакционное нечто типа "i++" для вас - это архисложно и является верхом программистической мысли?
Внетранзакционное? "i++"? Может еще из ассеблера че напишете?
Является для меня чем-то из жизни драйверов. Тут был уже про драйвер БД.
Потом перенесли в Другие СУБД. Фмаз, каэтся называлось.

По любасу попытки превратить инкремент в GUID, скорее всего плохая идея, раз на ея не пошли производители СУБД.
Инкремет свои преимущества перед GUID начнет утрачивать, а всех достоинств так и не достигнет, скорей всего.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37722358
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfosphinx_mvЭто ничего, что вы ОГРАНИЧИЛИ возможности Вашей информационной системы ТОЛЬКО гражданами РФ?
Приеду я в РФ - ну, и какой номер Вы нарисуете в вашем "естественном ключе"?

Ничего.
Был просто пример показывающий достинства естественных ключей. И только.

Что же это за достоинства такие, которые заваливают первый же тест системы?
vadiminfoНа стадии анализа предметной области выяснили, например, что лиц без страхового в системе быть не может.
Ну такая система.

Это - демонстрация уровня квалификации аналитиков...
Первый же тест "не глядя" - и вся система в ауте!
vadiminfoА Вы что суррогатом зарешаете всю идентификацию глобально? А они придумывают там всякие биометрические. Бабло тратят. Им ба к Вам обратиться.

А Вы вообще хотя бы теоретическое представление о биометрических данных имеете?
Или лишь бы чего в очередной раз пукнуть, а там хоть трава не расти?

Вот у меня, например, как раз паспорт с биометрией...
Но к моему ИДЕНТИФИКАТОРУ в системе документирования соотносится сугубо как дополнительный (и даже не-ключевой) атрибут...
Впрочем, номера ВСЕХ моих документов к идентификатору - точно таким же образом...
vadiminfosphinx_mvВаша "сферическая информационная в система в вакууме" может сколько угодно забивать чего угодно и на что угодно...
Вот только в "реальном" мире "забивать" на некоторые вещи крайне не рекомендуется...

Я про мои системы вообще ниче не говорил.

Я бы тоже не особо афишировал системы, которые проваливают первые же тесты...
vadiminfoТам про РМД была речь. Вам мож луче иерахические подойдут? Там есть и упорядоченности записей на уровне МД и алгоритмы - там навигационный доступ к данным.

А еще какие умные слова вы знаете?
vadiminfoЛано, все чисто митинговое буду опускать далее.

Никто и не заставляет... Только почему вы решили что Ваш митингизм - лучше?
vadiminfosphinx_mvА вот то, что некоторая информационная система НЕ отреагировала на появившиеся дубли - признак того, что кое-кто слишком доверяет теориям жидкого вакуума...

Ну вот и хорошо: там хде суррогат не отриагирует, естесвенный отреагирует(када юзер правильно заносит). Када не правильно суррогат все равно не поможет.

Вы просто НЕ в курсе - суррогат как раз поможет!
Хотя бы тем, что при использовании суррогатов нет ни малейшей необходимости ковыряться в ссылочной целостности при изменении значений альтернативных ключей... Если, конечно, какой-то гениальный "эксперт" не разрешит пользователям перебивать значения первичного ключа...
vadiminfosphinx_mvПроблема длинных пользовательских транзакций и вызываемых ими проблемах - НЕ проблема суррогатов.
Допустил проектировщик возможность таких ситуации - это КОНКРЕТНАЯ особенность реализации КОНКРЕТНОЙ информационной системы. И это ВСЕГО лишь означает, что в ДАННОЙ КОНКРЕТНОЙ реализации порядок НЕ РАБОТАЕТ.


Теперь КОНКРЕТНАЯ?
Ну так пример и был приведен против ЛЮБОЙ системы. Ить Вы вроде инкрементный суррогат как самое надежное продвигали. А теперь согласны что может НЕ РАБОТАТЬ? Ну прогресс есть.

"Дядя! Вы - ДУРАК?" (с)

В данной КОНКРЕТНОЙ ситуации перестает работать не автоинкрементный суррогат, а учет порядка ввода данных на основе значения сурогата!
Если гении обложившиеся липовыми сертификатами настолько круты что не видят разницы - что ж... не удивительно что в их системах "не бывает лиц без пенсионного номера"...

vadiminfosphinx_mvИ вы всегда вместо обновления данных сначала удаляете, а потом добавляете новые? А че - оно же ж "равно"!!!

Ну Вы ловкач.
Вы же хотели запретить пользователю менять первичный ключ. И спрашивали про мои сомнения на этот счет.
Я типа сказал, Вам по сути, что удаление и вставка помогут ему преодолеть такие запреты в случае суррогата. Что тада Вам и удаление и вставку придется ограничивать как-то. Тока и всего.

Я, может, и ловкач... Но шулер гораздо меньшего уровня, чем Вы.
При этом элементарных познания в том, что в ЛЮБОЙ информационной системе ОБЯЗАНЫ существовать ограничения на вставку, обновление и удаление данных, Вам, к сожалению, не известно...

Во избежание Ваших инсинуаций - точно такие же ограничения должны быть и при использовании естественных ключей...
И не только в реляционных моделях данных...
vadiminfosphinx_mvПодмена понятий!
Наличие в модели данных суррогатных ключей никак НЕ влияет на информацию, которую хранит модель.
А Вы целенаправленно МЕНЯЕТЕ - ручками! - информацию в ключе и тут же предъявляете претензии к суррогату!
НЕ СЕРЬЕЗНО...
И НЕПРОФЕССИОНАЛЬНО!

Даже если я не меняю ничего, это она у Вас влияет, так как значение в запросе. Изменение, тока для тестирования что влиет.
Вот если бы поменяли и инфа в запросах не изменилась, то не влияет.
Чет-то Вы как-то очень "ПРОФЕССИОНАЛЬНО" понимете ответы, на Ваши утверждения.

Але! Гараж!
ВЫ! ИЗМЕНИЛИ! ДАННЫЕ!
И после этого Вы имеете наглость предъявлять претензии к информационной системе в том, что "данные поменялись"?!
В том время, как претензии по этому поводу следует предъявлять непосредственно к ВАМ - как к персоне, выполнившей это конкретное действие над данными системы!!!
vadiminfosphinx_mvРеплики ЛЕГКО сводятся (и разводятся) с использованием составных ключей.
Более того - этим способом ЛЕГКО сливаются даже данные разных платформ - в рамках обобщенной информационной системы...

Реплика это копирование - физика. Структура и ОЦ - логика БД.
Внесение изменений в логику ради физики, возможно, существенный недостаток. Это не совершество данной версии СУБД.
СУБД как бы должна обеспечить отделение физического от логического.

Сдается мне, что это не проблема конкретной версии СУБД, а проблема Вашей реализации...
Использовать четность/нечетность вместо указания границ значений первичного ключа на основе последовательности - такой повод позаявлять об умении решать простые задачи наиболее сложными способами...
vadiminfosphinx_mvЯ правильно понимаю, что внетранзакционное нечто типа "i++" для вас - это архисложно и является верхом программистической мысли?
Внетранзакционное? "i++"? Может еще из ассеблера че напишете?

Т.е независимость изменения значений генераторов, последовательностей, идентити и прочих аналогов автоинкрементов от контекста транзакции - для Вас это откровение? У, как все запущено...

Кстати, попытки "пугать ассемблером" незнакомых людей выглядят весьма нижеплинтусово...
vadiminfoПо любасу попытки превратить инкремент в GUID, скорее всего плохая идея, раз на ея не пошли производители СУБД.
Инкремет свои преимущества перед GUID начнет утрачивать, а всех достоинств так и не достигнет, скорей всего.
Слов много, смысла - ноль...
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37722409
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvЧто же это за достоинства такие, которые заваливают первый же тест системы?

В том что Сидорова не занесли дважды набрав номер, если юзер все правильно введет.


Повторяю для тугодумов: есть системы хде нет никого без страховых в РФ.

Там ваш тест, не проканает: нет страхового идете лесом, вас не допустят, в систему не занесут на том предприятии.

sphinx_mvВы просто НЕ в курсе - суррогат как раз поможет!
Хотя бы тем, что при использовании суррогатов нет ни малейшей необходимости ковыряться в ссылочной целостности при изменении значений альтернативных ключей... Если, конечно, какой-то гениальный "эксперт" не разрешит пользователям перебивать значения первичного ключа...

Поможет не позволить Сидорова занести многократно?
А народ заносил и по 100 и более раз. Доводилось сталкиваться в некоторых таких продвинутых системах, написанных профи.
Правда не в БД, а драйверах.

sphinx_mv"Дядя! Вы - ДУРАК?" (с)

В данной КОНКРЕТНОЙ ситуации перестает работать не автоинкрементный суррогат, а учет порядка ввода данных на основе значения сурогата!
Если гении обложившиеся липовыми сертификатами настолько круты что не видят разницы - что ж... не удивительно что в их системах "не бывает лиц без пенсионного номера"...

А Вы не ДУРАК?

Или дурочку запускаете?

Там и было, что "перестает работать ...порядок ввода данных на основе значения сурогата!"
Вы же суррогат для этого учета юзали. Разхваливали как он находит паоследние. А я привел пример, када это не работает. А теперь Вы хотите мне приписать, что якобы я говорил, что суррогат не работает?
Ловко.

sphinx_mvЯ, может, и ловкач... Но шулер гораздо меньшего уровня, чем Вы.
При этом элементарных познания в том, что в ЛЮБОЙ информационной системе ОБЯЗАНЫ существовать ограничения на вставку, обновление и удаление данных, Вам, к сожалению, не известно...

Вы опять дурку запуститли? Мол де я был против ограничений вообще а Вы мол за?

Вы хотели запретить изменение ПК суррогатного. Забыли что ли? Я поставил под сомнение идею.
Расжевываю для особо одаренных:
Вы запретили обновлять суроогатный ключ. Юзер удалением и всавкой может обойти это ограничение. Стало быть Вы буите контролировать ввод и удаление.
Юзер удалил запись про Сидорова. Вы как это ограничили? Запомнили то шо было? Всю запись?
Юзер опять вставил то шо удалил, того же Сидорова. Вы как это ограничили? Сравнили с тем шо было и все отменили, вернули то шо было? Если ниче не сделали, то юзер заменил суррогат: он увеличился.
А юзер возьми и удали пол БД, а всавлять обратно начсал через неделю. За это время и Сидоров сменил фамилие. Че делаете?
Иначе получится что юзер поменял суррогат.



А не про какие-то ограничения удаления и вставки вообще была речь. Нет у Оракла есть Флэшбэк. А юзер возьми и удали пол БД, а всавлять обратно начсал через неделю.

sphinx_mvАле! Гараж!
ВЫ! ИЗМЕНИЛИ! ДАННЫЕ!
И после этого Вы имеете наглость предъявлять претензии к информационной системе в том, что "данные поменялись"?!
В том время, как претензии по этому поводу следует предъявлять непосредственно к ВАМ - как к персоне, выполнившей это конкретное действие над данными системы!!!


Скока праведного негодования.
А я ить предупреждал(С). Нечего было суррогаты условиях отбора и сортировках данных юзать. Ниче бы и не было ба с этими запросами после замены суррогатов.


sphinx_mvСдается мне, что это не проблема конкретной версии СУБД, а проблема Вашей реализации...
Использовать четность/нечетность вместо указания границ значений первичного ключа на основе последовательности - такой повод позаявлять об умении решать простые задачи наиболее сложными способами...

Способ рекомендованный руководством по репликации в Оракле. Альтернатива GUID. Но у них канечно тоже квалификация по сравнению с Вами никакая. Им ба у Вас поучиться жить.

Границы указывать? Заранеее посчитать скока там буит значений в таблах? Во всех 150? А ить проектировщики потом будут еще таблы добавлять.
Это проще чем тупо поставить в той же последовательности на обной строне четное на другой нечетное и инкремент 2 и забыть об этом раз и на вседа?

Да уж, спасибо не нуно Ваших советов, плиз.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37722864
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfosphinx_mvЧто же это за достоинства такие, которые заваливают первый же тест системы?

В том что Сидорова не занесли дважды набрав номер, если юзер все правильно введет.

Повторяю для тугодумов: есть системы хде нет никого без страховых в РФ.

Простой вопрос, требующий точно такого же простого ответа...
ФМС всех не-граждан (честных, которые по разрешению и т.п.) тоже в ПФ всегда регистрировало?
А если нет - откуда у этих трудовых мигрантов пенсионный номер?
Ну, а сколько их миллионов на территории РФ, мусьё, в курсях?

Да и этот пенсионный номер, котрый как бы "главный идентификатор в правильных системах", не является СТРОГО ОБЯЗАТЕЛЬНЫМ... Вот такой не-обязательный первичный ключ... Который, типа, идентифицирует данные в системе...
vadiminfoТам ваш тест, не проканает: нет страхового идете лесом, вас не допустят, в систему не занесут на том предприятии.

Нет ничего опаснее в природе, чем дурак с инициативой - именно таких, которые кривой дизайн превозносят как верх гениальности...
Внезапно СМЕНЯТ страховые номера - и разработанная Вами эта "суперклассная" система пойдет глухим лесом...
vadiminfosphinx_mvВы просто НЕ в курсе - суррогат как раз поможет!
Хотя бы тем, что при использовании суррогатов нет ни малейшей необходимости ковыряться в ссылочной целостности при изменении значений альтернативных ключей... Если, конечно, какой-то гениальный "эксперт" не разрешит пользователям перебивать значения первичного ключа...

Поможет не позволить Сидорова занести многократно?

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

"Профи", допускающий элементарные ошибки в коде, которые можно выявить на простейших тестах - ну, "ОЧЕНЬ квалифицированный специалист"...
Ну, а уровень "продвинутости" системы с такими ошибками в коде лучше не комментировать - в комментах цензурными будут только предлоги......
vadiminfosphinx_mv"Дядя! Вы - ДУРАК?" (с)

В данной КОНКРЕТНОЙ ситуации перестает работать не автоинкрементный суррогат, а учет порядка ввода данных на основе значения сурогата!
Если гении обложившиеся липовыми сертификатами настолько круты что не видят разницы - что ж... не удивительно что в их системах "не бывает лиц без пенсионного номера"...

А Вы не ДУРАК?

Или дурочку запускаете?

Вы бы беспокоились за собственную дурочку, которая уже и на уровень дебила не дотягивает...
vadiminfosphinx_mv
Там и было, что "перестает работать ...порядок ввода данных на основе значения сурогата!"
Вы же суррогат для этого учета юзали. Разхваливали как он находит паоследние. А я привел пример, када это не работает. А теперь Вы хотите мне приписать, что якобы я говорил, что суррогат не работает?
Ловко.

Ваш столик в детском саду!.. С точно такими же "профи"...

Вмешиваетесь в работу системы - и жалуетесь, что "система не работает правильно"?
Хотелось бы посмотреть как поле "SORT", за необходимость которого, не буду тыкать пальцем, кое-кто брызгал слюнями на монитор после изменения порядка значений будет продолжать "правильно" работать...
vadiminfosphinx_mvЯ, может, и ловкач... Но шулер гораздо меньшего уровня, чем Вы.
При этом элементарных познания в том, что в ЛЮБОЙ информационной системе ОБЯЗАНЫ существовать ограничения на вставку, обновление и удаление данных, Вам, к сожалению, не известно...

Вы опять дурку запуститли? Мол де я был против ограничений вообще а Вы мол за?

А в Ваших системах и НЕ существует никаких ограничений!..
Про альтернативные ключи Вам не известно...
Просле этого то у Вас пользователь когда захочет удалит что захочет...
То у Вас по 100 раз одно и тоже в систему попадает...
То вдруг "чего-то в природе не бывает"...
И т.д...
vadiminfoВы хотели запретить изменение ПК суррогатного. Забыли что ли? Я поставил под сомнение идею.

Только "профи" Вашего "уровня" может поставить под сомнение идею об отсутствии необходимости и бессмысленности изменения суррогатных ключей, а про опасность изменения первичных ключей слыхом не слыхивать, видом не видывать...
Только "профи" Вашего "уровня" может ставить под сомнение идею, что если некоторе действие а) не нужно, б) бессмыслено и в) ОПАСНО - это действие ЦЕЛЕСООБРАЗНО ЗАПРЕЩАТЬ!!!
Если некоторым "инициативным" во всем этом чего-то не понятно - это проблема их персональной "гениальности"...
vadiminfoРасжевываю для особо одаренных:

С Вашей-то личной "одаренностью" заниматься такими теориями чревато...
Что и наблюдается (но не Вами!) по уровню проблем в Ваших системах...
vadiminfoВы запретили обновлять суроогатный ключ. Юзер удалением и всавкой может обойти это ограничение. Стало быть Вы буите контролировать ввод и удаление.
Юзер удалил запись про Сидорова. Вы как это ограничили? Запомнили то шо было? Всю запись?
Юзер опять вставил то шо удалил, того же Сидорова. Вы как это ограничили? Сравнили с тем шо было и все отменили, вернули то шо было? Если ниче не сделали, то юзер заменил суррогат: он увеличился.
А юзер возьми и удали пол БД, а всавлять обратно начсал через неделю. За это время и Сидоров сменил фамилие. Че делаете?
Иначе получится что юзер поменял суррогат.

Даже дебил давно бы понял, что ничего такого, с чем бы Вы НЕ столкнулись при использованием ЕСТЕСТВЕННЫХ ключей, Вы НЕ описали - ситуация повторится с точностью до нажатой пользователем клавиши на клавиатуре!
vadiminfoА не про какие-то ограничения удаления и вставки вообще была речь. Нет у Оракла есть Флэшбэк. А юзер возьми и удали пол БД, а всавлять обратно начсал через неделю.

С детскими эротическими фантазиями Вам на другой сайт...
vadiminfosphinx_mvАле! Гараж!
ВЫ! ИЗМЕНИЛИ! ДАННЫЕ!
И после этого Вы имеете наглость предъявлять претензии к информационной системе в том, что "данные поменялись"?!
В том время, как претензии по этому поводу следует предъявлять непосредственно к ВАМ - как к персоне, выполнившей это конкретное действие над данными системы!!!


Скока праведного негодования.
А я ить предупреждал(С). Нечего было суррогаты условиях отбора и сортировках данных юзать. Ниче бы и не было ба с этими запросами после замены суррогатов.

Замечательно дебильный коммент...
Принципиальная разница между ПК на суррогатах и на естественных ключах ОТСУТСВУЕТ!
Поведение системы при изменении значения суррогатного первичногь ключа или естественного первичного ключа - АБСОЛЮТНО ОДИНАКОВО.
А! Нет... естественные ключи "вывихнут мозги" информационной системе на исправлении ссылочной целостности с гораздо большим эффектом, чем суррогаты, которые к тому же "простым смертным" пользователям (обычно!) не доступны из приложения...
В отличие от естественных ключей, которые (обычно!) доступны для редактирования...
vadiminfosphinx_mvСдается мне, что это не проблема конкретной версии СУБД, а проблема Вашей реализации...
Использовать четность/нечетность вместо указания границ значений первичного ключа на основе последовательности - такой повод позаявлять об умении решать простые задачи наиболее сложными способами...

Способ рекомендованный руководством по репликации в Оракле. Альтернатива GUID. Но у них канечно тоже квалификация по сравнению с Вами никакая. Им ба у Вас поучиться жить.

С учетом того, что в Oracle нет многих элементарнейших вещей, которые есть на других платформах, иму действительно ЕСТЬ куда расти... А вот Вас до него допускать не стоит - чревато...
vadiminfoГраницы указывать? Заранеее посчитать скока там буит значений в таблах? Во всех 150? А ить проектировщики потом будут еще таблы добавлять.
Это проще чем тупо поставить в той же последовательности на обной строне четное на другой нечетное и инкремент 2 и забыть об этом раз и на вседа?

Я же говорю - квалификация у Вас слабовата... Вместо того, чтобы сделать составной ключ с кодом реплики (заполняемым по дефолту) устроить танцы с бубном... Универсальное решение, которое позволяет единоообразно "слить" не только Oracle с Oracle'ом, но и многие более других платформы между собой...
vadiminfoДа уж, спасибо не нуно Ваших советов, плиз.
Да за ради бога!
Я знаю, что некоторые "одаренные" вместо того, чтобы один раз, но хорошо написать, будут специально использовать в своих системах потенциально опасные решения, чтобы продолжать получать незаработанный бутерброд с маслом и колбасой на сопровождении...
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37723088
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mv
Да и этот пенсионный номер, котрый как бы "главный идентификатор в правильных системах", не является СТРОГО ОБЯЗАТЕЛЬНЫМ... Вот такой не-обязательный первичный ключ... Который, типа, идентифицирует данные в системе...



Вообще-то это был пример "хоть одного достоинства" естественного ключа перед суррогатным. На ваш вопрос про таковой.
Вы теперь отрицаете не само достоинство, а отсутсвие естественного ключа по сути. Так как первичным моно объявить любой, то естественных нет получается.
Ожидалось, что Вы все же буите отрицать само достоинство. Ну ожидания не оправдались.

Ни про главный идентитфикатор ни про правильные системы я ниче не писал. Первый попавшийся вообще.


sphinx_mv
Поможет!
Альтернативные ключи - такому гуру, как Вы, это должно хоть о чем-нибудь говорить...

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

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




Далее явное ответы по типу я про Ерему, а Вы про Фому.

Я уточнял про пример опровергающий Ваше утверждение о пользу от юзания суррогатного инркемента для поиска последних записей.
А Вы про мое куда-то там вмешивание, про SORT.

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


sphinx_mvЯ знаю, что некоторые "одаренные" вместо того, чтобы один раз, но хорошо написать, будут специально использовать в своих системах потенциально опасные решения, чтобы продолжать получать незаработанный бутерброд с маслом и колбасой на сопровождении...

Образчик чисто технических рассуждений от высоквалифицированного профи в среде проектипрования БД.
Восхичен Вашим знаниями, про опасные решения и про выгоду от сопровождения. Кто бы мог подумать?
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37724423
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfosphinx_mvДа и этот пенсионный номер, котрый как бы "главный идентификатор в правильных системах", не является СТРОГО ОБЯЗАТЕЛЬНЫМ... Вот такой не-обязательный первичный ключ... Который, типа, идентифицирует данные в системе...

Вообще-то это был пример "хоть одного достоинства" естественного ключа перед суррогатным. На ваш вопрос про таковой.

Комбинация атрибутов, НЕ способная идентифицировать реляционное отношение, на роль КЛЮЧА рассматриваться в реляционной модели НЕ может... Соответственно, РЕАЛЬНОГО примера естественного ключа с Вашей стороны так и НЕ наблюдалось.
Ну, а по причине, что мусьё НЕ умеет определять ключи при реализации информационных ситем, куда он может пойти со своим мнением, он может выбрать самостоятельно.
vadiminfoВы теперь отрицаете не само достоинство, а отсутсвие естественного ключа по сути. Так как первичным моно объявить любой, то естественных нет получается.

Пример естественного ключа, которые может РЕАЛЬНО идентифицировать отношение - ГДЕ ОН? "Имя сестра! ИМЯ!!!" (с)
Как-то не наблюдается... Соответственно, с Вашими претензиями Вам прямая дорога в пешую прогулку с эротическим уклоном...
vadiminfoОжидалось, что Вы все же буите отрицать само достоинство. Ну ожидания не оправдались.

Ожидалось, что Вы сможете предложить именно вариант КЛЮЧА, годного для идентификации, чтобы у него было хоть какое-нибудь достоинство... Собственно, отрицается именно то, что у Вас - реальный кандидат на ключ, а не фуфло...
Вы предложили "нечто", что есть не везде, не всегда и не у всех объектов, которые должны быть сохранены в системе.
Соответственно, все Ваше "достоинство" на поверку оказалось БРЕДОМ СИВОЙ КОБЫЛЫ...
vadiminfoНи про главный идентитфикатор ни про правильные системы я ниче не писал. Первый попавшийся вообще.

НИЧЕГО этот Ваш "идентификатор" НЕ идентифицирует!
Использовать атрибут, который даже НЕ является ОБЩИМ для однотипных объектов, в качестве ИДЕНТИФИКАТОРА - ЭТО ПЕРЛ!!!
Потому в пролете Ваше "первое попавшееся" неизвестно что...
sphinx_mvПоможет!
Альтернативные ключи - такому гуру, как Вы, это должно хоть о чем-нибудь говорить...

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

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

Ну, НЕ УДОВЛЕТВОРЯЕТ Ваш ключ минимальным требованиям для ПЕРВИЧНОГО КЛЮЧА.
НЕЛЬЗЯ сделать первичным ключом НЕОБЯЗАТЕЛЬНОЕ поле! Не верите? Читайте доки - они рулез (с)
Атрибут, значение которого НЕОБЯЗАТЕЛЬНО и ОТСУТСТВУЕТ у большого количества объектов даже просто ключом должно быть стыдно назвать...
vadiminfoДалее явное ответы по типу я про Ерему, а Вы про Фому.

Я уточнял про пример опровергающий Ваше утверждение о пользу от юзания суррогатного инркемента для поиска последних записей.
А Вы про мое куда-то там вмешивание, про SORT.

У мусье склероз? Не он ли предлагал использовать какие-то "левые" поля для сортировки? а, ну-да - это же "его идея" и "ему - можно"... И, вполне естественно, что "никто и никогда" именно ТЕ поля менять ни разу не будет... Ага...
А может, мусье настолько ТУП, что НЕ понимает, что ЛЮБЫЕ изменения ЛЮБОГО поля МЕНЯЮТ порядок записей ПРИ ВЫБОРКЕ с СОРТИРОВКОЙ по этому полю? Или, может, мусье просто не знаком с особенностями использования и результатами применения "ORDER BY" в выборках, что в-принципе, ожидаемо?..
Именно ПОЛЬЗОВАТЕЛЬ несет ответственность за СВОИ действия, которые к нарушениям модели никаким боком не относятся! Потому что пользователь МОЖЕТ поменять ЛЮБОЙ порядок логического следования данных!
Может, Вы еще и про то, что порядок выборок ляпните, что это нонсенс? - с Вас станется...

Неужто, мусье НЕ понимает, что ЕСТЬ множество задач, круг которых может оказаться ГОРАЗДО ШИРЕ пределов его квалификации и опыта, и для которых ИМЕННО ТАКОЙ подход является САМЫМ простым и САМЫМ надежным способом решения вполне конкретной поставленной задачи?
Например, что-нибудь про такую, сравнительно небольшую группу задач, связанную с обработкой FIFO или LIFO мусье слышал?
И как же мусье будет решать такие задачи? Или, таки, не будет в следствие НЕДОСТАТКА квалификации? Ну, так и туда тому мусье и дорога...

Ладно, проявлю "гуманизьм"...
Объясню КАК можно решить подобные задачу, и почему нежелательно использовать не-автоинкрементные или модифицируемые идентификаторы (для конкретно этого круга задач)...
Сортировка по времени - теоретически годится, но за счет ограничения точности типа данных "дата/время" может получиться, что в ОДИН момент времени пришло несколько записей... Следовательно, результат выборки с сортировкой по времени МОЖЕТ НАРУШАТЬ физический порядок поступления записей...
GUID ВООБЩЕ неприменим в целях сортировки - т.е. ПРИНЦИПИАЛЬНО!.. Почему - для самостоятельного домашнего изучения.
И только автоинкремент (с ОБЯЗАТЕЛЬНЫМ запретом доступа пользователя на редактирование ключа) обеспечивает САМЫЙ правильный порядок при обработке такой вот вполне конкретной задачи...
Вот такие "простейшие" соображения для ТАКИХ задач.
vadiminfoНу про попытку запретить Вами суррогатов совсем чет-то стало не ясно. Вы наговорили про что угодно, тока не про то, что спрашивалось об этом запрете.

Вас смущал запрет?
Я изложил свою точку и аргументы, почему этот запрет должен иметь место.
Если Вы "ниасилили" прочитать, предъявляете претензии к качеству своего генетического материала - к счастью, я к этому никакого отношения не имею...
vadiminfosphinx_mvЯ знаю, что некоторые "одаренные" вместо того, чтобы один раз, но хорошо написать, будут специально использовать в своих системах потенциально опасные решения, чтобы продолжать получать незаработанный бутерброд с маслом и колбасой на сопровождении...

Образчик чисто технических рассуждений от высоквалифицированного профи в среде проектипрования БД.
Восхичен Вашим знаниями, про опасные решения и про выгоду от сопровождения. Кто бы мог подумать?
Вам-то и думать не особо есть чем... Так что не особо обольщайтесь...
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37724817
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot sphinx_mv]Комбинация атрибутов, НЕ способная идентифицировать реляционное отношение, на роль КЛЮЧА рассматриваться в реляционной модели НЕ может... Соответственно, РЕАЛЬНОГО примера естественного ключа с Вашей стороны так и НЕ наблюдалось.

1. Ключ в РМД - уникальнность его атрибутов. То что там Вами не может рассматриваться это Ваши же и дела. Или Вы уже Дейтом себя возмоннили, чтобы указывать что там и как должно рассмариваться в РМД?
2. Вы сами рассказав про помощь альтернативного, признали существование естественных первичных ключей. Или он не естесвенный, тада он опять суррогат и не поможет. Или он не ключ вообще по Вашему? Не реальный? Ну так даже не реальный естественный имеет преимущество, про которое шла речь.
3. Суррогат тем более ниче не спосбен идентифицировать вне програмной среды: его там нет. Так че для демонстрации вышеоговоенного достоинсва достаточно, в которм было не про идентификацию.
4. Если Вы не поняли до сих пор не поняли, это достоинство, кстати широко известное - на лекциях на 3 курсе обыкновенно читали, то могу выразить лишь недоумнение.


sphinx_mvПример естественного ключа, которые может РЕАЛЬНО идентифицировать отношение - ГДЕ ОН? "Имя сестра! ИМЯ!!!" (с)

Вообще-то такой пример нужен для сравнения достоисвт естесвенных ключей между собой (какой луче Идетифицирует), либо с другими способами идентификации, но с сурогатом, который изначль может тока ВИРТУАЛЬНО, т.е. на РЕАЛЬНУЮ идентификацию прететендовал.

Однако, даже если бы перетендовал это было бы просто другое достоинство.

Достаточно уникальности для примера того достоинства естественных перед суррогатами.

Художественные мыстли, естествеено, пропускаю: не являюсь поколнником Вашего таланта в этой сфере.
Пуксть даже это проявление есть высоко проффесионализм в сфере проектирования БД.



sphinx_mv
Ну, НЕ УДОВЛЕТВОРЯЕТ Ваш ключ минимальным требованиям для ПЕРВИЧНОГО КЛЮЧА.
НЕЛЬЗЯ сделать первичным ключом НЕОБЯЗАТЕЛЬНОЕ поле! Не верите? Читайте доки - они рулез (с)
Атрибут, значение которого НЕОБЯЗАТЕЛЬНО и ОТСУТСТВУЕТ у большого количества объектов даже просто ключом должно быть стыдно назвать...

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

sphinx_mvУ мусье склероз? Не он ли предлагал использовать какие-то "левые" поля для сортировки?
Неужто, мусье НЕ понимает, что ЕСТЬ множество задач, круг которых может оказаться ГОРАЗДО ШИРЕ пределов его квалификации и опыта, и для которых ИМЕННО ТАКОЙ подход является САМЫМ простым и САМЫМ надежным способом решения вполне конкретной поставленной задачи?
Например, что-нибудь про такую, сравнительно небольшую группу задач, связанную с обработкой FIFO или LIFO мусье слышал?
И как же мусье будет решать такие задачи? Или, таки, не будет в следствие НЕДОСТАТКА квалификации? Ну, так и туда тому мусье и дорога...

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


sphinx_mvВот такие "простейшие" соображения для ТАКИХ задач.

ПРостейшие недостатки:
1. юзание значения суррогата в сортитровке в не админских запросах. Необходимость контроля свойств, которых нет у реалтьных объектов.
2. Мой тот пример - о том что суррогаты не для этого и потому запрос не обязан давать правильный результат - использование не по назначеннию. Ить это така один пример. Где гарантии что не нашли другие.
3. Ограничение суррогата инкрементными. Кто-то сеня написал запрос, а завтра пришел другой, ну такой же бескромистный сторонник но GUID.

Нуно искать а нет для других. Юзание то не по назначению, которое сводится к обеспечинию уникальности.

В общем, предпочел бы не иметь дела с такими решения до последнего.

sphinx_mv
Вас смущал запрет?

Смущал ответ на то как помешать юзеру обойти этот запрет с помощью удаления записми и ввода ее по новой. Иначе какой-же это запрет?

sphinx_mvЯ изложил свою точку и аргументы, почему этот запрет должен иметь место.

Ну на конец-то свою точку зрения, а не истину не допускающую сомнений.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37725926
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfosphinx_mvКомбинация атрибутов, НЕ способная идентифицировать реляционное отношение, на роль КЛЮЧА рассматриваться в реляционной модели НЕ может... Соответственно, РЕАЛЬНОГО примера естественного ключа с Вашей стороны так и НЕ наблюдалось.

1. Ключ в РМД - уникальнность его атрибутов. То что там Вами не может рассматриваться это Ваши же и дела. Или Вы уже Дейтом себя возмоннили, чтобы указывать что там и как должно рассмариваться в РМД?


Приходит 10 "Ивановых Иванов Ивановичей", НЕ имеющих пенсионного номера - КАК их идентифицировать по ЭТОМУ номеру?
Даже комбинация с другими атрибутами для предложенного Вами варианта никогда НЕ будет гарантированно уникальна!!
vadiminfo2. Вы сами рассказав про помощь альтернативного, признали существование естественных первичных ключей. Или он не естесвенный, тада он опять суррогат и не поможет. Или он не ключ вообще по Вашему? Не реальный? Ну так даже не реальный естественный имеет преимущество, про которое шла речь.

Не надо приписывать мне то, чего Вы НЕ понимаете...
Есть НЕКОТОРЫЕ "природные" атрибуты, значения которых при их ОБЯЗАТЕЛЬНОМ наличии МОГУТ считаться уникальными с НЕКОТОРОЙ, даже ОЧЕНЬ высокой долей достоверности.
Еще раз специально для ВАС - НАЛИЧИЕ значений должно быть ОБЯЗАТЕЛЬНЫМ !
И при этом практически ЛЮБОЙ атрибут, который хоть как-то способен удовлетиворить этому условию по сути - СУРРОГАТ!
vadiminfo3. Суррогат тем более ниче не спосбен идентифицировать вне програмной среды: его там нет. Так че для демонстрации вышеоговоенного достоинсва достаточно, в которм было не про идентификацию.

Необязательный атрибут ТОЖЕ не может ничего идентифицировать - его НЕТ не только ВНЕ , но и ВНУТРИ программной среды...

И специально для некоторых строителей "детских песочниц" еще раз обращаю внимание: ЛЮБОЙ атрибут, который "в реальном мире" хоть как-то годится на роль "естественного ключа" внутри "детской песочницы", НА САМОМ деле за ее пределами является СУРРОГАТНЫМ ключем в системе, которая его эмитировала (для особо непонятливых - "выпустила").
Таким образом, это АВТОМАТИЧЕСКИ ОПРОВЕРГАЕТ тезис о невозможности существования суррогатов ЗА пределами информационной системы.
vadiminfo4. Если Вы не поняли до сих пор не поняли, это достоинство, кстати широко известное - на лекциях на 3 курсе обыкновенно читали, то могу выразить лишь недоумнение.

Теоретические познания о поведении сферических коней в жидком вакукме в реальной жизни мало применимы...
vadiminfoпропущено...

Вообще-то такой пример нужен для сравнения достоисвт естесвенных ключей между собой (какой луче Идетифицирует), либо с другими способами идентификации, но с сурогатом, который изначль может тока ВИРТУАЛЬНО, т.е. на РЕАЛЬНУЮ идентификацию прететендовал.

Однако, даже если бы перетендовал это было бы просто другое достоинство.

Достаточно уникальности для примера того достоинства естественных перед суррогатами.

Ну, и какая у Вас получилась "уникальность" для десятка отсутствующих значений Вашего "естественного первичного ключа"?
vadiminfoНа самом деле, Вы пытаетесь сказать что он не ключ.
Но удовлетворяет Ваш альтернативный ключ. Ну тот который у Вас помого суррогату не способному самостоятеельно. Для примера достоинства хватит.
Так и знал, что Вы не поймете, что сами себя и подловили с этими альтернативными.

Это Вы себя "подловили" на ПЛОХОМ Вашем примере - теперь юлите, как уж на раскаленной сковородке...

Альтернативный ключ - кандидат на ПК, но именно потому, что он ПЛОХОЙ кандидат он НЕ становится первичным ключом... Критериев непригодности - множество. Один из них - возможное отсутствие значения ключа для некоторых объектов, хотя для существующих значений у остальных объектов комбинация значений атрибутов ключа может являться уникальной...
В-общем, матчасть, батенька, матчасть...
vadiminfoпропущено...

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

Теоретик, блин!..
Чем ШИРЕ круг решаемых задач, тем МЕНЬШЕ для них подходит использование естественных ключей в качестве первичных.
Студентам третьего курса об этом ЗАБЫВАЮТ рассказать, что не удивительно - лекции читаю точно такие же "теорЭтики"...
А потом люди жалуются - "у нас новый сервер тормозит на элементарных запросах"...

Ну, а то, что "теоретики" НЕ В КУРСЕ, что производители реальных промышленных серверов РБД просто настоятельно НЕ рекомендуют использование в качестве значений ПК случайно генерируемых значений - это вообще документированный баг, котрый становится фичей...
vadiminfoПРостейшие недостатки:
1. юзание значения суррогата в сортитровке в не админских запросах.

С учетом того, что ПК используется (в-основном) для связи между данными РАЗНЫХ таблиц, а сортировка (ОБЫЧНО) выполняется по полям, котоорые вообще могут не быть ключами - аргумент крайне слабый...

Ну, а существование задач, где автоинкрементный ПК вполне может удовлетворять требованиям использования в качестве "сортировочного", опровергать будет только "крайний теоретик"...
vadiminfoНеобходимость контроля свойств, которых нет у реалтьных объектов.

Какие свойства нужно контролировать? Уникальность?
Ну, так это задача сотвествующего констрейнта, которая ДОЛЖНА выполняться при ЛЮБОМ типе ключа - хоть сурогатном, хоть естественном...

Для естественрого ключа "ручками" придется проверить, а правильно ли введено значение, а не ошиблись ли в при вводе ранее введенного значения, которй конфликтует с вновь вводимым, а если ошибка в старом - пофиксить значение и поправить ВСЕ ссылки на него и т.д...
Для суррогата нужно просто взять следующее значение - гарантия, что оно уникально приближается к "десяти девяткам"...
Даже если у кого-то кривые руки поменяли последовательность - какое дело до этого самому механизму?
И это исправляется простой заменой на новое корректное значение генератора - и работай дальше.
Уникальные консрэйнты позволят проверить на уникальность ввод повторов, и в случае ошибки предстоит поправить максимум значения в 2 записях - непосредственно конфликтующие значения альтернативных ключей в новой и в старой записях.
И - уж в котрый раз обращаю внимание! - НИКАКИХ "танцев с бубнами" вокруг ссылок по всем дочерним таблицам!
vadiminfo2. Мой тот пример - о том что суррогаты не для этого и потому запрос не обязан давать правильный результат - использование не по назначеннию. Ить это така один пример. Где гарантии что не нашли другие.

Если такая возможность для данной конкретной системы ДОКУМЕНТИРОВАНА, если список ДОПУСТИМЫХ операций и ОГРАНИЧЕНИЯ действий в системе ОПИСАНЫ - НИКАКИХ использований "не по назначению" при использовании значения суррогатного ключа для сортировок НЕТ! Система работает В СУГУБО ДОКУМЕНТИРОВАННОМ режиме!
И это, кстати, тоже матчасть...
vadiminfo3. Ограничение суррогата инкрементными. Кто-то сеня написал запрос, а завтра пришел другой, ну такой же бескромистный сторонник но GUID.

Ну и пусть приходит!
Выкинуть пинком под зад идиота, который БЕЗ согласования со всеми потребителями и обслуживающими службами начнет самовольно менять способ генерации ПК даже в самой маленькой табличке корпоративной БД весом даже всего в пару сотен гигабайт обойдется значительно дешевле возможных потерь данных и функционала, к которым может привести эта замена.
vadiminfoНуно искать а нет для других. Юзание то не по назначению, которое сводится к обеспечинию уникальности.

В общем, предпочел бы не иметь дела с такими решения до последнего.

Ну, и как Вы идеальное FIFO или LIFO обеспечите без использования автоинкрементного суррогата?
Ни одно ДРУГОЕ решение НЕ позволяет обработать "реального первого" или "реального последнего" в "реальном" порядке последовательности...
vadiminfoпропущено...

Смущал ответ на то как помешать юзеру обойти этот запрет с помощью удаления записми и ввода ее по новой. Иначе какой-же это запрет?

GRANT и REVOKE - главные команды при раздаче прав пользователям...
REVOKE DELETE на таблицу - и ни один пользователь без GRANT DELETE никогда не сможет ничего из этой таблицы удалить.
Одна ПРОСТАЯ команда - а решает столько реальных и надуманых проблем!..
vadiminfoпропущено...

Ну на конец-то свою точку зрения, а не истину не допускающую сомнений.
С точкой зрения можно не соглашаться...
Но когда точка зрения совпадает с объективной реальностью, объективной реальности сугубо без разницы, согласен С НЕЙ кто-нибудь, или нет - она просто больно бьет по голове. И правильно, кстати, делает - особенно, если чужой опыт ничему не учит...

Рассматрим несложный и вполне обычный сценарий...
Большая БД разделена на несколько архивных разделов, каждый из которых периодически архивируется и удаляется...
Оставим за скобками множественность вариантов стратегий разделения и архивирования.. Отметим только, что в каждом из архивов в таблицах как минимум прописаны ссылки на значения ПК. И как только в "оперативной" БД поменяли значения ПК или удалили записи в мастер-таблицах, данные из архивов восстановлению практически НЕ ПОДЛЕЖАТ даже в случае крайней необходимости!
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37726552
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvПриходит 10 "Ивановых Иванов Ивановичей", НЕ имеющих пенсионного номера - КАК их идентифицировать по ЭТОМУ номеру?
Даже комбинация с другими атрибутами для предложенного Вами варианта никогда НЕ будет гарантированно уникальна!!


Вы есче спросите как им будут в ПФ пенсию начислять, када придут на них индивидуальные сведения. В ИС страховой обязателен. Без него их не принимают в РФ. Заставят завести страховой, а потом приходить. Говорят, в РФ вообще всем собираются давать страховые с дества.


sphinx_mvЧем ШИРЕ круг решаемых задач, тем МЕНЬШЕ для них подходит использование естественных ключей в качестве первичных.


В узком круге признаете использование естественных? Ну стало быть, то "хоть одно" достоинство у естесвенных есть, раз они сами есть.

Впрочем, Вы признали их использование, а не просто одно какое-то достоинство.




sphinx_mvКакие свойства нужно контролировать? Уникальность?


Не уникальность, а конкрентные значения. Правильно ли там 5 или все все же должно быть 10 на самом деле.
Раз в запросе конкретные значения. Например, запрос показал непонятный результат.


sphinx_mvЕсли такая возможность для данной конкретной системы ДОКУМЕНТИРОВАНА, если список ДОПУСТИМЫХ операций и ОГРАНИЧЕНИЯ действий в системе ОПИСАНЫ - НИКАКИХ использований "не по назначению" при использовании значения суррогатного ключа для сортировок НЕТ! Система работает В СУГУБО ДОКУМЕНТИРОВАННОМ режиме!

Ну как же. Он предназначен для уникальности. Это типа СУБД поддерживает: не допускаются случаи дубля при любых сложных транзакциях. Остальное не по назначению в том смысле , что СУБД это специально не поддерживает, а не в смысле документации разработчика. Пример тот показал, что может быть неверный результат.


sphinx_mvНу и пусть приходит!
Выкинуть пинком под зад идиота, который БЕЗ согласования со всеми потребителями и обслуживающими службами начнет самовольно менять способ генерации ПК даже в самой маленькой табличке корпоративной БД весом даже всего в пару сотен гигабайт обойдется значительно дешевле возможных потерь данных и функционала, к которым может привести эта замена.

Ну данные то он может и не потеряет. А вот если от замены суррогатов инкременты на другие значения приводят к изменению работы запросов, то это уже выглядит как излишняя неопределенность программного обеспечения или как сдерживающий для нового проектировщика фактор. Мало ли. Мож к тому времени СУБД много полезных фич для GUID надыбает.


sphinx_mvНу, и как Вы идеальное FIFO или LIFO обеспечите без использования автоинкрементного суррогата?
Ни одно ДРУГОЕ решение НЕ позволяет обработать "реального первого" или "реального последнего" в "реальном" порядке последовательности...

На случай отсутсвия других решений в каких-то ситуациях, я и оставил - "до последнего". Вопрос, оптимальности достоинств и недостатков.

sphinx_mvGRANT и REVOKE - главные команды при раздаче прав пользователям...
REVOKE DELETE на таблицу - и ни один пользователь без GRANT DELETE никогда не сможет ничего из этой таблицы удалить.
Одна ПРОСТАЯ команда - а решает столько реальных и надуманых проблем!..

Т.е. ради запрета изменеия значения суррогата запретить удаление вообще. Возможно, это не адекватно: дороговато за запрет суррогата. Все таки удаление правомерная операция в БД в общем случае.

sphinx_mvРассматрим несложный и вполне обычный сценарий...
Большая БД разделена на несколько архивных разделов, каждый из которых периодически архивируется и удаляется...
Оставим за скобками множественность вариантов стратегий разделения и архивирования.. Отметим только, что в каждом из архивов в таблицах как минимум прописаны ссылки на значения ПК. И как только в "оперативной" БД поменяли значения ПК или удалили записи в мастер-таблицах, данные из архивов восстановлению практически НЕ ПОДЛЕЖАТ даже в случае крайней необходимости!
Не знаю насколько он обычный. Такого не было ни разу.
За скобками оставлять "за скобками множественность вариантов стратегий разделения и архивирования", скорей всего, не лучшее из лучшего. Полагаться на неизменность ПК не смотря ни накие меры при такой цене их изменения, по любасу, выглядит как слишком агрессивный подход.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37727837
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfosphinx_mvПриходит 10 "Ивановых Иванов Ивановичей", НЕ имеющих пенсионного номера - КАК их идентифицировать по ЭТОМУ номеру?
Даже комбинация с другими атрибутами для предложенного Вами варианта никогда НЕ будет гарантированно уникальна!!

Вы есче спросите как им будут в ПФ пенсию начислять, када придут на них индивидуальные сведения. В ИС страховой обязателен. Без него их не принимают в РФ. Заставят завести страховой, а потом приходить. Говорят, в РФ вообще всем собираются давать страховые с дества.

КОД, которого НЕТ "у всех", и когда он у них появится - неизвестно (и появится ли вообще), использовать как ИДЕНТИФИКАТОР - ПРИНЦИПИАЛЬНО НЕВОЗМОЖНО!!!
vadiminfosphinx_mvЧем ШИРЕ круг решаемых задач, тем МЕНЬШЕ для них подходит использование естественных ключей в качестве первичных.


В узком круге признаете использование естественных? Ну стало быть, то "хоть одно" достоинство у естесвенных есть, раз они сами есть.

Впрочем, Вы признали их использование, а не просто одно какое-то достоинство.


Существование чего-либо само по себе НЕ является ни достоинством, ни недостатком...
Достоинсто или недостаток могут быть определены ТОЛЬКО в сравнении ...
Но третьекурсники-теоретики об этом, естественно, не знают...
vadiminfosphinx_mvКакие свойства нужно контролировать? Уникальность?


Не уникальность, а конкрентные значения. Правильно ли там 5 или все все же должно быть 10 на самом деле.
Раз в запросе конкретные значения. Например, запрос показал непонятный результат.

А вот не надо писать запросы, смысла которых Вы не понимаете - и не будет непонятных Вам результатов!
vadiminfosphinx_mvЕсли такая возможность для данной конкретной системы ДОКУМЕНТИРОВАНА, если список ДОПУСТИМЫХ операций и ОГРАНИЧЕНИЯ действий в системе ОПИСАНЫ - НИКАКИХ использований "не по назначению" при использовании значения суррогатного ключа для сортировок НЕТ! Система работает В СУГУБО ДОКУМЕНТИРОВАННОМ режиме!

Ну как же. Он предназначен для уникальности. Это типа СУБД поддерживает: не допускаются случаи дубля при любых сложных транзакциях. Остальное не по назначению в том смысле , что СУБД это специально не поддерживает, а не в смысле документации разработчика. Пример тот показал, что может быть неверный результат.

Выполнение недокументированных действий и предъявление после этого претензий по поводу неправильного результата, полученного в результате этих действий - это персональный непрофессиональный бред третьекурсников-теоретиков.
vadiminfosphinx_mvНу и пусть приходит!
Выкинуть пинком под зад идиота, который БЕЗ согласования со всеми потребителями и обслуживающими службами начнет самовольно менять способ генерации ПК даже в самой маленькой табличке корпоративной БД весом даже всего в пару сотен гигабайт обойдется значительно дешевле возможных потерь данных и функционала, к которым может привести эта замена.

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

Чукчи-третьекурсники-теоретики читать по-русски не умеют?
ЛЮБОЕ, даже самое незначительное изменение функционала, ЛЮБОЙ системы НЕЛЬЗЯ выполнять БЕЗ учета ВСЕХ последствий!
vadiminfoМало ли. Мож к тому времени СУБД много полезных фич для GUID надыбает.

Ну, уж на третьем-то курсе теоретики могли бы и узнать, ПОЧЕМУ случайные последовательности в ПК плохо сказываются, как минимум, на производительности серверов БД...
vadiminfosphinx_mvНу, и как Вы идеальное FIFO или LIFO обеспечите без использования автоинкрементного суррогата?
Ни одно ДРУГОЕ решение НЕ позволяет обработать "реального первого" или "реального последнего" в "реальном" порядке последовательности...

На случай отсутсвия других решений в каких-то ситуациях, я и оставил - "до последнего". Вопрос, оптимальности достоинств и недостатков.

Есть КОНКРЕТНАЯ задача... Есть КОНКРЕТНОЕ решение - САМОЕ ЛУЧШЕЕ решение из ВСЕХ возможных...
На третьем курсе не учили, что "ЛУЧШЕЕ" == "обладающее оптимальным соотношением ДОСТОИНСТВ и НЕДОСТАТОКОВ по сравнению с прочими"?
vadiminfosphinx_mvGRANT и REVOKE - главные команды при раздаче прав пользователям...
REVOKE DELETE на таблицу - и ни один пользователь без GRANT DELETE никогда не сможет ничего из этой таблицы удалить.
Одна ПРОСТАЯ команда - а решает столько реальных и надуманых проблем!..

Т.е. ради запрета изменеия значения суррогата запретить удаление вообще. Возможно, это не адекватно: дороговато за запрет суррогата. Все таки удаление правомерная операция в БД в общем случае.

Третьекурсники-теоретики за деревьями леса не видят!
Что будет с Вашими "естественными" ключами, когда кто ни попадя начнет удалять записи - не расскажете?
Наверное, вряд ли - чтобы рассказать, надо иметь понятие... И как только зачеты и экзамены по предмету были сданы?!

Правомерность операции НЕ означает, что это действие могут выполнять все кому не лень.
А те, кто ИМЕЕТ право - ОТВЕЧАЮТ за те действия, которые выполняют.
И прекратите демонстрировать достоинства Вашей системы "дурак" - не впечатляет...
vadiminfosphinx_mvРассматрим несложный и вполне обычный сценарий...
Большая БД разделена на несколько архивных разделов, каждый из которых периодически архивируется и удаляется...
Оставим за скобками множественность вариантов стратегий разделения и архивирования.. Отметим только, что в каждом из архивов в таблицах как минимум прописаны ссылки на значения ПК. И как только в "оперативной" БД поменяли значения ПК или удалили записи в мастер-таблицах, данные из архивов восстановлению практически НЕ ПОДЛЕЖАТ даже в случае крайней необходимости!
Не знаю насколько он обычный. Такого не было ни разу.

То, что у ВАс такого "не было ни разу" - даже не подвергалось сомнению ДО того, как был приведен пример...
Держать пол-терабайта архивных данных на каждый год (из почти десятка лет) архивов в "рабочей" базе на активном сервере - лично мне как-то не особо нравится...
vadiminfoЗа скобками оставлять "за скобками множественность вариантов стратегий разделения и архивирования", скорей всего, не лучшее из лучшего.

Стратегий разделения на части БОЛЬШИХ табиц существует МНОЖЕСТВО! Способов РЕАЛИЗАЦИИ - еще больше!
И ни одна из них НЕ является "лучшей из лучших". При этом каждая их них МОЖЕТ оказаться наиболее приемлемая во вполне определенных условиях.
vadiminfoПолагаться на неизменность ПК не смотря ни накие меры при такой цене их изменения, по любасу, выглядит как слишком агрессивный подход.
Слишком "агресивный подход"?! Кому-то зачем-то нужно "полагаться"?! Ну, для "детских песочниц" - возможно...
Вот только в "больших системах" никто ни на что не должен "полагаться" и стратегия защиты данных обязана быть максимально "агрессивной" - это чрезвычайно сильно облегчает жизнь...
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37728284
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mv Существование чего-либо само по себе НЕ является ни достоинством, ни недостатком...
Достоинсто или недостаток могут быть определены ТОЛЬКО в сравнении ...
Но третьекурсники-теоретики об этом, естественно, не знают...

Ну если существут, но такое достоинство в силу каких-либо обстоятельств не очевидно, то можно проверить:

Создать две таблы. В одной номер, его страхового, прав, карточки или еще чего. Луче пороще, чтобы не ошибиться нри наборе. Ну и ждугие каки-нить атрибуты. Объявить номер первичным ключем. Втораю все тоже, но первичный ключ, суррогат.
Занести себя дважды в перву и вторую таблу.

sphinx_mvА вот не надо писать запросы, смысла которых Вы не понимаете - и не будет непонятных Вам результатов!

Понятные запросы в силу, например, потери информации в БД могут давать не понятные результаты.

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

Возможно, неправильные результаты могут быть и при выполнении "документированеных" действий.



sphinx_mvА те, кто ИМЕЕТ право - ОТВЕЧАЮТ за те действия, которые выполняют.

Ну это означает, что средствами БД полностью запретить не получилось. Раздача прав, это уже не ОЦ, но и ея не хватило, нужен.
административный запрет. Это не интерсно.

sphinx_mvТо, что у ВАс такого "не было ни разу" - даже не подвергалось сомнению ДО того, как был приведен пример...
Держать пол-терабайта архивных данных на каждый год (из почти десятка лет) архивов в "рабочей" базе на активном сервере - лично мне как-то не особо нравится...

У меня еще не бывало, чтобы из-за смены ПК, либо вообще чего бы то ни было в оперативной БД, архивы не восстанавливались.


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

Нет, кто-то, конечно, может дропнуть ссылочные ОЦ ради архивации. Остается пожелать иму удачи.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37728616
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfosphinx_mv Существование чего-либо само по себе НЕ является ни достоинством, ни недостатком...
Достоинсто или недостаток могут быть определены ТОЛЬКО в сравнении ...
Но третьекурсники-теоретики об этом, естественно, не знают...

Ну если существут, но такое достоинство в силу каких-либо обстоятельств не очевидно, то можно проверить:

Создать две таблы. В одной номер, его страхового, прав, карточки или еще чего. Луче пороще, чтобы не ошибиться нри наборе. Ну и ждугие каки-нить атрибуты. Объявить номер первичным ключем. Втораю все тоже, но первичный ключ, суррогат.
Занести себя дважды в перву и вторую таблу.

А че только себя?
И че только два раза?
И почему только в две таблицы? Самое "счастье" начнется, когда пойдут ссылки (хотя бы одна) на любую из таблиц

Ограничиваемся следующими атрибутами:
- ФИО (для простоты);
- пенсионный номер;
- номер паспорта.

В первой таблице (А) первичный ключ - пенсионный номер, альтернативный - номер паспорта...
Во второй таблице (Б) добавляем суррогатный ключ (даже не принципиально автоинкремент, GUID или еще какой-нибудь) и два альтернативных ключа: 1) по пенсионному номеру и 2) по номеру паспорта...

Теперь начинаем "придумываем" примеры. Номера паспортов и пенсионные номера возьмем "с потолка"...

1) Иванов Иван Иванович, пенсионного номера нет (т.к. не обязательное поле), номер паспорта АА111 (условно)
2) Сидоров Сидор Сидорович, пенсионный номер 12345, паспорт ББ123
3) Петрова Марфа Семеновна, пенсионного номера нет, паспорт ВВ432 (было месяц назад)
4) Хлопушкина Варвара Петровна, пенсионный номер 56765, паспорт ВВ567
5) Петрова Марфа Семеновна (п.3) вышла замуж и сменила фамилию на Неизвестную, номер ее паспорта соответственно тоже изменился на ГГ567. В добавок она получила пенсионный номер 98754

Проводим "разбор полетов"...
В таблице А с пенсионным номером в качестве ПК:
- Не можем зарегистрировать данные по пп. 1 и 3...
- Не можем выявить, что ранее занесенный в систему п.3 сменила фамилию, поменяла документы и получила новый пенсионный номер.
Итого - в самом простом случае 2 разных варианта отказов; общее количество отказов - 3 из 5...

В таблице Б с суррогатным ПК:
- Повторение проблемы с п. 3 (как и для таблицы А)
Итого - 1 вариант отказа; общее количество отказов - 1 из 5...

Обе таблицы отработают попытку ввода повторяющегося пенсионного номера или номера паспорта.
Обе таблицы пропустят ввод ошибочного значения в пенсионном номере или в номере паспорта.

Для исправления неправильно введенного пенсионного номера для таблицы А необходимо провести каскадные изменения всех связанных подчиненных таблиц.

Для исправления неправильно введенного пенсионного номера в таблице Б необходимо изменить значения поля "пенсионный номер" для единственной записи единственной таблицы, где допущена эта ошибка.

Исправления неверно введенного номера паспорта для обоих вариантов количество операций одинаково - изменение значения единственного поля "номер паспорта" для единственной записи...

Таким образом, на этом простом примере мы получили результат, по которому, во-первых, количество разных вариантов ошибок системы на естественных ключах БОЛЬШЕ, чем количество вариантов ошибок системы на суррогатных ключах, и, во-вторых, ошибки, возникающие при работе с суррогатными ключами НЕ ХУЖЕ (точно такие же и в тех же самых местах), чем в системе с естественными ключами.

Про коллизии естественных ключей - это к матчасти...

vadiminfosphinx_mvА вот не надо писать запросы, смысла которых Вы не понимаете - и не будет непонятных Вам результатов!

Понятные запросы в силу, например, потери информации в БД могут давать не понятные результаты.

Вы бы определились: Вы рассматриваете случайную внезапную аварию аппаратуры сервера БД или целенаправленные действия "особо инициативного" пользователя-идиота?
vadiminfosphinx_mvВыполнение недокументированных действий и предъявление после этого претензий по поводу неправильного результата, полученного в результате этих действий - это персональный непрофессиональный бред третьекурсников-теоретиков.

Возможно, неправильные результаты могут быть и при выполнении "документированеных" действий.

Неправильные результаты в ответ на "документированные" действия пользователя - наличие ошибки, допущенной при реализации системы. Тестирование информационных систем, выявление ошибок и их устранение - НЕ тоже самое, что неправильные действия пользователя.
Это примерно то же самое, что перебегать дорогу в неположенном месте перед быстро несущимся потоком машин, а потом жаловаться, что, типа, "задавили"...
vadiminfosphinx_mvА те, кто ИМЕЕТ право - ОТВЕЧАЮТ за те действия, которые выполняют.

Ну это означает, что средствами БД полностью запретить не получилось. Раздача прав, это уже не ОЦ, но и ея не хватило, нужен.
административный запрет. Это не интерсно.

А как интересно Вы сможете применить это запрет?
Отключите систему от электричества и локальной сети и зальете ее бетоном в котловане?
А другого способа, собственно, не существует...
vadiminfosphinx_mvТо, что у ВАс такого "не было ни разу" - даже не подвергалось сомнению ДО того, как был приведен пример...
Держать пол-терабайта архивных данных на каждый год (из почти десятка лет) архивов в "рабочей" базе на активном сервере - лично мне как-то не особо нравится...

У меня еще не бывало, чтобы из-за смены ПК, либо вообще чего бы то ни было в оперативной БД, архивы не восстанавливались.

На это только и можно сказать "никогда не говори никогда"... У Вас все еще впереди...
vadiminfoВ Оракле есть секционирование и поддержка "быстрой архивации", в плане сервера: в БД меняется кое-что в словаре и файлы с данными не в словаре БД. При этом, однако, Оракл контролирует отсутсвик каких либо зависмостей в словаре БД архивирумого от всего остального в БД (транспортируемые табличные пространства).

Я не специалист по Oracle. Соответственно, несколько вопросов...

А связи между РАЗНЫМИ серверами БД, обслуживающие РАЗНЫЕ системы разных производителей, Oracle тоже "отслеживает"?
А если это связь с серверами другого типа? А если "других типов" больше двух?
Честно говоря, "терзают смутные сомнения"...

Как в-прочем и в случае, когда Вы заархивируете сегмент данных, удалите его, потом поменяете ПК в мастер-таблице, на которую ссылается таблица из архивированного сегмента... А потом через некоторое время (месяц, пол-года, год) Вам надо будет поднять данные из архива... Просто внятно объясните, КАК в этом восстановленном архивном сегменте "внезапно пофиксятся ссылки"?
vadiminfoНет, кто-то, конечно, может дропнуть ссылочные ОЦ ради архивации. Остается пожелать иму удачи.
Зачем обязательно "дропать ссылки"?
Я вполне могу "пожелать удачи" даже тем, кто считает, что "изменение ПК ни к чему плохому не приведет"...
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37728955
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvА че только себя?
И че только два раза?
И почему только в две таблицы? Самое "счастье" начнется, когда пойдут ссылки (хотя бы одна) на любую из таблиц

Этого достаточно чтобы проверить существование данного преимущества в принципе.

sphinx_mvОграничиваемся следующими атрибутами:
…..


Нет уж извините.
Если бы я утверждал, что естественные во всех проектах луче, тада с удовольствием прочел бы Ваш пример.

Я приводил примеры, тока пока считал, что Вы утверждаете, что естественные ключи никада не могут использовать.
Как тока Вы сказали, что в "узком круге" они используются необходимость в примерах отпала.

Не утверждалось, что это достоинство а так же в купе с другими перевесят все недостатки во всех проектах при сравнениее с суррогатами.

sphinx_mvНеправильные результаты в ответ на "документированные" действия пользователя - наличие ошибки, допущенной при реализации системы.
Ну вот видите. Баги еще не отменили. Возможно, программа, которая не имеет ошибок не программа.

sphinx_mvА как интересно Вы сможете применить это запрет?

Так я и не собирался «применть» это запрет. Вы же говорили, что мол нуно это запретить и все такое. Вы же спрашивали, что меня смущает в таком запрете. Вот в частности, применение и смущает.

sphinx_mvА связи между РАЗНЫМИ серверами БД, обслуживающие РАЗНЫЕ системы разных производителей, Oracle тоже "отслеживает"?
А если это связь с серверами другого типа? А если "других типов" больше двух?
Честно говоря, "терзают смутные сомнения"...

У каждого проекта достоинства и не достатки могут иметь разный вес.

(Я, конечно, в гетерогенной среде, надеюся заниматься вопросами тока на стороне Оракла, но парнями рулящими в зооапрке СуБд искренне восхищаюсь).

sphinx_mv
Как в-прочем и в случае, когда Вы заархивируете сегмент данных, удалите его, потом поменяете ПК в мастер-таблице, на которую ссылается таблица из архивированного сегмента... А потом через некоторое время (месяц, пол-года, год) Вам надо будет поднять данные из архива... Просто внятно объясните, КАК в этом восстановленном архивном сегменте "внезапно пофиксятся ссылки"?

Не ссылается ни на что в том проекте. Это значит в плане сравнения достоинств и недостатков, что не проявились некоторые недостатки, связанные с изменением значения ПК в данном проекте. Потому их вес при сравнении уменьшился в данном случае.

sphinx_mvЗачем обязательно "дропать ссылки"?


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

Этого достаточно чтобы проверить существование данного преимущества в принципе.

Существование преимуществом НЕ является...
Существование преимущества НЕ демонстрируется...
vadiminfosphinx_mvОграничиваемся следующими атрибутами:
…..


Нет уж извините.
Если бы я утверждал, что естественные во всех проектах луче, тада с удовольствием прочел бы Ваш пример.

Не извиняю...
Пример был предложен Вами!
Какой пример предлагался - для того примера и была продемострирована НЕЭФФЕКТИВНОСТЬ использования естесвенных первичных ключей...
vadiminfoЯ приводил примеры, тока пока считал, что Вы утверждаете, что естественные ключи никада не могут использовать.
Как тока Вы сказали, что в "узком круге" они используются необходимость в примерах отпала.

Не утверждалось, что это достоинство а так же в купе с другими перевесят все недостатки во всех проектах при сравнениее с суррогатами.

Естественные ключи КРАЙНЕ ПЛОХО использовать.
И уже хотя бы потому, что они МОГУТ измениться - и плакали связи между таблицами...

Никакие достоинства естественных первичных ключей (даже в купе с достоинствами всех прочих компонентов системы) НИКОГДА не смогут перевесить преимуществ суррогатных ключей в купе с ТЕМИ ЖЕ достоинствами ТЕХ ЖЕ САМЫХ компонентов ТОЙ ЖЕ САМОЙ системы - у суррогатов НЕДОСТАТКОВ меньше при большем количестве собственных ДОСТОИНСТВ... И это соотношение было продемонстрировано непосредственно при разборе предложенного Вами примера.
vadiminfosphinx_mvНеправильные результаты в ответ на "документированные" действия пользователя - наличие ошибки, допущенной при реализации системы.
Ну вот видите. Баги еще не отменили. Возможно, программа, которая не имеет ошибок не программа.

Ошибки в программе НИКАКОГО отношения к действиям пользователя НЕ имеют.
Забивать гвозди работающим мобильным телефоном ширпотребовского класса (в котором в принципе могут быть глюки) можно, но нельзя после этого требовать, чтобы телефон после этого оставался в рабочем состоянии...
vadiminfosphinx_mvА как интересно Вы сможете применить это запрет?

Так я и не собирался «применть» это запрет. Вы же говорили, что мол нуно это запретить и все такое. Вы же спрашивали, что меня смущает в таком запрете. Вот в частности, применение и смущает.

Небольшая, простая и изолированная система МОЖЕТ допускать все, что угодно пользователю.
Но с превышением некоторого порога в зависимости от типа решаемых задач (порог, кстати, очень небольшой) позволять пользователю делать все, что хочет его левая пятка, уже становится опасным. И сразу же начинаются запреты и ограничения!

Не учитывать при проектировании системы возможностей роста и связанных с этим трудностей роста - не правильно...
А все, что "не правильно" - не допустимо...
vadiminfosphinx_mvА связи между РАЗНЫМИ серверами БД, обслуживающие РАЗНЫЕ системы разных производителей, Oracle тоже "отслеживает"?
А если это связь с серверами другого типа? А если "других типов" больше двух?
Честно говоря, "терзают смутные сомнения"...

У каждого проекта достоинства и не достатки могут иметь разный вес.

Разный вес - это только в начале, пока система не разрослась...
А вот как только начинаем расти - все!.. Туши свет... И менять что-либо в архитектуре системы - смерти подобно...
Не проще ли сразу принять НАИБОЛЕЕ неподверженное "эксцессам" решение? Тем более, что разницы в стоимости решений при выборе типов ПК и допустимых операций над ними вполне известна еще на этапе анализа предметной области. И эта стоимость ОЧЕНЬ НЕ в пользу выбора естественных ключей в качестве ПК или разрешения операций по модификации и удалению ПК в информационной системе...
vadiminfosphinx_mvКак в-прочем и в случае, когда Вы заархивируете сегмент данных, удалите его, потом поменяете ПК в мастер-таблице, на которую ссылается таблица из архивированного сегмента... А потом через некоторое время (месяц, пол-года, год) Вам надо будет поднять данные из архива... Просто внятно объясните, КАК в этом восстановленном архивном сегменте "внезапно пофиксятся ссылки"?

Не ссылается ни на что в том проекте. Это значит в плане сравнения достоинств и недостатков, что не проявились некоторые недостатки, связанные с изменением значения ПК в данном проекте. Потому их вес при сравнении уменьшился в данном случае.

Вот видите - Вы обсуждаете вкус ананасов, ни разу их не попробовав...
В Вашем проекте данные не связаны... Но Вы утверждаете, что "проблем со связями не будет"...
БУДУТ!.. ОБЯЗАТЕЛЬНО БУДУТ! Когда связи появятся...
А когда понадобится поддерживать логическую связность данных не просто на разных серверах, но и на разных платформах - произвольное изменение и удаление ПК вызовет СТОЛЬКО проблем, что в пору будет застрелиться... Из веника...
vadiminfosphinx_mvЗачем обязательно "дропать ссылки"?


Не получится, скорее всего, быстрая архивация (и быстрая же разархивация), если есть какие-то ссылки в нен тока объектов, но и табличных пространсв содержащих эти объекты между на что либо в БД, что не попадает в архив. А внешний ключ прописан в словаре. Поэтому как убрать из словоря, не дропая?
Забавно...
Т.е, Вы пожелали успехов при "дропании ссылок" лично себе?
Ведь Вам как-то удается выполнять все эти операции по архивированию/удалению/восстановлению данных, а БЕЗ удаления ссылок все это невозможно...
А! Вспомнил!.. В Вашем проекте ССЫЛОК НЕТ!!!
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37729371
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvСуществование преимущества НЕ демонстрируется...

Ну с етесвенным ключем не ввели копию объектов, а сурогатным ввели. Стало быть демонстрируется именно тока одно преимущество. А не превосходство естесвенного пред суррога по сравнеению всех достоинсв и не достатков.


sphinx_mvПример был предложен Вами!

Исключимтельно с целью демонстрации существования естественных первичных ключей в ИС, а не их преимущества. И не думал проводить полное сравнение достоинств и недостатков. Больше ничего. Приводил тока потому поскоку думал, что Вы отрицаете что естесвенные вообще могут использоваться. А не отрицаете пример и не нужен.

sphinx_mv....
И уже хотя бы потому, что они МОГУТ измениться - и плакали связи между таблицами...


На то есть ОЦ внешний ключ. А если как в Аксцессе поддерживается каскадное одновление, то роль значение неизменности уменьшается. Имеет значение вес этого недостака "изменичивость" в конретных ситуациях.

Что до потери. Так есче преимущество естесвенных: естесвенный внешний снижает риски издержек на востанговление связи в некоторых случаях.

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

sphinx_mv....
Никакие достоинства естественных первичных ключей (даже в купе с достоинствами всех прочих компонентов системы) НИКОГДА не смогут перевесить преимуществ суррогатных ключей в купе с ТЕМИ ЖЕ достоинствами ТЕХ ЖЕ САМЫХ компонентов ТОЙ ЖЕ САМОЙ системы - у суррогатов НЕДОСТАТКОВ меньше при большем количестве собственных ДОСТОИНСТВ... И это соотношение было продемонстрировано непосредственно при разборе предложенного Вами примера.

Это утверждение звучит как теорема, обладающая всеобщностью (НИКОГДА). Стало быть не может быть доказана разбором примеров. Этими раборами может быть доказано только, что это утверждение пока не опровергнуто.
Тем более в моем примере страховые были у всех. Без страховых там на работу не брали. Вы говорили что не у всех (Необязательное). Это вообще разные примеры.

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

Особенно если юзаешь БД в Аксцессе. В Оракле нет каскадного обновления на уровне системы, а попытки организвать с помощью триггеров, могут привести к взаимным блокировкам. Тем ни менее видел и на Оракле БД с естесвенными ключами.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37729948
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfosphinx_mvСуществование преимущества НЕ демонстрируется...

Ну с етесвенным ключем не ввели копию объектов, а сурогатным ввели. Стало быть демонстрируется именно тока одно преимущество. А не превосходство естесвенного пред суррога по сравнеению всех достоинсв и не достатков.

А вот не надо бредить!
Использование суррогатных первичных ключей НЕ отменяет наличие альтернативных естественных ключей!
Просто естественные ключи НЕ используются в качестве первичных - ВОТ И ВСЯ РАЗНИЦА в информационной модели!
Соответственно, ввести дубликат значения атрибута или группы атрибутов, которые представляют собой альтернантивный ключ НЕ получится даже при использовании суррогатного ПК.

И не надо забывать, что в систему НЕ УДАЛОСЬ добавить объект, который ДОЛЖЕН был быть добавлен, но для которого отсутствовало значение атрбута, выбранного в качестве первичного ключа - автоматически указывает на НЕВЕРНЫЙ выбор ключа.
vadiminfoНапример, админ отключил связь и дропнул по ошибке пол родительской таблы. А в дочерний море ссылается на это. В случае естесвенного, достаточно восстановить родительскую. А в случае суррогата это может иметь драмматический характер, если дочерняя большая, хотя родительская и малая.

...А еще админ может сжечь архивные носители и отформатировать диски на сервере...
Менее драмматической ситуации с админом-идиотом представить себе невозможно...

Никакой разницы в описаной Вами "клинической" картине между суррогатными и естественными первичными ключами нет!
Что там, что там нужно восстанавливать мастер-таблицу... И что там, что там надо будет проверять корректность связей.
И хорошо, если не придется поднимать "бумажные" первоисточники - и тоже в ОБОИХ случаях.
vadiminfosphinx_mv....
Никакие достоинства естественных первичных ключей (даже в купе с достоинствами всех прочих компонентов системы) НИКОГДА не смогут перевесить преимуществ суррогатных ключей в купе с ТЕМИ ЖЕ достоинствами ТЕХ ЖЕ САМЫХ компонентов ТОЙ ЖЕ САМОЙ системы - у суррогатов НЕДОСТАТКОВ меньше при большем количестве собственных ДОСТОИНСТВ... И это соотношение было продемонстрировано непосредственно при разборе предложенного Вами примера.

Это утверждение звучит как теорема, обладающая всеобщностью (НИКОГДА). Стало быть не может быть доказана разбором примеров. Этими раборами может быть доказано только, что это утверждение пока не опровергнуто.
Тем более в моем примере страховые были у всех. Без страховых там на работу не брали. Вы говорили что не у всех (Необязательное). Это вообще разные примеры.

Пенсионных номера "ОСНОВНЫМ идентификатором" еще не стал, да и официально признан как (возможный) "основной идентификатор" совсем недавно - ГОДА НЕ ПРОШЛО! Соответствующее распоряжение было подписано 15 апреля 2011 г...
Для "некоторых категорий" работников наличие пенсионного номера стало обязательным вообще всего лишь 3 (три!) месяца назад.
Соотвественно, "не брать без пенсионого номера" ДО этого времени никто НЕ мог... Даже точнее - НЕ имели права...

Я даже больше скажу - ОНИ обязаны брать БЕЗ пенсионого номера ДАЖЕ СЕЙЧАС !
Читайте ДОКИ - они РУЛЕС!
===
http://news2.ru/story/305402/
...
Согласно закону об индивидуальном (персонифицированном) учете свидетельства обязательного пенсионного страхования выдаются после начала гражданином трудовой деятельности: работодатель , начисляющий зарплату или заключивший гражданско-правовой договор (подряда и др.), подает соответствующие сведения в Пенсионный фонд России для открытия счета. Самостоятельно получить такое свидетельство могут только индивидуальные предприниматели, адвокаты, частнопрактикующие нотариусы и т.п.
...
===
Попрете ПРОТИВ ЗАКОНА ?!

Требования, выходящие ЗА рамки действующих юридических норм - НАРУШЕНИЕ, за которое, кстати, можно и получить "по голове"... Соотвественно, ваш пример - это "сферический конь в эидком вакууме"...
vadiminfoК тому же в общем случае, где гарантия, что завтра кто-то не найдет убийсвенного примера для суррогатов?
Потому, думау, принимать данную теорему на веру все еще преждевременно.

Не выйдет! Реляционной теории уже 40 лет. За это время вполне можно было бы и "наработать негатив" по поводу суррогатов...
Но, почему-то, вместо этого "нарабатывается негатив" по поводу естественных ключей...
vadiminfoОсобенно если юзаешь БД в Аксцессе. В Оракле нет каскадного обновления на уровне системы, а попытки организвать с помощью триггеров, могут привести к взаимным блокировкам. Тем ни менее видел и на Оракле БД с естесвенными ключами.
О, да! Акцесс в качестве примера "большой промышленной СУБД" - это сильно!..

А по поводу "видел/не видел"... Ну, я "ВАЗ" видел... Вроде бы даже "ездит"...
Но (почему-то) "Мерседес" нравится больше...
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37730074
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfoК тому же в общем случае, где гарантия, что завтра кто-то не найдет убийсвенного примера для суррогатов?
Мм.. вообще-то такую гарантию без проблем найдёт вменяемый первокурсник. В силу очевидности простого рассуждения: суррогаты являются дополнением к "естественной" схеме, поэтому любой "убийственный пример для суррогатов" либо будет таким же для "естественных", либо решается методами "естественных" и убийственным не является.

vadiminfoТем ни менее видел и на Оракле БД с естесвенными ключами.
Ага, я до сих пор вздрагиваю, когда вспоминаю базу одной разрекламированной фирмы по торговле дублёнками. А слова "первичный ключ из двенадцати полей" стали просто-таки мемом.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37730367
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvИспользование суррогатных первичных ключей НЕ отменяет наличие альтернативных естественных ключей!


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

Моно на последок по вопросу отметить, что, возможно, просматривать при вводе значений на уникальность два ключа и один не вседа одно и то же в плане производительности. Т.е. нельзя исключать придется остаться кому то одному.

То что естесвенный, возможно, может выглядеть в МД естесвенней естесвенного в видн довеска к суррогату, я уже даже Вам не говорю.


sphinx_mvНикакой разницы в описаной Вами "клинической" картине между суррогатными и естественными первичными ключами нет!
Что там, что там нужно восстанавливать мастер-таблицу... И что там, что там надо будет проверять корректность связей.
И хорошо, если не придется поднимать "бумажные" первоисточники - и тоже в ОБОИХ случаях.


Естесвенный:
в родительской - A122, AC12, ....-- идентификаторы приборов прописанные в доке.

В дочерней имзмерения этих приборов
внешние ключи A122, AC12, ....--

Произошла потеря инфы в первой табле.

отсутсвует 300 записей. Но их воостановили по доке. В дочерней ниче просматривать не надо.

Суррогаты.

Теперь внешний ключ это ниче не значащие в предметной области числа.

Теперь все же как-то нуно узнать к чему дочерние относятся.

Возможно, это затратнее.



Сеня узнал, что промышленная СУБД Скуль поддерживает каскадное обновление

ON UPDATE CASCADE

http://msdn.microsoft.com/ru-ru/library/ms186973.aspx

раньше вроде не было.

Это все же в основном снижает недостатки естесвенных в этой СУБД.

Это в купе с появлением естественных идентификаторов типа пенсионного номера, маркеров, и т.д. и т.п., возможно,
не совсем свидельстует об окончательном господстве суррогатов.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37730547
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfosphinx_mvИспользование суррогатных первичных ключей НЕ отменяет наличие альтернативных естественных ключей!


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

О сколько нам открытий чудных...
Пример естественного ключа, который не представляет собой СУРРОГАТ - СЛАБО?
Соответственно, правильнее звучало бы - "естественные" СУРРОГАТЫ решают проблему СУРРОГАТОВ...
Вот только НЕТ у суррогатов НИ ОДНОЙ проблемы, которая отсутствовала бы у "естественных" ПК...
А достоинств у суррогатов - больше...
vadiminfoМоно на последок по вопросу отметить, что, возможно, просматривать при вводе значений на уникальность два ключа и один не вседа одно и то же в плане производительности. Т.е. нельзя исключать придется остаться кому то одному.

Ваша детская песочница - песочница и есть!
ВСЕ альтернативные ключи предметной области ДОЛЖНЫ присутствовать.
И все эти ключи ДОЛЖНЫ обрабатываться - ДАЖЕ ЕСЛИ ОНИ НЕ ПЕРВИЧНЫЕ.
Соответственно, чем сложнее модель, тем больше у нее ключей. Чем больше ключей - тем больше нагрузка на их поддержание.
"Длинный" естественный первичный ключ, для которого в дополнение к поддержанию уникальности необходимо поддерживать еще и ссылочную целостность с подчиненными где размер внешнего ключа долен быть таким же и с тем же типом данных - нагрузка ЧРЕЗВЫЧАЙНО избыточная для любой системы на любой платформе.
vadiminfoТо что естесвенный, возможно, может выглядеть в МД естесвенней естесвенного в видн довеска к суррогату, я уже даже Вам не говорю.

Вроде не пятница, но ни фига не понял...
vadiminfosphinx_mvНикакой разницы в описаной Вами "клинической" картине между суррогатными и естественными первичными ключами нет!
Что там, что там нужно восстанавливать мастер-таблицу... И что там, что там надо будет проверять корректность связей.
И хорошо, если не придется поднимать "бумажные" первоисточники - и тоже в ОБОИХ случаях.

Естесвенный:
в родительской - A122, AC12, ....-- идентификаторы приборов прописанные в доке.

В дочерней имзмерения этих приборов
внешние ключи A122, AC12, ....--

А можно я угадаю, чтов доке должны быть прописаны приборы с "номерами" A121 или А123?
Или АС11 или АС13? И как же я так "случайно" их угадал?

И, обращаю внимание - сами по себе комбинации "А122" или "АС12" не несут НИКАКОЙ смысловой нагрузки.
Точно как и любой другой суррогат, пока про него не скажут, что "этот номер означает это"...

Ну, а с учетом "возможности восстановления" по этому коду...
А нет ее - НИКАКОЙ!

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

Так что чем сидеть и разбираться, что там должно быть НА САМОМ деле, проще и быстрее поднять копию базу из архива и запросами получить потерянную разницу... И тут преимущество в скорости "коротких" суррогатов перед "длинными" и, тем более, составными естественными ключами - НЕОСПОРИМО!
vadiminfo
Произошла потеря инфы в первой табле.

отсутсвует 300 записей. Но их воостановили по доке. В дочерней ниче просматривать не надо.

Суррогаты.

Теперь внешний ключ это ниче не значащие в предметной области числа.

Человек, НЕ СПОСОБНЫЙ понять, что на самом деле происходит за границами маленькой песочницы НЕ способен проектировать информационные системы, отвечающие максимально возможной полноте предметной области.
Номер паспорта, полученный по сути инкрементом на 1 от некоторого предыдущего номера - это суррогат...
Но понять ЭТО горе-проектировщики, к сожалению, НЕ В СОСТОЯНИИ...
Функциональный ключ "пенсионный номер", полученный комбинацией автоинкремента и некоторой контрольной цифры - это ТОЧНО ТАКОЙ ЖЕ СУРОГАТ - Вас просто ТКНУЛИ носом в него и сказали, что теперь этот автоинкремент будет использоваться как "пенсионный номер"...

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

Возможно, это затратнее.



Сеня узнал, что промышленная СУБД Скуль поддерживает каскадное обновление

ON UPDATE CASCADE

http://msdn.microsoft.com/ru-ru/library/ms186973.aspx

раньше вроде не было.

Раньше - это в каком веке? SQL2000 ее уже поддерживал...
Но про технические ограничения конкретно ЭТОЙ операции (даже для более "свежих" версий MSSQL) Вам рассказать?
Или поверите "на слово", что "не спасает"?
vadiminfoЭто все же в основном снижает недостатки естесвенных в этой СУБД.

Это в купе с появлением естественных идентификаторов типа пенсионного номера, маркеров, и т.д. и т.п., возможно,
не совсем свидельстует об окончательном господстве суррогатов.
Ну, а если попробовать мозги включить?
Пенсионный номер ...
Номер удостоверяющего документа...
Номер накладной...
Что называется, "совсем не-суррогаты"... Ага...
Маркеры... Что они означают ВНЯТНО рассказать можете? Как маркеры "создаются" подумали?
Серийные номера?.. Инвентарные номера?.. Номера счетов?.. Номер партии изделий?..
Что у нас еще в "естественных" ключах крутится?
Номер дома и квартиры? Почтовый индекс? Номер телефона?
IP-адрес? Например, 0x7F000001 - что за IP-адрес подсказать? 127.0.0.1 - он же localhost...
MAC-адрес сетевого интерфейса?
Ну, ХОТЬ ЧТО-НИБУДЬ НЕ-СУРРОГАТНОЕ?..
А нету...
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37730796
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvПример естественного ключа, который не представляет собой СУРРОГАТ - СЛАБО?
Соответственно, правильнее звучало бы - "естественные" СУРРОГАТЫ решают проблему СУРРОГАТОВ...

Возможно када-то понятние "естественные" СУРРОГАТЫ буит иметь значение. Но до выяснения новых обстоятельст, возможно, предпочтиельнее ограничиться тока: естесвенные, суррогатные.

(Нет, конечно, я видел попытки налабать что-то среднее между суррогатами и естественными: мнемоники - сокращения
Т.е. сокращения придуманные проггерами. Они для предметеной области суррогаты - нет таких свойств у объектов, но для проггеров они типа естественные - они им подскажут некий смыл. Но поскоку это было тока для справочников, то моно проигнорировать.)

sphinx_mvА можно я угадаю, чтов доке должны быть прописаны приборы с "номерами" A121 или А123?
Или АС11 или АС13? И как же я так "случайно" их угадал?


В доке ошибок не было:"А122" или "АС12". Ну пусть это считывалось считывающим устройством.
Если Вы считаете lfyyst суррогатами, в зависмости от знаков значений, а не по их отсутсвию в реальном по отношению к БД мире,
то тада, возможно, Вы не совсем относитесь к лагерю сторонников суррогатных ключей.


sphinx_mv
И, обращаю внимание - сами по себе комбинации "А122" или "АС12" не несут НИКАКОЙ смысловой нагрузки.

Вообще-то несут информаци об устройстве юзерам: участвуют в описании устройства. Живут вне БД об этой предметной области.
А суррогат тока идентифицирует запись в БД. Как тока он начнет идентифицировать что-то реальное, он перестанет быть суррогатом. И все.

sphinx_mvТочно как и любой другой суррогат, пока про него не скажут, что "этот номер означает это"...

Ну если Вы заставите юзеров их задокументировать, привесить бирку на прибор: проведете типа объестесвливание суррогата, он просто перестанет быть суррогатом.


sphinx_mvГде гарантия, что при потере данных из первичной таблицы при этом не потерялись данные в дочерней?
Кто сказал, что при этом не сработают так Вами любимые каскадные операции при обновлении и удалении ПК, когда


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


sphinx_mvРаньше - это в каком веке? SQL2000 ее уже поддерживал...

Ну что же, молодца

sphinx_mvМаркеры... Что они означают ВНЯТНО рассказать можете?

Это какие-то данные, которые маркируют там что-то. Т.е. в БД будут естесвенными. Если Вы такие "суррогаты" имели в виду када говрили об их достоинствах, то наши мнения совпадают. Просто я назывваю это естесвенными.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37731253
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfosphinx_mvПример естественного ключа, который не представляет собой СУРРОГАТ - СЛАБО?
Соответственно, правильнее звучало бы - "естественные" СУРРОГАТЫ решают проблему СУРРОГАТОВ...

Возможно када-то понятние "естественные" СУРРОГАТЫ буит иметь значение. Но до выяснения новых обстоятельст, возможно, предпочтиельнее ограничиться тока: естесвенные, суррогатные.


А чего это вдруг "ограничиваться"?

По суррогату Вы НИКОГДА не скажете, что он из себя представляет. Ну, вот комбинация "А12345678" - это что?
Я-то знаю, что это пример номера документа... А какого типа документа номер?.. И чей он?..
А существует ли документ с таким номером вообще?..
Для этого нужно лезть в "бумажку"/таблицу, где он зарегистрирован. И там он - суррогатный... И что прикольное - это ТОЖЕ часть ПРЕДМЕТНОЙ ОБЛАСТИ...
А так все замечательно начиналось как "естественные ключи"...
vadiminfo(Нет, конечно, я видел попытки налабать что-то среднее между суррогатами и естественными: мнемоники - сокращения
Т.е. сокращения придуманные проггерами. Они для предметеной области суррогаты - нет таких свойств у объектов, но для проггеров они типа естественные - они им подскажут некий смыл. Но поскоку это было тока для справочников, то моно проигнорировать.)

ЛЮБОЙ код, созданный и хранящийся в справочнике (реестре, и тд и тп) и получаемый ТОЛЬКО оттуда - суррогатный...
Даже если это реестр ведется вахтером на клочке бумаги.
sphinx_mvА можно я угадаю, чтов доке должны быть прописаны приборы с "номерами" A121 или А123?
Или АС11 или АС13? И как же я так "случайно" их угадал?
vadiminfo
В доке ошибок не было:"А122" или "АС12". Ну пусть это считывалось считывающим устройством.
Если Вы считаете lfyyst суррогатами, в зависмости от знаков значений, а не по их отсутсвию в реальном по отношению к БД мире,
то тада, возможно, Вы не совсем относитесь к лагерю сторонников суррогатных ключей.

Код устройства ОТКУДА ПОЛУЧЕН? Из "бумажки"... КАК на "бумажку" попал? Номер взят с "ПОТОЛКА"...
Соответственно, СУРРОГАТ!
Бумажка - точно такая же часть информационной системы, как и таблица на сервере БД.
Это только ДРУГОЙ СПОСОБ ХРАНЕНИЯ информации... И БД даже имеет ССЫЛКИ на эту "бумажку" - и что с того, что они поддерживаются "ручками"?
vadiminfosphinx_mvИ, обращаю внимание - сами по себе комбинации "А122" или "АС12" не несут НИКАКОЙ смысловой нагрузки.

Вообще-то несут информаци об устройстве юзерам: участвуют в описании устройства. Живут вне БД об этой предметной области.
А суррогат тока идентифицирует запись в БД. Как тока он начнет идентифицировать что-то реальное, он перестанет быть суррогатом. И все.

БРЕД!!!

Суррогат ВСЕГДА остается СУРРОГАТОМ.
Поговорите с бухгалтером на тему плана счетов и проводок... Или просто послушайте как они между собой общаются на эту тему...
Бухгалтеры практически ОТКРЫТЫМ ТЕКСТОМ оперируют суррогатнымии НОМЕРАМИ счетов бухгалтерского учета...
Но от этого СУЩНОСТЬ номера счета НЕ меняется - суррогат как был так и остался...
vadiminfo
sphinx_mvТочно как и любой другой суррогат, пока про него не скажут, что "этот номер означает это"...

Ну если Вы заставите юзеров их задокументировать, привесить бирку на прибор: проведете типа объестесвливание суррогата, он просто перестанет быть суррогатом.

НЕ ПЕРЕСТАНЕТ!
Это всего лишь означает что кто-то начинает использовать значение суррогатного первичного ключа в информативных запросах.
Мне ткнуть пальцем в того, кто был активно против такого применения по сути "автоинкрементов"?

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


Я же не говрил о достоинстве на все случаи. А тока на вышеназванный.

На вышеназванный? Песочница!.. Даже на поделку студента-первокурсника не тянет...
Информационная система, в которой запросто можно положить на появление записей в дочерих таблицах, не имеющих родителей, положительных эмоций не вызывает!
vadiminfosphinx_mvМаркеры... Что они означают ВНЯТНО рассказать можете?

Это какие-то данные, которые маркируют там что-то. Т.е. в БД будут естесвенными. Если Вы такие "суррогаты" имели в виду када говрили об их достоинствах, то наши мнения совпадают. Просто я назывваю это естесвенными.
Маркеры, которых НЕ СУЩЕСТВУЕТ "в природе" НИКОГДА не будут естественными...
Предметная область, внутри которой используются эти маркеры ВКЛЮЧАЕТ в себя и ту часть, где эти маркеры СОЗДАЮТСЯ и ХРАНЯТСЯ.
С учетом СПОСОБА появления маркеров - они СУРРОГАТЫ.
Иначе можно "доболтаться" до того, что для любой дочерней таблицы в любой связи родительский ПК - "естественный"...
А че нет? Он же не создан в "предметной области", описываемой и реализуемой именно этой одной конкретной (дочерней!) таблицей!
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37731284
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvВ плане приборов и использования их кодов естественным ключом для измерительного прибора будет нечто типа амперметр стрелочный "Х.З. какой марки", расположенный "где-то там" и т.д. и т.п...

это тоже суррогат :)
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37731391
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvКод устройства ОТКУДА ПОЛУЧЕН? Из "бумажки"... КАК на "бумажку" попал?
На заводе, наверное, присвоили. Если у юзеров есть интерес откуда он туда попал, это буит хранитьсмя в БД.

Вы че хотите сказать что это суррогат?

В данной БД это естесвенный атрибут. Суррогат - искусвенный в данной БД (а не происхождению вообще, не по испльзуемым в нем знакам). Таког свойства просто нет у объектов данной ПО. А Код есть: естесвенный.

Впрочем, как хотите. Вам типа видней.

Но, скорей всего, Вы не сторонник ни суррогатов, ни , наверное, естесвенных в обычном понимании.
Я думал, что общаюсь со сторонником суррогатных ключей.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37731449
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спор ушел в область философии
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37732251
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfosphinx_mvКод устройства ОТКУДА ПОЛУЧЕН? Из "бумажки"... КАК на "бумажку" попал?
На заводе, наверное, присвоили. Если у юзеров есть интерес откуда он туда попал, это буит хранитьсмя в БД.

Вы че хотите сказать что это суррогат?

В данной БД это естесвенный атрибут. Суррогат - искусвенный в данной БД (а не происхождению вообще, не по испльзуемым в нем знакам). Таког свойства просто нет у объектов данной ПО. А Код есть: естесвенный.

Впрочем, как хотите. Вам типа видней.

Но, скорей всего, Вы не сторонник ни суррогатов, ни , наверное, естесвенных в обычном понимании.
Я думал, что общаюсь со сторонником суррогатных ключей.

40 лет назад, когда Кодд разрабатывал реляционную теорию, каждая отдельно взятая база данных была абсолютно не связана с другими - даже просто связать между собой компьютера было не просто проблемой, а ОЧЕНЬ БОЛЬШОЙ проблемой. Тогда можно было разделять естественные и суррогатные ключи по принципу "получен снаружи" или "сгенерирован внутри" информационной системы.
Сейчас, когда строятся единые информационные не только отдельно взятых стран, но и информационные системы объединющие несколько государств одновременно, РАЗНИЦЫ между естественными и суррогатными ключами становится все меньше и меньше. И многие примеры возможных "естественных" ключей в единых (или стремящихся к тому) базах данных по сути генерируются как суррогатные. Более того, особых проблем, чтобы обеспечить доступ к "первоисточнику" этой информации НЕ представляет.
В-общем, в мире ПРАКТИЧЕСКИ НЕ ОСТАЛОСЬ вариантов естественных ключей, которые НЕ представляют собой СУРРОГАТЫ.
Соответственно, особо упираться, что "номер паспорта" - это естественный ключ и никакой он "не суррогат", может либо проектировщик "детской песочницы", либо человек, который не видит дальше собственного носа...
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37732296
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvВ-общем, в мире ПРАКТИЧЕСКИ НЕ ОСТАЛОСЬ вариантов естественных ключей, которые НЕ представляют собой СУРРОГАТЫ.
"Суррогатность" не является неотъемлимым свойством значения, она выражает взаимоотношения между значением и базой. Ключ может быть естественным в одной базе и суррогатным в другой, фактически "суррогатный" следует читать как "принадлежащий этой базе".
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37732324
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mv...Сейчас, когда строятся ... ...

Хде-то слышал. Скорей всего, нуно заменить в речи эту фразу.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37732349
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarersphinx_mvВ-общем, в мире ПРАКТИЧЕСКИ НЕ ОСТАЛОСЬ вариантов естественных ключей, которые НЕ представляют собой СУРРОГАТЫ.
"Суррогатность" не является неотъемлимым свойством значения, она выражает взаимоотношения между значением и базой. Ключ может быть естественным в одной базе и суррогатным в другой, фактически "суррогатный" следует читать как "принадлежащий этой базе".
Когда несколько больших баз данных объединены между собой и используют один и тот же идентификатор-суррогат - про какую БД мы говорим как о "владельце" (при такой постановке), если "База" фактически только одна?
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37732357
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfosphinx_mv...Сейчас, когда строятся ... ...

Хде-то слышал. Скорей всего, нуно заменить в речи эту фразу.

От Вас уже слышалось про то, что "без пенсионного номера на работу не принимают" - как оказалось, ТУФТА!
Совершенно неудивительно, что Вам не известно о том, что только в России в единый реестр информационных ресурсов объединяются 11 баз данных...
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37732358
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvКогда несколько больших баз данных объединены между собой и используют один и тот же идентификатор-суррогат - про какую БД мы говорим как о "владельце"
Про ту, которая их выдаёт.

sphinx_mvесли "База" фактически только одна?
Если база фактически одна, Ваш вопрос бессмысленен. Если же "фактически" "одна" - ответ дан.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37732654
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarersphinx_mvКогда несколько больших баз данных объединены между собой и используют один и тот же идентификатор-суррогат - про какую БД мы говорим как о "владельце"
Про ту, которая их выдаёт.

Было бы замечательно, если забыть, что терминология "естественный"/"искусственный" ключ относится не к просто к отдельной БД на отдельном сервере БД и т.п., а к информационной системе в целом , которую можно назвать "базой (данных)" - "черный ящик", структура которого снаружи не видна...
softwarersphinx_mvесли "База" фактически только одна?
Если база фактически одна, Ваш вопрос бессмысленен. Если же "фактически" "одна" - ответ дан.
"База" - это не одна база, ... "База" - комплекс распределенных, часто гетерогенных платформ.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37734082
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем типа высокая кавалификация в проектирвании БД, это када не понимишь отличия в каких-то простых понятиях, типа суррогатнгый и естесвенный ключ, придумываешь им тада свое, а в ходе типа обоснования этого своего, должны всплыть черные ящики, или там, к примеру, мешочки. Ну и, конечно, нуно много рассуждать о квалификации о профессионализме.
Нескромно? А что делать? Иначе как поймут, что кавлификация высокая у самого то?
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37734197
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfo,

воще так оно и есть
да определенного момента пользуешься чужими классификациями, потом своими
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37734277
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosvadiminfo,

воще так оно и есть
да определенного момента пользуешься чужими классификациями, потом своими
Вот именно!..
Особено когда "совершенно случайно" оказывается, что "чужая" классификация "внезапно поменялась" и ни новые коды, ни даже их новый форматы очень не соотвествуют старому...
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37734326
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfoВ общем типа высокая кавалификация в проектирвании БД, это када не понимишь отличия в каких-то простых понятиях, типа суррогатнгый и естесвенный ключ, придумываешь им тада свое, а в ходе типа обоснования этого своего, должны всплыть черные ящики, или там, к примеру, мешочки. Ну и, конечно, нуно много рассуждать о квалификации о профессионализме.
Нескромно? А что делать? Иначе как поймут, что кавлификация высокая у самого то?
К вопросу о профессионализме. Его уровень определяется не степенью заумности рассуждений, а сложностью реально решаемых реальных задач...
Мне всегда было смешно с примеров и аргументов сторонников "естественных" ключей, когда они демонстрируют, якобы, преимущества естественных ключей над сурогатами на связях 3, максимум, 4 таблиц - на ТАКИХ задачах еще МОЖНО как-то это попытаться продемонстрировать... И только НА ТАКИХ!
Хранение анкетных данных клиента (будь то физическое или юридическое лицо) приходится разворачивать чуть ли не на десяток таблиц... И это даже без учета справочников... Даже такой структуры (местами) маловато для "полного счастья"...
"ПроЭкт" на 3-4 таблицы - он на "задачу", тем более, "реальную" не дотягивает... Не говоря уже об ошибках в рассуждениях, которые "проЭктанты" допускают...
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37734352
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mv Не говоря уже об ошибках в рассуждениях, которые "проЭктанты" типа Дейта или там Буча допускают...
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37734423
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvМне всегда было смешно с примеров и аргументов сторонников "естественных" ключей, когда они демонстрируют, якобы, преимущества естественных ключей над сурогатами на связях 3, максимум, 4 таблиц - на ТАКИХ задачах еще МОЖНО как-то это попытаться продемонстрировать... И только НА ТАКИХ!Преимущества естественных ключей как раз неплохо проявляются в сложных системах, когда система делалась много лет, работает во многих филиалах, да ещё разные части системы работают на разных платформах и разрабатывались разными подрядчиками. Для примера возьмите авс крупного банка (типа сбера), почта США, SWIFT.
sphinx_mv"ПроЭкт" на 3-4 таблицы - он на "задачу", тем более, "реальную" не дотягивает... Не говоря уже об ошибках в рассуждениях, которые "проЭктанты" допускают...Действительно, этот аргумент, повторяющийся в каждом посте, убедительным не кажется. Жаль, нет фото оппонента - может, он вообще лысый или в очках? :-)
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37734439
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,

системы, филиалы, почта...
бардак какой-то
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37735354
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgsphinx_mvМне всегда было смешно с примеров и аргументов сторонников "естественных" ключей, когда они демонстрируют, якобы, преимущества естественных ключей над сурогатами на связях 3, максимум, 4 таблиц - на ТАКИХ задачах еще МОЖНО как-то это попытаться продемонстрировать... И только НА ТАКИХ!Преимущества естественных ключей как раз неплохо проявляются в сложных системах, когда система делалась много лет, работает во многих филиалах, да ещё разные части системы работают на разных платформах и разрабатывались разными подрядчиками. Для примера возьмите авс крупного банка (типа сбера), почта США, SWIFT.

"В то время как космические корабли бороздят просторы космоса"... Угу...

Простой вопрос - по какому принципу формируются почтовые коды хотя бы в США, случайно, не расскажете?
А про "неизменность" (и, следовательно, "однозначность при идентификации") почтовых кодов, хотя бы теоретически, знаете - ну, хоть в тех же Штатах? И, заодно, вопрос "на засыпку": что вы (теоретически) слышали про совместимость почтовых кодов разных стран при использовании в ОДНОЙ(!) "большой" системе?
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37735487
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvА про "неизменность" (и, следовательно, "однозначность при идентификации") почтовых кодов, хотя бы теоретически, знаете - ну, хоть в тех же Штатах?
Да ладно Вам такие сложные вопросы задавать. Мне, помнится, так до сих пор и не ответили, в каком же штате убили Кеннеди. Вернее, ответили .
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37735527
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvПростой вопрос - по какому принципу формируются почтовые коды хотя бы в США, случайно, не расскажете?
А про "неизменность" (и, следовательно, "однозначность при идентификации") почтовых кодов, хотя бы теоретически, знаете - ну, хоть в тех же Штатах? И, заодно, вопрос "на засыпку": что вы (теоретически) слышали про совместимость почтовых кодов разных стран при использовании в ОДНОЙ(!) "большой" системе?Странно, я разве писал в этой теме про почтовые коды и использование их в качестве ИД??? По моему, вы меня с кем то перепутали.

Хотя это интересная тема, дискуссионная. Но не для этого топика, который, кстати, посвящён с самого начала исключительно суррогатным ключам (а именно техническим деталям их генерации), но группа товарищей немедленно начала холивар о своём :-)

softwarersphinx_mvА про "неизменность" (и, следоват ельно, "однозначность при идентификации") почтовых кодов, хотя бы теоретически, знаете - ну, хоть в тех же Штатах?
Да ладно Вам такие сложные вопросы задавать. Мне, помнится, так до сих пор и не ответили, в каком же штате убили Кеннеди. Вернее, ответили .Странно, я вроде доступно вам всё объяснил :-(

Кстати, ссылка, которую вы даёте как мой ответ вам, на самом деле есть просто ссылка ваш пост с несколькими остротами.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37735624
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg...Но не для этого топика, который, кстати, посвящён с самого начала исключительно суррогатным ключам (а именно техническим деталям их генерации), но группа товарищей немедленно начала холивар о своём :-)

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

Тем более что генерация - это всего лишь реализация. В общем же случае модельные отличия могут иметь значение. А в этом может быть главное ПРОТИВ сурругатных вообще, автоинкрементых в том числе.

К тому же холивар на свой счет не принмаю, так как не являюсь убежденным сторонником ни одного из здесь названных вариантов нам все случаи.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37735759
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfoalexeyvg...Но не для этого топика, который, кстати, посвящён с самого начала исключительно суррогатным ключам (а именно техническим деталям их генерации), но группа товарищей немедленно начала холивар о своём :-)
Ну из названия, вроде не следует, что техническим деталям генерации. Т.к. назание топика не исключает против никакие первичные ключи. В том числе и естесвенные, в том числе и в обычном их понимании, а не в пониманимании отдельных профессионалов.Ну, из текста первого поста темы следует, что речь исключительно о суррогатных ключах, и вопрос ТС заключается в том, где и как их генерить - на клиенте, на сервере, используя ГУИД, делая целое число, выделяя диапазоны и т.п. Никаких естественных ключей автор делать не собирался.

Название темы, может, не совсем удачное, но из текста понятно, что под "Автоматическая нумерация записей" имеется в виду "использовать" или "не использовать" соответствующий функционал СУБД.
vadiminfoТем более что генерация - это всего лишь реализация. В общем же случае модельные отличия могут иметь значение.Безусловно, модельные отличия первичны, они важнее реализации, но ТС просил совета только по реализации.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37735817
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgНазвание темы, может, не совсем удачное...
Ну если тока название темы не совсем удачное, а все остальное совсем удачное.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37735822
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgsphinx_mvПростой вопрос - по какому принципу формируются почтовые коды хотя бы в США, случайно, не расскажете?
А про "неизменность" (и, следовательно, "однозначность при идентификации") почтовых кодов, хотя бы теоретически, знаете - ну, хоть в тех же Штатах? И, заодно, вопрос "на засыпку": что вы (теоретически) слышали про совместимость почтовых кодов разных стран при использовании в ОДНОЙ(!) "большой" системе?Странно, я разве писал в этой теме про почтовые коды и использование их в качестве ИД??? По моему, вы меня с кем то перепутали.

Я никого ни с кем не перепутал - разве что у кого-то раздвоение личности... Тему почты кто поднял?
Ну, так вот, практически ЕДИНСТВЕННОЕ, что есть в ЛЮБОЙ почтовой системе, и что можно было бы притягинуть за уши здесь на тему "естественных ключей" (для "более других" систем) - это почтовые индексы...
Очень забавно, что человек, приводящий в качестве примера "большой системы" почту, как бы не в курсе, что "происходит на самом деле" в его примере...
alexeyvgХотя это интересная тема, дискуссионная. Но не для этого топика, который, кстати, посвящён с самого начала исключительно суррогатным ключам (а именно техническим деталям их генерации), но группа товарищей немедленно начала холивар о своём :-)

Если кто не в курсе, почтовый индекс - суррогат, детали генерации и сопровождения которого ОЧЕНЬ ИНТЕРЕСНЫ при использовании в качестве ключей в "сторонних системах".
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37735871
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvalexeyvgпропущено...
Странно, я разве писал в этой теме про почтовые коды и использование их в качестве ИД??? По моему, вы меня с кем то перепутали.

Я никого ни с кем не перепутал - разве что у кого-то раздвоение личности... Тему почты кто поднял?
Ну, так вот, практически ЕДИНСТВЕННОЕ, что есть в ЛЮБОЙ почтовой системе, и что можно было бы притягинуть за уши здесь на тему "естественных ключей" (для "более других" систем) - это почтовые индексы...Да почему же единственное??? Что, любая база почтовой системы - это одна таблица, что ли???

Я, например, имел в виду ИД почтового отправления. Это естественный ключ по отношению конкретной почтовой БД, где обрабатывается почтовое отправление, и суррогат в "мировой почте" в целом (как и любой естественный ключ является на каком то уровне суррогатом).

sphinx_mvalexeyvgХотя это интересная тема, дискуссионная. Но не для этого топика, который, кстати, посвящён с самого начала исключительно суррогатным ключам (а именно техническим деталям их генерации), но группа товарищей немедленно начала холивар о своём :-)

Если кто не в курсе, почтовый индекс - суррогат, детали генерации и сопровождения которого ОЧЕНЬ ИНТЕРЕСНЫ при использовании в качестве ключей в "сторонних системах".Безусловно, суррогат.
Собственно, любой естественный ключ - это суррогат на каком то уровне, это же очевидно.

А насчёт дискусионности и насчёт использования почтового индекса в качестве естественного ключа - нужно просто правильно определять сущность, для которой этот ключ используется.

Я же не предлагаю использовать такой ключ для идентификации почтового отделения или географического места.
Но для сущности "почтовый индекс" (в которой, допустим, задаются правила маршрутизации) сам индекс - прекрасный кандидат на естественный ключ.
Понятно, если брать для какой то сущности первый попавшийся атрибут, и делать его первичным ключём, это неправильно.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37735891
miwaonline
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgНо для сущности "почтовый индекс" (в которой, допустим, задаются правила маршрутизации) сам индекс - прекрасный кандидат на естественный ключ.

Угу. Особенно, если в результате очередных завихрений в коридорах власти почтовые индексы вдруг поменяются.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37735922
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgСобственно, любой естественный ключ - это суррогат на каком то уровне, это же очевидно.


Тогда бы сравнивать, скорее всего, было нечего особенно.

Обыконвенно, индекс - это естесвенный ключ, если он ключ в какой-то БД: свойство адреса. Может представлять интерес для юзера. В плане данных МД ничем не отличается от других данных адреса и то и другон знаки, описывающие сущности предметной области. А суррогат, это свойство записи в таблице, а не объекта, которому соотвествует запись. Не предситавляет информационный интерес. В предметной области значения не имеет. Отсюда и может проистекать модельное превосходство естесвенных.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37736671
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgsphinx_mvпропущено...

Я никого ни с кем не перепутал - разве что у кого-то раздвоение личности... Тему почты кто поднял?
Ну, так вот, практически ЕДИНСТВЕННОЕ, что есть в ЛЮБОЙ почтовой системе, и что можно было бы притягинуть за уши здесь на тему "естественных ключей" (для "более других" систем) - это почтовые индексы...Да почему же единственное??? Что, любая база почтовой системы - это одна таблица, что ли???

Из всего множества таблиц хоть какое-то отношение к тому, что можно попытаться предположить в качестве источника "естественных ключей" в почтовой системе имеет только одна, и она - справочник почтовых индексов населенных пунктов.
alexeyvgЯ, например, имел в виду ИД почтового отправления. Это естественный ключ по отношению конкретной почтовой БД, где обрабатывается почтовое отправление, и суррогат в "мировой почте" в целом (как и любой естественный ключ является на каком то уровне суррогатом).

Садитесь, ДВА!
"ИД почтового отправления" в информационной системе "МИРОВАЯ ПОЧТА" в качестве ключа вообще и, тем более, ПЕРВИЧНОГО КЛЮЧА - абсолютный НОНСЕНС!
Начная с того, что для "ИД почтового отправления" без привязки к некоторому "ИД почтовой системы" даже просто предполагать "уникальность" НЕ СЕРЬЕЗНО... А международные отправления в почте - весьма большая доля пересылок.
Соотвественно, относить этот ИД, который жизнеспособен как ключ только внутри почтовой системы, к категории "естественные ключи" за пределами этой почтовой системы - полный БРЕД!

На всякий случай - во избежание излишней взволнованности.. Суррогаты - это тоже ключи, уникальность которых можно гарантирована ТОЛЬКО ВНУТРИ какой-то конкретной системы/комплекса систем. ЗА пределами - это уже просто некий "описательный атрибут".
alexeyvgsphinx_mvпропущено...

Если кто не в курсе, почтовый индекс - суррогат, детали генерации и сопровождения которого ОЧЕНЬ ИНТЕРЕСНЫ при использовании в качестве ключей в "сторонних системах".Безусловно, суррогат.
Собственно, любой естественный ключ - это суррогат на каком то уровне, это же очевидно.

А насчёт дискусионности и насчёт использования почтового индекса в качестве естественного ключа - нужно просто правильно определять сущность, для которой этот ключ используется.

Не хочется себя цитировать, но, наверное, придется... Ну, я уж как-нибудь "близко к тексту"
"Преимущества естественных ключей их любители могут продемонстрировать не более чем на 3, максимум, 4 таблицах со связями между собой".
Именно Вас это СИЛЬНО возбудило и Вы привели пример с почтой.

Ну, так вот... Дабы Вы БЫЛИ В КУРСЕ, "почтовый индекс" является неким кодом геграфической зоны, области, населенного пункта и т.п., применяется для облегчения сортировки почты в целях ее доставки. Иногда почтовый индекс предоставляется отдельным организациям или лицам с большими объемами корреспонденции. Таким образом, имеем соотвествие 1 таблица "справочник индексов зон доставки" и 1 таблица - адрес получателя или отправителя, где индекс может использоваться. А может и НЕ использоваться. Таким образом ОБЩЕЕ количество таблиц, хоть как-то связанных с этим "естественным ключом" составило аж целых 2 (две)... Как только необходимо выходить ЗА рамки почтовой системы одной отдельно взятой страны "естественный ключ",
представленный почтовым индексом ПЕРЕСТАЕТ быть ключом. Т.е. - СОВСЕМ... Вот такие "преимущества", однако...
Тут бы еще начать "усиленно вспоминать", сколько раз за последние несколько лет (хотя бы 10) менялись индексы населенных пунктов внутри отдельно взятых стран - и станет совсем "весело"...

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

Сам по себе почтовый индекс никакой он НЕ кандитат на гордое звание "естественный ключ"!
Внутри почтовой системы он суррогат. Вне почтовой системы, в лучшем случае - часть составного ключа.
alexeyvgПонятно, если брать для какой то сущности первый попавшийся атрибут, и делать его первичным ключём, это неправильно.
Еще менее правильно брать в качестве подтверждения своих идей первые попавшиеся примеры...
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37736720
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfoalexeyvgСобственно, любой естественный ключ - это суррогат на каком то уровне, это же очевидно.


Тогда бы сравнивать, скорее всего, было нечего особенно.

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

Мусье не затрудниться объяснить "55234" - это код Бехтольсхайма в Германии или Чаусове на Украине?
А то код такой уникальный-уникальный... Как раз в рамках предметной области почтовых отправлений...
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37736816
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvНа всякий случай - во избежание излишней взволнованности.. Суррогаты - это тоже ключи, уникальность которых можно гарантирована ТОЛЬКО ВНУТРИ какой-то конкретной системы/комплекса систем. ЗА пределами - это уже просто некий "описательный атрибут".Можно поменьше острот и капслока? Нужно понимаеть, что такой стиль сразу говорит о некомпетентности человека или как минимум о неумении объяснить свою позицию.
sphinx_mvalexeyvgЯ, например, имел в виду ИД почтового отправления. Это естественный ключ по отношению конкретной почтовой БД, где обрабатывается почтовое отправление, и суррогат в "мировой почте" в целом (как и любой естественный ключ является на каком то уровне суррогатом).

Садитесь, ДВА!
"ИД почтового отправления" в информационной системе "МИРОВАЯ ПОЧТА" в качестве ключа вообще и, тем более, ПЕРВИЧНОГО КЛЮЧА - абсолютный НОНСЕНС!
Начная с того, что для "ИД почтового отправления" без привязки к некоторому "ИД почтовой системы" даже просто предполагать "уникальность" НЕ СЕРЬЕЗНО... А международные отправления в почте - весьма большая доля пересылок.
Соотвественно, относить этот ИД, который жизнеспособен как ключ только внутри почтовой системы, к категории "естественные ключи" за пределами этой почтовой системы - полный БРЕД!Я пытаюсь объяснить, что в одной почтовой системе (в одной почте, допустим, DHL) идентификатор отправления является суррогатом, но для каждой базы данных, для каждой информационной системы, которая работает в этой почте, этот ИД вполне можно выбрать как естественный ключ.

Я именно поэтому с самого начала и привёл пример больших компаний (не больших баз данных, не сложнных моделей данных, а именно больших компаний а административно-организационном смысле), совершенно не думая конкретно про почтовый индекс или ИД письма.

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

sphinx_mvНе хочется себя цитировать, но, наверное, придется... Ну, я уж как-нибудь "близко к тексту"
"Преимущества естественных ключей их любители могут продемонстрировать не более чем на 3, максимум, 4 таблицах со связями между собой".
Именно Вас это СИЛЬНО возбудило и Вы привели пример с почтой.

Ну, так вот... Дабы Вы БЫЛИ В КУРСЕ,Вы хоть можете обосновать своё утверждение, без клоунских причмокиваний? Я честно говоря не понимаю преимуществ естественных ключей для "3, максимум, 4 таблицах", и нигде не видел каких то теорий на эту тему.
sphinx_mvНу, так вот... Дабы Вы БЫЛИ В КУРСЕ, "почтовый индекс" является неким кодом геграфической зоны, области, населенного пункта и т.п., применяется для облегчения сортировки почты в целях ее доставки. Иногда почтовый индекс предоставляется отдельным организациям или лицам с большими объемами корреспонденции. Таким образом, имеем соотвествие 1 таблица "справочник индексов зон доставки" и 1 таблица - адрес получателя или отправителя, где индекс может использоваться. А может и НЕ использоваться. Таким образом ОБЩЕЕ количество таблиц, хоть как-то связанных с этим "естественным ключом" составило аж целых 2 (две)... Как только необходимо выходить ЗА рамки почтовой системы одной отдельно взятой страны "естественный ключ",
представленный почтовым индексом ПЕРЕСТАЕТ быть ключом. Т.е. - СОВСЕМ... Вот такие "преимущества", однако...
Тут бы еще начать "усиленно вспоминать", сколько раз за последние несколько лет (хотя бы 10) менялись индексы населенных пунктов внутри отдельно взятых стран - и станет совсем "весело"...Зачем писать про очевидные вещи, разве с этим кто то спорил или утверждал обратное?

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

Сам по себе почтовый индекс никакой он НЕ кандитат на гордое звание "естественный ключ"!
Внутри почтовой системы он суррогат. Вне почтовой системы, в лучшем случае - часть составного ключа.Не понял, почему "Внутри почтовой системы он суррогат"? Почтовая система (в смысле, софт, написанный разработчиком для какой то частной или государственной почтовой компании) использует кем то установленные индексы, а не генерит их сама.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37736992
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvvadiminfoпропущено...


Тогда бы сравнивать, скорее всего, было нечего особенно.

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

Мусье не затрудниться объяснить "55234" - это код Бехтольсхайма в Германии или Чаусове на Украине?
А то код такой уникальный-уникальный... Как раз в рамках предметной области почтовых отправлений...



Если код не униканьльный в табле (две записи - тодна про Бехтольсхайм, Чаусов), то не ключ (никакой ни естесвенный, ни суррогатный).

Но если ключ, и ав предметной области свойство, то естесвенный ключ.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37737098
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfosphinx_mvпропущено...

Мусье не затрудниться объяснить "55234" - это код Бехтольсхайма в Германии или Чаусове на Украине?
А то код такой уникальный-уникальный... Как раз в рамках предметной области почтовых отправлений...

Если код не униканьльный в табле (две записи - тодна про Бехтольсхайм, Чаусов), то не ключ (никакой ни естесвенный, ни суррогатный).

Но если ключ, и ав предметной области свойство, то естесвенный ключ.

Ну, и как и чем Вы объясните задекларированное Вами "модельное превосходство" естественных ключей?
Особенно в плане того, что в природе существуют и Бехтольсхайм, и Чаусов... И у обоих почтовый индекс одинаковый (но, только в разных почтовых системах).
Да, и городов Одесса и Москва в мире немного больше, чем по одному каждого...
К тому же, и Петроград, Ленинград и Санкт-Петербург - как бы не совсем разные...
Ну, продемонстрируйте же "превосходство" естественных ключей!
А то получается почти по анекдоту: город есть, а кода у него - нет...

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

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

Однако, модельные достоинства могут устраниться, скорее всего, только вместе с самой РМД.

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

sphinx_mvНо даже если серьезно, то естественные ключи подвержены изменениям, поэтому они должны включать в себя, как минимум, срок действия или дату/время изменения.

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

Понятно... Все свелось к анекдоту... Объект есть, а обозначить его нечем...
Не может "проистекать преимущество" естественных ключей только на основании того, что "без обычных атрибутов не обойтись". Хотя бы в силу того, что ключи - НЕ просто "обычные атрибуты", а атрибуты, к которым предъявляются вполне определенные требования.
Вот именно и обоснования "преимуществ" естественных ключей над суррогатными на основе именно ЭТИХ конкретных требований и хотелось бы увидеть... Ждем-с...
vadiminfoОсновные достоинства суррогатов, возможно, связаны с реализацией РМД в сегодняшних компьтерных структурах. Они идентифицируют записи, обеспечивают связи между записями.

Для начала Вам следует уяснить, что для идентификации записи и обеспечения связей используются ПЕРВИЧНЫЕ КЛЮЧИ...
А все что у Вас было дальше - глубокомысленное "растекание маслом по древу"...

vadiminfosphinx_mvНо даже если серьезно, то естественные ключи подвержены изменениям, поэтому они должны включать в себя, как минимум, срок действия или дату/время изменения.

От ключей (любых) в РМД требуется только уникальность в таблице (хотя и во всех состояних). Больше ничего.
Вы же сами знаете, что в СКУЛе есть каскадное обновление. Это для изменений, и это не для суррогатных ключей все же.

Начиная с того, что каскадное обновление не реализовано даже для всех "промышленных" серверов баз данных...
...и заканчивая тем, что если ключ не удовлетворяет требованию уникальности во всех состояниях - это уже не ключ.

А каскадные операции - зло, способное привести к разрушению информации в базе данных: от простой потери связей между таблицами до полного удаления данных из всех таблиц базы.
И это - даже если забыть о вопросах производительности, конкурентного доступа и т.п., которые возникнут во время выполнения этой операции.
vadiminfoНо никаих сроков действия нет. Не могли же они упустить, если бы это имело значение.
Каскадное обновление не реализовано даже для всех "промышленных" серверов баз данных.
И в стандарте, насколько я помню, подобная операция для внешних ключей не предусмотрена...
Ну, а если стандарт "не поддерживает", то использование "недокументированных фич" - риск, не оправдывающий вложений.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37737612
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvНе может "проистекать преимущество" естественных ключей только на основании того, что "без обычных атрибутов не обойтись". Хотя бы в силу того, что ключи - НЕ просто "обычные атрибуты", а атрибуты, к которым предъявляются вполне определенные требования.

Вопрос какие требоваения: модельные или реализации. В модельном есть тока структура ОЦ и манипулировангие данными. Я же тока это пояснял на Ваш же вопрос. А не все достоинства и недостатки.

Впрочем, для Вас не может и хорошо.

sphinx_mvНу, а если стандарт "не поддерживает", то использование "недокументированных фич" - риск, не оправдывающий вложений.

Када-то в стандарте и сам SQL был не реализован. И риск больше случае перехода на другую СУБД. Ну один тока недостваток при выборе. А допустим, каскадное очень хорошо подходит - достоинство. Вот и выбор перед проектирвщиком.

Ладно. Пошел повтор.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37737777
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfosphinx_mvНе может "проистекать преимущество" естественных ключей только на основании того, что "без обычных атрибутов не обойтись". Хотя бы в силу того, что ключи - НЕ просто "обычные атрибуты", а атрибуты, к которым предъявляются вполне определенные требования.

Вопрос какие требоваения: модельные или реализации.

Т.е. Ваша реализация отличается от модели?!
Вы действительно считаете это адекватным проектированием?!
Не говоря о том, что возникают сомнения о соответствии Ваших моделей предметным областям, которые они должны описывать...
vadiminfoВ модельном есть тока структура ОЦ и манипулировангие данными. Я же тока это пояснял на Ваш же вопрос. А не все достоинства и недостатки.

Мне не нужны пояснения. Мне нужен ответ. Именно Ваш ответ, так как вопрос касался Ваших утверждений...

Повторяю вопрос: так какие же декларируемые Вами преимущества - хоть модельные, хоть реализации - есть у естественных ключей по сравнению с суррогатами?
Я-то ответ знаю. И Вас он не обрадует. Могу подсказать - НИКАКИХ... Могу даже добавить - АБСОЛЮТНО...

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

А по теме чего-нибудь? И, желательно, по-внятнее...
vadiminfosphinx_mvНу, а если стандарт "не поддерживает", то использование "недокументированных фич" - риск, не оправдывающий вложений.

Када-то в стандарте и сам SQL был не реализован. И риск больше случае перехода на другую СУБД. Ну один тока недостваток при выборе. А допустим, каскадное очень хорошо подходит - достоинство. Вот и выбор перед проектирвщиком.

Т.е., нестандартные реализации каскадного обновления внешних ключей в НЕКОТОРЫХ РСУБД - модельное достоинство естественных ключей?!
Круть! Немеряная! И много смеха...
А рекомендации выбора или перехода на другую РСУБД только из-за этой "фичи" - вообще валяюсь под столом...
vadiminfoЛадно. Пошел повтор.
Тут не то, чтобы повтора - тут и начала не было!..
На вопрос какие преимущества есть у естественных ключей перед сурогатами - ВНЯТНОГО ответа НИ РАЗУ НЕ последовало...
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37737860
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvТ.е. Ваша реализация отличается от модели?!
...
Модель данных и ее реализацию вообще различают в принципе. Возможно, не все конечно.


sphinx_mvНа вопрос какие преимущества есть у естественных ключей перед сурогатами - ВНЯТНОГО ответа НИ РАЗУ НЕ последовало... ...

Особенно, если если естесвенные у Вас считваются суррогатными.

Впрочем, говорил, Вам типа виднее. Удачи.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37737864
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvНа вопрос какие преимущества есть у естественных ключей перед сурогатами - ВНЯТНОГО ответа НИ РАЗУ НЕ последовало...По моему, тут уже писали про это преимущество. Естественный ключ идентифицирует реальный объект, а суррогатный запись в базе данных.

Безусловно, можно сделать это поле не естественным ключём, а просто атрибутом, но тем не менее именно это поле будет идентифицировать запись.

В тех же примерах с почтовым индексом именно он, а не суррогатный ключ, будет идентифицировать объект реального мира - почтовый индекс, поскольку на конверте пишут его, а не внутренний ключ в БД. Так почему бы в сущности "почтовый индекс" не сделать его естественным ключём, находить её, а потом уже находить привязанные к ней географические зоны, почтовые отделения, маршруты сортировки и прочее?
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37737898
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgЕстественный ключ не идентифицирует реальный объект,
Так ближе к истине.

alexeyvgа суррогатный запись в базе данных.
Осталось понять, с чем мы работаем - с реальными объектами или с базой данных
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37737924
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwareralexeyvgЕстественный ключ не идентифицирует реальный объект,
Так ближе к истине.Весомый аргумент.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37737960
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgВесомый аргумент.
Это даже не аргумент, это ежедневная реальность. Вы когда встречаете знакомого как его идентифицируете, по номеру паспорта, горящему на лбу? Или таки по некоей сложной комбинации признаков, оцениваемой непростым алгоритмом и дающей в результате "он" / "нет, точно он" / "не он" / "вроде он" / "похож, но не он" / "вроде помню, но не помню кто" / итп? Я, например, вчера выписывал пропуск в офис на жену. Угадайте, сколько гражданок России я мог бы провести в офис по этой бумажке. А ещё я живу в доме, у которого два адреса. Вот скажите, какой из них идентифицирует дом, и почему именно он. А потом объясните, что идентифицирует второй адрес. И так далее.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37737988
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerОсталось понять, с чем мы работаем - с реальными объектами или с базой данных
Возможно, есть еще варианты типа:
Или с информацией о реальных объектвах в БД (или там ИС ядром которой является БД).

В общем выбор какой-никакой но, возможно, есть кому как на это все смотреть.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37738092
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfoВозможно, есть еще варианты типа: Или с информацией о реальных объектвах в БД
Это не вариант (альтернативный названным), это подробная формулировка варианта номер два. Как только мы понимаем, что мы работаем с информацией (карточками в картотеке, записями в базе итп), становится понятно, что именно надо идентифицировать для той или иной операции.

Скажем, становится очевидным, что дом, в котором я живу, не идентифицируется адресом. Единственный естественный ключ, которым он более-менее идентифицируется - куча оформленных определённым образом стройматериалов в указанном месте земного шара, да и то, только до тех пор, пока не проведут ремонт. Другой объект реального мира - адрес (который на протяжении некоего периода времени привязан к этому дому - это у нас информация в БД). Третий объект реального мира - номер этого дома в каких-нибудь градостроительных учётных документах, кадастрах итп.

Для ряда задач профанация вида "дом идентифицируется адресом" не даёт немедленного разрушающего эффекта для бизнес-логики, что и даёт основания теоретикам утверждать применимость естественных ключей, апеллируя к подобным простым примерам. В то же время основной аргумент против - изменения бизнес-логики, после которых "канать" перестанет. В беседе, на которую я давал ссылку, товарищ Алексей уже согласился, что если завтра штат Техас, согласно своему конституционному праву, разделится на несколько, значит с завтрашнего дня президент Кеннеди окажется убит вовсе не в Техасе.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37738160
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfosphinx_mvТ.е. Ваша реализация отличается от модели?!
...
Модель данных и ее реализацию вообще различают в принципе. Возможно, не все конечно.

Т.е., когда вы реализуете некоторую модель, результат реализации не совпадает с моделью?
Вы уверены, что Вы реализуете "именно ту модель"?
Может, для Вас вполне нормально, когда результат не совпадает с техническим заданием?
А Вы уверены, что Вы вообще выбрали "правильную" сферу деятельности?
vadiminfosphinx_mvНа вопрос какие преимущества есть у естественных ключей перед сурогатами - ВНЯТНОГО ответа НИ РАЗУ НЕ последовало... ...

Особенно, если если естесвенные у Вас считваются суррогатными.

Ну, тут Вы меня вынудили процитировать самого себя...
sphinx_mv...
ЛЮБОЙ атрибут, который "в реальном мире" хоть как-то годится на роль "естественного ключа" внутри "детской песочницы", НА САМОМ деле за ее пределами является СУРРОГАТНЫМ ключем в системе, которая его эмитировала (для особо непонятливых - "выпустила").
...

Четко и внятно, в отличие от не буду показывать пальцем кого, указан критерий, по которому атрибут любого реального объекта вообще имеет смысл рассматривать в качестве кандидата на возможный ключ...
sphinx_mvВпрочем, говорил, Вам типа виднее. Удачи.
Ага... "Вы говорили"... Привели пример атрибута, котрый предлагаете использовать в качестве ключа, мало того, что нарушающий юридические рамки сферы деятельности, но и проваливающий первый же элементарнейший тест...
Удачи Вам со сменой профессии.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37738199
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerЭто не вариант (альтернативный названным), это подробная формулировка варианта номер два.


Это уже вопрос истолкования. Мож есть и такие, кто поймет это по разному.

softwarerСкажем, становится очевидным, что дом, в котором я живу, не идентифицируется адресом. ...

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

Вот я и думау, что этап выбора вариантов между альтернативными и суррогатными, возможно еще рано исключать из процесса проектирования в общем случае. Хотя на Оракле, я практически исключил в пользу суррогатов. Но, возможно, это все же небрежность.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37738202
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mv,

не надо грубить, это единственный форум где более менее норм люди
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37738221
sphinx_mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgБезусловно, можно сделать это поле не естественным ключём, а просто атрибутом, но тем не менее именно это поле будет идентифицировать запись.

Запись может быть идентифицирована только по КЛЮЧУ!
Если атрибут или их комбинация НЕ ключ - к идентификации записей это никак НЕ относится.
RTFM.
alexeyvgВ тех же примерах с почтовым индексом именно он, а не суррогатный ключ, будет идентифицировать объект реального мира - почтовый индекс, поскольку на конверте пишут его, а не внутренний ключ в БД. Так почему бы в сущности "почтовый индекс" не сделать его естественным ключём, находить её, а потом уже находить привязанные к ней географические зоны, почтовые отделения, маршруты сортировки и прочее?
Обращаю внимание, что в связи с тем, что тот самый почтовый индекс не является константой в естественном мире, то выбрав его в качестве ключа, а тем более первичного, использующегося в связях с другими таблицами, Вы попадаете в нарушение ссылочной целостности. Что произойдет со ссылками в "таблице маршрутизации почтовых сообщений", когда изменения индекса начинают указывать на другую географическую зону? А когда из списка почтовых индексов необходимо удалить индекс? Предположим, что на почтовый индекс есть хотя бы 1 ссылка в таблице адресов контрагентов...
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37738281
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadiminfoЭто уже вопрос истолкования. Мож есть и такие, кто поймет это по разному.
Есть, конечно. Но как только мы осознали разделение карточка / реальный объект, такое "разное понимание" начинает требовать изрядных сознательных усилий.

Грубо говоря, у нас есть дом и есть карточка с информацией о доме. Имхо очевидно, что когда мы хотим модифицировать карточку, нам надо идентифицировать именно карточку по ключу карточки. Когда мы хотим модифицировать дом, надо идентифицировать дом по ключу дома. При этом в БД мы как-то обычно ограничиваемся операциями первого типа, для второго в лучшем случае выдаём информацию. Вопрос: можем ли мы использовать для обоих объектов общий ключ? Ответ: это создаёт пространство для ряда неприятных эффектов, при этом мы не обладаем и не будем обладать той степенью контроля над ситуацией, которая делает такое решение безопасным.

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

vadiminfoВот я и думау, что этап выбора вариантов между альтернативными и суррогатными, возможно еще рано исключать из процесса проектирования в общем случае.
В общем случае... в нашей работе есть много устаревших и просто откровенно неправильных техник. Я пришёл к простому и имхо верному алгоритму, как оценивать технологию на "неприменимость". Для этого она должна соответствовать двум критериям:

1. По сравнению с другими вариантами в ней есть явные недостатки, проявляющиеся в реальных ситуациях.
2. По сравнению с другими вариантами в ней практически нет преимуществ, проявляющихся в реальных ситуациях.

Естественные ключи этим критериям соответствуют. Вся суть аргументации за них в том, что в некоторых ситуациях, пока гром не грянет, они справляются не хуже.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37738285
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerВы когда встречаете знакомого как его идентифицируете, по номеру паспорта, горящему на лбу? Или таки по некоей сложной комбинации признаков, оцениваемой непростым алгоритмом и дающей в результате "он" / "нет, точно он" / "не он" / "вроде он" / "похож, но не он" / "вроде помню, но не помню кто" / итп?Вы выбираете неправильные объекты для идентификации по номеру паспорта.

Номер паспорта - это нормальный естественный ключ для сущности "паспорт", а не для человека.

И непонятно, на что вы так лаконично возразили выше ("Так ближе к истине").
Эту вашу фразу можно понять так, что в мире ни у одного реального объекта с каким то признаком, который можно было бы использовать для однозначной идентификации этого объекта. Это какой то максимализм, типа "мир существует только в моём сознании" :-)
Я же предлагаю использовать естественный ключ только для тех объектов, для которых он действительно ключ, он не может изменяться.

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

На лбу номер не горит, но паспорт у человека есть/когда то был, этого достаточно, остальное дело техники, пусть даже это небыстро.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37738311
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sphinx_mvalexeyvgВ тех же примерах с почтовым индексом именно он, а не суррогатный ключ, будет идентифицировать объект реального мира - почтовый индекс, поскольку на конверте пишут его, а не внутренний ключ в БД. Так почему бы в сущности "почтовый индекс" не сделать его естественным ключём, находить её, а потом уже находить привязанные к ней географические зоны, почтовые отделения, маршруты сортировки и прочее?
Обращаю внимание, что в связи с тем, что тот самый почтовый индекс не является константой в естественном мире, то выбрав его в качестве ключа, а тем более первичного, использующегося в связях с другими таблицами, Вы попадаете в нарушение ссылочной целостности. Что произойдет со ссылками в "таблице маршрутизации почтовых сообщений", когда изменения индекса начинают указывать на другую географическую зону? А когда из списка почтовых индексов необходимо удалить индекс? Предположим, что на почтовый индекс есть хотя бы 1 ссылка в таблице адресов контрагентов...Эххх, что не является константой? Ключ 123456 для таблицы "Почтовый индекс", запись 123456 может меняться? Один индекс может поменяться на другой, сам индекс, а не привязка идекса к географической зоне?

Я уже несколько раз говорил - почтовый индекс не может идентифицировать географический объект, или, например, почтовое отделение. Я же это сказал в первом посте, и потом повторил пару раз. А вы мне в каждом ответе доказываете то же самое практически дословно :-)

sphinx_mvПредположим, что на почтовый индекс есть хотя бы 1 ссылка в таблице адресов контрагентов...Ну такие ссылки же реально есть в реальных системах. Мало где при использовании адресов не используют почтовый индекс.

Вот этим и хороши естественные ключи - это некий суррогатный ключ на уровне (в данном случае) государства.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37738367
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerВопрос ключей не является вопросом РМД. В любой модели данных у нас будет необходимость в идентификации объектов, с которыми мы работаем.

Я имел в виду, что и целое может не подойти, а и тем более часть.

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

softwarerВся суть аргументации за них в том, что в некоторых ситуациях, пока гром не грянет, они справляются не хуже.


Возможно, это предположение нуждается в дополнительных подтверждениях. Поскольку все таки МД про информацию, а суррогаты в МД, но не про информацию. Это как бы все еще может вызывать обеспокоенность.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37738582
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgНомер паспорта - это нормальный естественный ключ для сущности "паспорт", а не для человека.
Ага :) Только даже он не годится для использования. Вот у Вас в базе записано, что паспорт XII-МЮ №323100 принадлежит Марии Ивановне Глотиковой, а перед Вами стоит и показывает паспорт с таким номером Семён Михайлович Безродный. Что будете делать? Это, разумеется, после того как справитесь с паспортами X11-МЮ и 12-МЮ (варианты, как можете догадаться, взяты не с потолка, а из реальных данных, и дааалеко не все встречающиеся).

alexeyvgИ непонятно, на что вы так лаконично возразили выше ("Так ближе к истине").
На столь же лаконичную мысль о том, что [доступный для применения в БД и удобный] естественный ключ идентифицирует объект реального мира [вне лабораторных условий].

alexeyvgЯ же предлагаю использовать естественный ключ только для тех объектов, для которых он действительно ключ, он не может изменяться.
Неизменность - это не единственное необходимое условие. Я не сторонник абсолютной унификации, но реально естественные ключи можно использовать так редко (и не получая с того никаких выгод), что серьёзно обсуждать это мне представляется нелепым.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37738830
Фотография vadiminfo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgЯ же предлагаю использовать естественный ключ только для тех объектов, для которых он действительно ключ, он не может изменяться.

.
На самом деле, от ключа требуется только уникальность. Неизменность это в общем случае не обязательноет требование.
Часто, траблы с изменениями связаны именно с ОЦ внешний ключ. Но поддержка каскадных обновлений подтверждает, что изменение таких ключей нормальное дело.

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

угу
объекты (существительные) отдельно (Бредятина)
классификаторы (ху из ху семантика) отдельно (Умный)
история классификации объекта отдельно (Поумнел года 4 назад от заданной даты)
семантика межобъектных отношений (глаголы) отдельно (Работает(Бредятина Черт и где с окладом = мизер))
Вот тут проблема - "Бредятина + Черт и где" только совместно имеют свойство "оклад = мизер"
Значит "Бредятина + Черт и где" - Объект
Но почему то объекты типа "Бредятина + Черт и где" не могут создать семантику высшего (ну хотя бы на один уровень) ранга
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37747536
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,
Я и сам не ожидал, что такая очевидная мысль скандинавского философа (об идентификаторах) не будет пониматься даже через 40 (?) лет даже образованными людьми))
Что за "черти" и "семантика"?)
Вот в соседней теме я провокационно обратил внимание на "серьезную ошибку" начинающего проектировщика: он рассматривает Фамилию, как свойство Клиента, тогда как на самом деле Фамилия - самостоятельная сущность со своими свойствами)) Следуя этой логике у сущности не останется ничего, кроме идентификатора...
И, кстати, о классификаторах (раз уж Вы начали непонятно к чему об этом говорить): когда мы приписываем сущности фамилию Иванов, мы просто относим сущность к классу сущностей, имеющих фамилию Иванов. Другими словами - любое свойство является классификатором))
Но Вы-то о чем начали говорить в связи с "проблемой ключей" - я так и не понял. То есть, так и не поумнел))
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37747693
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бредятина,

ты чувствуешь разницу между Свойствами-Классификаторами и просто Свойствами?
Почему "Умный" лассификатор, а "Оклад" - нет?
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37747755
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosБредятина,

ты чувствуешь разницу между Свойствами-Классификаторами и просто Свойствами?
Почему "Умный" лассификатор, а "Оклад" - нет?
Я невероятно чувствительный, когда речь идет о БД.
Указывая оклад 100 руб., Вы относите человека к классу сотрудников, имеющих оклад 100 руб. Следовательно, оклад - классификатор)))
(Не поддавайтесь на провокации, конечно, но и не игнорируйте).
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37747761
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бредятина,

т.е. ты чувствуешь метрику, шкалу, счетность и т.д.
я так и думал
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37747762
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosБредятина,

т.е. ты чувствуешь метрику, шкалу, счетность и т.д.
я так и думал
Вот и чудненько.
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37747766
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бредятина,

а как на счет вычислимости ВСЕХ Объектов? (ну так как классифиакторы ты наши :), а кроме ни мы ничего не знаем)
т.е. А ЕСТЬ ЛИ ОБЪЕКТ??? :)
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37747768
Бредятина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosБредятина,

а как на счет вычислимости ВСЕХ Объектов? (ну так как классифиакторы ты наши :), а кроме ни мы ничего не знаем)
т.е. А ЕСТЬ ЛИ ОБЪЕКТ??? :)
Ага. Причем, независимо от того, что мы о нем думаем))
Закончился свободный день((( Всем удачи!
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37747772
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бредятина,

материалист по убеждению, блин
сам же доказал, что нет никаких объектов, а есть токо идея о них и ситема идентификации идей :)
...
Рейтинг: 0 / 0
Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
    #37748016
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
БредятинаУказывая оклад 100 руб., Вы относите человека к классу сотрудников, имеющих оклад 100 руб. Следовательно, оклад - классификатор)))
Здесь ошибочка. Класс сотрудников, имеющих оклад 100 руб, должен существовать. Попробуйте поменять на 101 (а такого класса еще нет). Чистая схоластика.
...
Рейтинг: 0 / 0
141 сообщений из 141, показаны все 6 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Автоматическая нумерация записей (для Primary Key) - ЗА и ПРОТИВ
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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