Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.04.13;
Скачать: [xml.tar.bz2];

Вниз

Как проверить уникальность вводимого в ключевое поле значения?   Найти похожие ветки 

 
Игорь Шевченко ©   (2008-03-18 16:44) [40]

ANB   (18.03.08 16:40) [39]


> Человека в задаче нельзя идентифицировать точно ни по одному
> из естественных аттрибутов. Только по искусственному ИД


Можно. Например по номеру паспорта, страхового свидетельства, ИНН и много другого :)

Johnmen ©   (18.03.08 16:07) [38]


>  В статье на ibase.ru всё сказано...


"В общем-то, выводы очевидны – введение СК позволяет получить лучше управляемую, более компактную и быстродействующую БД."

Всякой задаче своя база данных. Еще раз. Ну не понимаю я догматиков.


 
Johnmen ©   (2008-03-18 16:49) [41]


> Игорь Шевченко ©   (18.03.08 16:44) [40]
> Ну не понимаю я догматиков.

Насколько помню, там было объективно - и плюсы и минусы и того и другого.
Т.е. в конечном счёте - про овощ :))


 
Игорь Шевченко ©   (2008-03-18 16:58) [42]

Johnmen ©   (18.03.08 16:49) [41]

Вот про плюсы я как-то не увидел. Собственно, со статьей я знаком давно, и ее последователями тоже.
Но вот незадача - есть не менее авторитетный Joe Celko, который считает с точностью до наоборот, к сожалению, не могу найти в сети главу из его книжки, где он пишет про ID-иотов...


 
Leonid Troyanovsky ©   (2008-03-18 21:50) [43]


> ANB   (18.03.08 16:40) [39]

> Человека в задаче нельзя идентифицировать точно ни по одному
> из естественных аттрибутов.

Человек идентифицируется с точностью до однояйцевых близнецов.
Ну, или клонов. Остальное - субъективо.

--
Regards, LVT.


 
Anatoly Podgoretsky ©   (2008-03-18 23:54) [44]

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


 
Игорь Шевченко ©   (2008-03-19 00:06) [45]


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


Целиком и полностью поддерживаю :)


 
Johnmen ©   (2008-03-19 09:02) [46]


> Anatoly Podgoretsky ©   (18.03.08 23:54) [44]
> Игорь Шевченко ©   (19.03.08 00:06) [45]

>но они никакого отношения к базам не имеют, в базе они естественные ключи.

О чем я и говорил.
Хотя другие могли обсуждать и в разрезе не БД, а чего-то другого, чего они там сами себе хотели...


 
ANB   (2008-03-19 09:46) [47]


> Можно. Например по номеру паспорта, страхового свидетельства,
>  ИНН и много другого :)

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


 
Игорь Шевченко ©   (2008-03-19 09:55) [48]

ANB   (19.03.08 09:46) [47]

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

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


 
Sergey13 ©   (2008-03-19 10:19) [49]

> [48] Игорь Шевченко ©   (19.03.08 09:55)
> Это автоматически исключает ошибки при вводе ?

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

> Это дает возможность связаться с внешними системами ?
Нет конечно, но позволяет системе нормально функционировать внутри себя в то время, как идет разбор причин отсутствия связи с внешними системами.


 
ANB   (2008-03-19 10:52) [50]


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

А вот ничего подобного.
Во всяком случае, если экспортить этот код, то в приемнике при любых изменениях естественных ключевых данных все равно можно будет понять, что это именно изменение, а не добавление нового человека.
ЗЫ. Когда писали системку для БКИ после недельного обсуждения пришли к выводу, что нужно заставить банки высылать нам таки этот код. Сразу снялась куча проблем. Есно, остается проблема слития данных из разных источников. Но в этом случае, есно, без естественных ключей не обойтись.
Алгоритм получился эвристический и довольно навороченный, но,
1) случаи дублей от разных источников довольно редки
2) если не было ошибок и в разных источниках совпадают ключевые данные, то система понимает, что человек один и тот же и можно теперь подвязать к нему 2-й внешний ИД с указанием источника
3) если ошибки были то с большой вероятностью коллизии обнаруживаются.
4) есно, все равно остается вариант, когда человек будет забит в базу 2 раза.
ЗЫ. Как то писали скрипт по поиску дублей людей в наложке. Ужаснулись результатам его работы.


 
Игорь Шевченко ©   (2008-03-19 11:20) [51]

Sergey13 ©   (19.03.08 10:19) [49]


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


Каким образом, если не секрет ?


> Нет конечно, но позволяет системе нормально функционировать
> внутри себя в то время, как идет разбор причин отсутствия
> связи с внешними системами.


Я имел в виду связь по данным. Типа по идентификаторам...

ANB   (19.03.08 10:52) [50]


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


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


> ЗЫ. Как то писали скрипт по поиску дублей людей в наложке.
>  Ужаснулись результатам его работы.


Так тоже люди вводят. Ошибается чаще всего человек, а не программа. А программе бы желательно потенциальные ошибки отслеживать


 
Sergey13 ©   (2008-03-19 12:01) [52]

> [51] Игорь Шевченко ©   (19.03.08 11:20)
> Каким образом, если не секрет ?
Меняем просто атрибуты, а не связи. Типа смена неправильного номера паспорта.

> Я имел в виду связь по данным. Типа по идентификаторам...

