Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.04.13;
Скачать: CL | DM;

Вниз

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

 
Игорь Шевченко ©   (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;
Скачать: CL | DM;

Наверх




Память: 0.62 MB
Время: 0.02 c
15-1203938605
Nogard
2008-02-25 14:23
2008.04.13
ZIP архивы


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


15-1204055076
Kerk
2008-02-26 22:44
2008.04.13
Ненавижу TurboD2006!


15-1204286278
Dmitry S
2008-02-29 14:57
2008.04.13
Существуют ли в природе сетевые с >=2 сетевыми портами?


15-1204077242
Fon
2008-02-27 04:54
2008.04.13
Как заранее проверить влезет текст в TMemo или выдаст ошибку?