powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
25 сообщений из 218, страница 3 из 9
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
    #39628862
stenford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAНе поймёт так пнёт какого-нибудь айтишника, который про себя подумает: "Что, дура, разве не видишь, что написано 'attempt to store duplicate value (visible to active transactions) in unique index PERS_IDX_LOGIN. Problematic key value is (<expression> = Vasya)'? Ясен пень, что такой логин уже есть!", - а в слух вежливо скажет, что надо придумать другой логин.

это ты всерьез такие ошибки пользователю выводишь? боже.. В данной ситуации кстати когда система по-сути однопользовательская даже говнокод написанный хвостом "без заморочек на проверки" будет работать т.к. ты по-определению не можешь получить конфликты обновлений
...
Рейтинг: 0 / 0
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
    #39628864
stenford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА за
Код: sql
1.
2.
IF EXISTS (SELECT 1 FROM PERSONS WHERE LOGIN = :login)
  RETURN -5


каких люлей отвесят и с какой аргументацией?
это ты хвосту такие вопросы задавай, я логику в хранимках с возвратом кода исполнения уже забыл когда писал в последний раз
...
Рейтинг: 0 / 0
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
    #39628882
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stenfordskyANAНе поймёт так пнёт какого-нибудь айтишника, который про себя подумает: "Что, дура, разве не видишь, что написано 'attempt to store duplicate value (visible to active transactions) in unique index PERS_IDX_LOGIN. Problematic key value is (<expression> = Vasya)'? Ясен пень, что такой логин уже есть!", - а в слух вежливо скажет, что надо придумать другой логин.

это ты всерьез такие ошибки пользователю выводишь? боже..
Дурак что-ли? Конечно не вывожу.

А ты покажешь код как ты понимаешь по ошибке, что именно логин такой уже существует, а не ник, не номер паспорта, или что-то ещё?
Очень любопытно.

Ну и хоть один сайт, где выводится сообщение о том, что такой логин уже существует в системе после того, как попытались что-то в БД записать.
Давно таких не видел, тоже любопытно.
...
Рейтинг: 0 / 0
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
    #39628884
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stenfordskyANAА за
Код: sql
1.
2.
IF EXISTS (SELECT 1 FROM PERSONS WHERE LOGIN = :login)
  RETURN -5



каких люлей отвесят и с какой аргументацией?
это ты хвосту такие вопросы задавай, я логику в хранимках с возвратом кода исполнения уже забыл когда писал в последний раз
Я тоже давно так не писал. Но ты же большой спец по люлям на code review, вот я тебя и спрашиваю.
Как-то "я логику в хранимках с возвратом кода исполнения уже забыл когда писал" не тянет на аргументацию в пользу люлей
...
Рейтинг: 0 / 0
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
    #39628886
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stenfordлюбой аттрибут, на который навешано условие уникальности/ссылочной целостности должен проверяться на уровне БД
Да, это же очевидно! Было бы странно, если бы создал уникальный индекс, а его уникальность не проверяется
...
Рейтинг: 0 / 0
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
    #39628888
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stenfordлюбой аттрибут, на который навешано условие уникальности/ссылочной целостности должен проверяться на уровне БД

Покажи место в этом треде, где говорилось иное, или хоть что-то, что противоречило этому утверждению, форумное балаболище.
...
Рейтинг: 0 / 0
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
    #39628910
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я кстати видал на одном смежном горе проекте попытки парсить ошибки из СУБД, и переводить их на человечий язык пользователя. Во-первых, это работало только на том, что лично протестировал разработчик, при чём на локальной версии БД. При заливки на продакшен всё накрылось медным тазом, так как версия продакшена отличалась от дев. Во-вторых, после обновления версии БД, ошибки стали прилетать локализованные, всё опять накрылось, а разраба к тому времени уже выгнали (подробностей не знаю, но надеюсь с позором).
...
Рейтинг: 0 / 0
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
    #39628913
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати внезапно в Microsoft придумали UserValidator , что валидирует пользователей до сохранения.
И ему, скуа, можно выставить свойство RequireUniqueEmail .

Походу пора выезжать к ним, чтобы люлей раздать
...
Рейтинг: 0 / 0
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
    #39629004
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAКстати внезапно в Microsoft придумали UserValidator , что валидирует пользователей до сохранения.
И ему, скуа, можно выставить свойство RequireUniqueEmail .

Походу пора выезжать к ним, чтобы люлей раздать
а ты код посмотрел, как это реализовано?
...
Рейтинг: 0 / 0
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
    #39629024
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этот код проверяет не уникальность имейл, а кому он принадлежит в каком то тупом контексте какого то тупого менеджера юзеров
...
Рейтинг: 0 / 0
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
    #39629027
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уникальность может обеспечить только владелец ресурса
...
Рейтинг: 0 / 0
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
    #39629034
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRos,

тут обсуждается сама идея вынести проверку уникальности логина в код, что отрабатывает до сохранения в БД
реализация ясен пень зависит от
...
Рейтинг: 0 / 0
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
    #39629038
alex55555
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В последней части спора правы все. Но точно так же в последней части спора неправы многие.

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

В общем опять всё уходит в сторону разнообразия требований, но тем не менее даже если "до" и "во время" объединены, всё равно не вредно помнить о наличии разделения на "до" и "во время". Поэтому stenford прав, что напомнил, а остальные правы, что указали ему на неполноту напоминания.

Ну и ошибки по констрейнтам из базы вам всем как раз об этой теме и призваны напоминать.
...
Рейтинг: 0 / 0
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
    #39629051
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosЭтот код проверяет не уникальность имейл, а кому он принадлежит в каком то тупом контексте какого то тупого менеджера юзеров
Ахаха, ну да этот тупой менеджер юзеров вызывает тупой метод FindByEmailAsync (говорят, что в компании камрада stenford за это выдают люлей на code review).
И если юзер с таким мылом найден в хранилище, то формируется IdentityError с кодом DuplicateEmail и соответсвующим описанием проблемы.
...
Рейтинг: 0 / 0
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
    #39629058
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555,

а Вы сами-то как проверяете уникальность логина, домена, ника, почты при регистрации?
До записи, или пишете в базу и обрабатываете ошибки?
...
Рейтинг: 0 / 0
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
    #39629069
stenford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAДурак что-ли? Конечно не вывожу.
правда не выводишь? А сюда зачем тогда написал? Что-бы показать как не выводишь? Какая интересная поведенческая модель, по некоторым персонажам тут можно диссертации по психиатрии защищать

skyANAА ты покажешь код как ты понимаешь по ошибке, что именно логин такой уже существует, а не ник, не номер паспорта, или что-то ещё?
Очень любопытно.

да легко

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
try
                {
                    SaveCustomer(customer);
                }
                catch (DbUpdateException ex)
                {
                    System.Data.SqlClient.SqlException sqlException = (System.Data.SqlClient.SqlException)ex.InnerException;

                    switch (sqlException.Number)
                    {
                        case PK_VIOLATION:
                            throw new DuplicateLoginException();
                        case IX_VIOLATION:
                            throw new DuplicateMobileNumberException();
                        default:
                            throw;
                    }
                }



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

skyANAНу и хоть один сайт, где выводится сообщение о том, что такой логин уже существует в системе после того, как попытались что-то в БД записать.
Давно таких не видел, тоже любопытно.
ты сам-то понял, что написал? Ты по одному взгляду на сайт собрался определить реализацию конфликтов обновлений? Ты точно понимаешь о чем мы тут разговариваем-то?
...
Рейтинг: 0 / 0
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
    #39629074
stenford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAэто ты хвосту такие вопросы задавай, я логику в хранимках с возвратом кода исполнения уже забыл когда писал в последний раз
Я тоже давно так не писал. Но ты же большой спец по люлям на code review, вот я тебя и спрашиваю.
Как-то "я логику в хранимках с возвратом кода исполнения уже забыл когда писал" не тянет на аргументацию в пользу люлей [/quot]
теперь спокойно сядь, подумай, и переформулируй вопрос в логически связанной форме, а то твой поток сознания парсить лень
...
Рейтинг: 0 / 0
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
    #39629080
stenford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAКстати внезапно в Microsoft придумали UserValidator , что валидирует пользователей до сохранения.
И ему, скуа, можно выставить свойство RequireUniqueEmail .

Походу пора выезжать к ним, чтобы люлей раздать
ты точно понимаешь о чем мы тут говорим? Конфликт обновления знаешь что такое? Знаешь как их надо обрабатывать? Или увидев флаг в менеджере юзеров решил что он все за тебя сам сделает?
...
Рейтинг: 0 / 0
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
    #39629082
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И все-таки непонятно, с чем связано желание проверять уникальность до записи в базу данных
...
Рейтинг: 0 / 0
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
    #39629086
stenford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schiИ все-таки непонятно, с чем связано желание проверять уникальность до записи в базу данных
связано с незнанием принципов работы баз данных и того, как работают многопользовательские системы в целом
...
Рейтинг: 0 / 0
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
    #39629089
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stenford
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
switch (sqlException.Number)
                    {
                        case PK_VIOLATION:
                            throw new DuplicateLoginException();
                        case IX_VIOLATION:
                            throw new DuplicateMobileNumberException();
                        default:
                            throw;
                    }



Валидация на эксепшенах.

И это тело ещё тут что-тото задвигает про code review, про собеседования и прочее?

Это примерно как колхозник будет объяснять математикам, как правильно высчитывать площадь, с помощью квадратной фанеры метр на метр.
...
Рейтинг: 0 / 0
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
    #39629092
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stenfordschiИ все-таки непонятно, с чем связано желание проверять уникальность до записи в базу данных
связано с незнанием принципов работы баз данных и того, как работают многопользовательские системы в целом

Да уже понятно про ваш колхоз всё
...
Рейтинг: 0 / 0
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
    #39629102
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schiИ все-таки непонятно, с чем связано желание проверять уникальность до записи в базу данных

На пальцах

1. Разнесение логики валидации, это однозначно очень плохо, тут даже без комментариев
2. Невозможность протестировать валидацию, так как она становится завязана на инстанс базы данных
3. Валидация на сообщениях из базы данных, которые строго не регламентируются, так как это просто message, который может поменяться в любой версии и не совместим с другими СУБД в принципе
3.1. Посмотрите на убожеский код stenford , не видите проблему? Я вижу, он не отделяет нарушение разных констрейтов одного типа. Он на эксепшенах, а как ещё? Ведь ошибка БД это уже эксепшен.
4. Валидация на изменяющей операции БД, при которой создаётся транзакция, а это фейл и за это могут тупо отлупить по рукам, да и уволить нафиг.
5. Желание валидировать ДО операции в транзакции, это повсеместно.

И вообще, я не понимаю, чего тут обсуждать, валидация на нарушениях констрейтов это полный идиотизм, skyANA же просто интеллигентно троллит колхозника, очевидно. И печально.
...
Рейтинг: 0 / 0
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
    #39629106
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosЭтот код проверяет не уникальность имейл, а кому он принадлежит в каком то тупом контексте какого то тупого менеджера юзеров

seriously? видно, насколько внимательно ты смотрел..
...
Рейтинг: 0 / 0
Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
    #39629109
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex55555Ну и ошибки по констрейнтам из базы вам всем как раз об этой теме и призваны напоминать.

Ну тогда и не проблема все ошибки и эксепшены показывать пользователю.
...
Рейтинг: 0 / 0
25 сообщений из 218, страница 3 из 9
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Ссылочная целостность. Проверка данных до записи или обработка ошибок после?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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