Я тоже про это. При импорте/экспорте часть данных ушла в ошибки. Для внутреннего функционирования системы это фиолетово. Можно спокойно искать ошибку, поменять атрибут и/или переназначить ссылки. Система в это время спокойно функционирует. А вот если связи настроены по ключам вызвавшим сбои, менять придется гораздо больше и не всегда тривиальными способами (когда нет каскадного изменения) и все это на живой системе.

> Ошибается чаще всего человек, а не программа.
Именно об этом я и думал, когда писал [1]. Совсем неплохо, ИМХО, иметь независящий от человека механизм хотя бы внутреннего функционирования системы.


 
Игорь Шевченко ©   (2008-03-19 12:09) [53]

Sergey13 ©   (19.03.08 12:01) [52]


> Меняем просто атрибуты, а не связи. Типа смена неправильного
> номера паспорта.


Извини, но менять неправильный номер что так, что сяк - фиолетово.


> Я тоже про это. При импорте/экспорте часть данных ушла в
> ошибки. Для внутреннего функционирования системы это фиолетово.
>  Можно спокойно искать ошибку, поменять атрибут и/или переназначить
> ссылки. Система в это время спокойно функционирует. А вот
> если связи настроены по ключам вызвавшим сбои, менять придется
> гораздо больше и не всегда тривиальными способами (когда
> нет каскадного изменения) и все это на живой системе.


И что ? Это то же самое, что и исправление ошибки. Причем тут экспорт/импорт и прочее ?


 
ANB   (2008-03-19 13:03) [54]


> но для этого потребуется вводить этот номер в любую систему,
>  куда ты будешь экспортировать данные.

Мы их ИМПОРТИЛИ. И собирали эти номера со всех источников. Если человек числился в нескольких - у него была инфа в каком источнике у него какой ИД.
И очень тяжко, когда импортишь, а этот ИД внешняя система не присылает.


> Извини, но менять неправильный номер что так, что сяк -
> фиолетово.

Поменять номер в одной таблице или по всей цепочке связей ?

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


 
Игорь Шевченко ©   (2008-03-19 13:16) [55]

ANB   (19.03.08 13:03) [54]

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

А ты мне начинаешь про есть системы где физиков и юриков одинаково и поэтому их не надо по паспорту.


> Поменять номер в одной таблице или по всей цепочке связей
> ?


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


 
ANB   (2008-03-19 13:29) [56]


> Да хоть и во всей цепочке - не руками же каждый менять,
> сервер сделает.

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


 
Sergey13 ©   (2008-03-19 13:44) [57]

> [55] Игорь Шевченко ©   (19.03.08 13:16)

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

> а не так что "как обычно - генерацией".

Эта "красная тряпка" уже по моему выцвела вся пока мы тут "спорим".
Я же писал, что свой пост [1] писал имея в виду скорее ручное заполнение ПК (уж так я понял вопрос). Что плохого в этом случае в генерации ключей?
Автор после задания вопроса пропал напрочь, посему вряд ли мы узнаем о его намерениях.


 
Игорь Шевченко ©   (2008-03-19 13:51) [58]

Sergey13 ©   (19.03.08 13:44) [57]


> Но ты похоже упорно не признаешь для других права использовать
> генераторы ключей.


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


> Автор после задания вопроса пропал напрочь, посему вряд
> ли мы узнаем о его намерениях.


Да нафиг он нужен - автор ? :))

ANB   (19.03.08 13:29) [56]

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


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


 
ANB   (2008-03-19 14:44) [59]


> А триггеры на заполнение генерированных ключей новые программисты
> не забывают писать ?

Триггера на это дела могут генерятся автоматом. А вот правильную цепочку чистки приходится писать ручками.

> В тех случаях, когла не существует удобного уникального
> ключа вне системы.

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


 
Игорь Шевченко ©   (2008-03-19 14:52) [60]

ANB   (19.03.08 14:44) [59]

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

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

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


 
ANB   (2008-03-19 15:02) [61]


> обязательно придется по внешним не менее ключевым атрибутам
> сравнивать

Ну куда деваться то.


 
Sergey13 ©   (2008-03-19 15:03) [62]

> [60] Игорь Шевченко ©   (19.03.08 14:52)
> Ни данные по ним не выгрузишь вовне, ни загрузишь ничего с ними
Есть очень много систем (может их даже большинство), которым вообще не нужен импорт/экспорт. Они сами по себе.


 
Игорь Шевченко ©   (2008-03-19 15:19) [63]

Sergey13 ©   (19.03.08 15:03) [62]

Безусловно. Насчет большинства - не соглашусь, но есть. Точно также есть много систем, где не требуются ключи в искусственном виде, и есть много систем, где не требуются ключи в естественном виде.

"Их тоже следует убивать" (с)

Все это к одному - что всякий овощ, и т.п.


 
Sergey13 ©   (2008-03-19 15:23) [64]

> [63] Игорь Шевченко ©   (19.03.08 15:19)
> Насчет большинства - не соглашусь, но есть.

Просто наверное у нас разные предметные области. Но это не тема для спора, ИМХО.



Страницы: 1 2 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.04.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.59 MB
Время: 0.009 c
2-1205916579
Дмитрий
2008-03-19 11:49
2008.04.13
процент заряда акумулятора на нотбук ?


15-1203967236
@!!ex
2008-02-25 22:20
2008.04.13
Программирование на Delphi на приставки


15-1204034089
sds
2008-02-26 16:54
2008.04.13
Есть программа которая работает с БД.


2-1205901637
HTML
2008-03-19 07:40
2008.04.13
Html редактор


15-1201783465
DevilDevil
2008-01-31 15:44
2008.04.13
Помогите компонентом-табличкой...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский