Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5   вперед  Ctrl      все
 Re: FireDAC - присвоить Null полю  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 61933
Блог
rgreat
На это нормативные документы есть

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

rgreat
Ну и на крайняк можно спросить у имяносителя, что у него имя а что фамилия.

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

rgreat
А что вообще писать никуда не надо.

А вот таких частей как раз нет.

Сообщение было отредактировано: 14 май 20, 19:11
14 май 20, 19:12    [22133237]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC - присвоить Null полю  [new]
rgreat
Member

Откуда:
Сообщений: 5977
softwarer
Ну так примените нормативные документы, не вопрос. Только это никак не меняет дела, просто вместо "имярек спроектировал кривую БД" получится "имярек с использованием нормативных документов спроектировал кривую БД".

Откуда взялся вывод о "кривую"?

softwarer
Ну для начала трое из названных уже умерли и вряд ли ответят.
К умершим "на крайняк" не применим.

softwarer
Не все из них вообще поняли бы Ваш вопрос. И вообще, с чего Вы решили, что там есть хотя бы одна фамилия?

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

softwarer
А вот таких частей как раз нет.
Как минимум у Пикассо отчество - Хосе.
14 май 20, 19:38    [22133256]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC - присвоить Null полю  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 61933
Блог
В общем, пока не задали следующую серию малогодных вопросов, рассказываю. Имя человека - это последовательность элементов, например Публий Корнелий Сципион Африканский Старший. Каждый из этих элементов имеет тип, которых довольно много. Например, "Корнелий" - это фамилия (с определённой точностью). Как я уже сказал, типов элементов довольно много и полно и корректно реализовать работу с ними - нетривиальная задача, не говоря уже о вопросе, кто будет вводить всю эту информацию. Там, где информации о типах нет, манипуляций с составляющими имени лучше избегать, потому что если вы напишете что-нибудь типа "Корнелий П. С." - вас, мягко говоря, не поймут. Там, где нет возможности спросить у носителя имени, тип элемента с определённой точностью можно определить по справочнику, но и в этом случае следует соблюдать изрядную осторожность - например, попробуйте угадать, где в "Аарон Александр" имя, а где - фамилия. В любом случае, как только распознана мало-мальски нетривиальная ситуация, например, необычная частица - самодеятельность надо прекращать. Если, конечно, не хотите быть идиотом.

Сообщение было отредактировано: 14 май 20, 19:43
14 май 20, 19:42    [22133259]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC - присвоить Null полю  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 61933
Блог
rgreat
Потому что там есть фамильные приставки "де" и "дель"

Ну и какая же фамилия у д'Артаньяна - де Бац или дель Кастельмор?
14 май 20, 19:44    [22133260]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC - присвоить Null полю  [new]
rgreat
Member

Откуда:
Сообщений: 5977
softwarer
Ну и какая же фамилия у д'Артаньяна - де Бац или дель Кастельмор?
Почему "или"?

Это как Салтыков-Щедрин по нашему.

Хотя я могу быть не прав и тут "де Кастельмор" это титул.
Я тут не спец.

Сообщение было отредактировано: 14 май 20, 19:50
14 май 20, 19:46    [22133261]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC - присвоить Null полю  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 61933
Блог
rgreat
Это как Салтыков-Щедрин по нашему.

Вы правда так думаете?

Вспоминается анекдот про Гей-Люссака и Бойля-Мариотта.
14 май 20, 19:48    [22133263]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC - присвоить Null полю  [new]
rgreat
Member

Откуда:
Сообщений: 5977
softwarer
Вы правда так думаете?
Я могу только предполагать.

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

Сообщение было отредактировано: 14 май 20, 19:51
14 май 20, 19:51    [22133264]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC - присвоить Null полю  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9844
По сути тут надо не разбивать на составляющие, а вводить формы обращения:
* полное имя - ФИО или что там еще, как записано в пасспорте
* краткая форма - имя, одно если их несколько, как челу удобнее
* официальная форма - ИО в РУ, хз как еще где
* погоняло - как в полицейских БД
и тд

:)
14 май 20, 19:54    [22133265]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC - присвоить Null полю  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 61933
Блог
rgreat
В свое время за подобные речи в контексте имени дворянина вас бы запороли на конюшне

Михаил Евграфович был довольно умным человеком, поэтому, думаю, он сначала посмеялся бы, а потом указал бы Вам на то, что "Салтыков-Щедрин", равно как "Ульянов-Ленин" - это вообще не фамилия.

Dmitry Arefiev
По сути тут надо не разбивать на составляющие, а вводить формы обращения:

Конечно. Для большинства реальных задач правильный подход - именно так.
14 май 20, 20:00    [22133270]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC - присвоить Null полю  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 61409
softwarer> Смотря что считать реальным миром.

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

softwarer> Пока ограничен паспортным столом в регионе
softwarer> с доминирующе русским населением - можно считать, что далеко

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

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

Отчего же не соответсвует... Просто там, где отчество отсутсвует по
региональной специфике - для соотв. человека оставишь поле пустым.


Тем не менее, отложим формулу имени в сторонку и упростим задачу:
некий фонд помощи малоимущим, атрибут "адрес малоимущего" - ты
различаешь понятия "адрес неизвестен" и "без адреса" ?

Posted via ActualForum NNTP Server 1.5

14 май 20, 20:08    [22133273]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC - присвоить Null полю  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 61409
Dmitry Arefiev> По сути тут надо не разбивать на составляющие, а вводить формы обращения

Это когда речь идёт о конкретной БД и таблицах.
А тут речь зашла аж об абстрактном различии между
строковыми атрибутами и атрибутами всех остальных
типов (числовые, даты и пр.), а отчество/midname
просто наиболее очевидный реальный пример.

Posted via ActualForum NNTP Server 1.5

14 май 20, 20:17    [22133276]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC - присвоить Null полю  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9844
Вам на слова разбить, обратиться к отдельно взятому челу, или идентифицировать чела ? :)
Не надо кислое с жестким путать ...
14 май 20, 20:19    [22133278]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC - присвоить Null полю  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 61409
Нам объяснить, что Null <> 0 ровно настолько же, насколько Null <> ''
(по крайней мере до тех пор, пока для пустой строки не заведено
специальное значение а-ля 'это наша пустая строка').

Posted via ActualForum NNTP Server 1.5

14 май 20, 20:22    [22133280]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC - присвоить Null полю  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 61933
Блог
Гаджимурадов Рустам
Отчего же не соответсвует... Просто там, где отчество отсутсвует по
региональной специфике - для соотв. человека оставишь поле пустым.

Оттого, что сама по себе фраза "оставишь поле пустым" уже означает структуру БД, не релевантную задаче.

Гаджимурадов Рустам
некий фонд помощи малоимущим, атрибут "адрес малоимущего" - ты
различаешь понятия "адрес неизвестен" и "без адреса" ?

Ты такие примеры выбираешь... адреса - это история ещё повеселее имён

Я всё пытаюсь сообразить, как бы ответить, чтобы было коротко и по делу. Попробую так. У физических лиц чаще всего говорят про адрес регистрации и адрес фактического проживания. Если говорить про адрес регистрации, то с точки зрения гипотетического фонда помощи я различаю понятия "у человека нет паспорта", "у человека есть паспорт и в нём нет адреса регистрации" и "у человека есть паспорт и в нём есть адрес регистрации". Если говорить про адрес проживания, то с точки зрения того же фонда я понимаю единственное понятие "человек сообщил N адресов", где N - неотрицательное целое число.

Я понимаю, к какой структуре данных ты натягиваешь, но найти задачу, для которой она бы хорошо подходила, чертовски сложно. Для иллюстрации твоего подхода я предлагаю тебе ответить на вопрос, очень похожий на твой: база жильцов многоквартирного дома, различаешь ли ты понятия "у жильца нет автомобиля" и "неизвестно, есть ли у жильца автомобиль"?
14 май 20, 21:18    [22133293]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC - присвоить Null полю  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9844
Если я не знаю чего-то, то этого не существует :)
14 май 20, 21:31    [22133297]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC - присвоить Null полю  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 61933
Блог
Если я не знаю чего-то, что существует, то окружающие могут об этом рассказать и показать. Если они не могут рассказать и показать, а только знают, что оно существует - это чайник Рассела.
14 май 20, 21:35    [22133299]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC - присвоить Null полю  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 61409
softwarer> Ты такие примеры выбираешь... адреса - это история ещё повеселее имён

Максимально простые, встречающиеся практически
повседневно практически каждому человеку, пусть
и в других ситуациях. И с адресами в приведённом
примере нет никаких сложностей и веселухи, это строка.
Простой журнал, всё по минимуму - фамилия, дата, адрес.

softwarer> адрес проживания, то с точки зрения того же фонда я
softwarer> понимаю единственное понятие "человек сообщил N адресов",
softwarer> где N - неотрицательное целое число.

Упростим до N=1. Ты различаешь "значения/ситуации"
"адрес неизвестен/не сообщил" и "сообщил, что нет адреса"?

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

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

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

Нормальных форм много, больше одной. :)

softwarer> различаешь ли ты понятия "у жильца нет автомобиля"
softwarer> и "неизвестно, есть ли у жильца автомобиль"?

Если это нужно для учёта (парковочных мест и пр.) - безусловно.
Хотя это не строковое поле, в любом случае/варианте.

Posted via ActualForum NNTP Server 1.5

14 май 20, 22:38    [22133317]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC - присвоить Null полю  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 61933
Блог
Гаджимурадов Рустам
И с адресами в приведённом примере нет никаких сложностей и веселухи, это строка. Простой журнал, всё по минимуму - фамилия, дата, адрес.

Если "простой журнал, всё по минимуму - фамилия, дата, адрес", то нет, я не различаю названных тобой ситуаций. Более того, в такой ситуации их никто и никогда их различает. Различают только две ситуации - "в графе есть адрес" или "в графе нет адреса". Всё очень просто, как в бумажной анкете. Человек сдаёт бумажку, а там в графе либо буквы, либо пустота / прочерк. И никаких "адрес есть, но неизвестен".

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

Я отвечаю на это, что при подробном анализе оказывается, что твоего "простого дизайна с хаком" недостаточно, чтобы соответствовать усложнённым требованиям. Его сфера применения очень узка. Настолько, что реальных мест для него практически не случается. Твои "простые ситуации" годятся только на уровне учебных примеров из книжек "Освой SQL", а в реальной работе приходится делать как следует.

Извини за неделикатность, но я достаточно долго пытался объяснить это вежливо.

Гаджимурадов Рустам
Упростим до N=1. Ты различаешь "значения/ситуации"
"адрес неизвестен/не сообщил" и "сообщил, что нет адреса"?

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

Гаджимурадов Рустам
Я ни на что не натягиваю, я лишь демонстрирую на конкретных примерах

Где?! Покажи мне хоть один конкретный пример, который ты назвал. Ты оперируешь обрывками и общими словами.

Гаджимурадов Рустам
softwarer> различаешь ли ты понятия "у жильца нет автомобиля"
softwarer> и "неизвестно, есть ли у жильца автомобиль"?

Если это нужно для учёта (парковочных мест и пр.) - безусловно.

И как же ты будешь это различать? Обрисуешь дизайн БД?

Гаджимурадов Рустам
Хотя это не строковое поле, в любом случае/варианте.

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

Сообщение было отредактировано: 14 май 20, 23:00
14 май 20, 22:59    [22133324]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC - присвоить Null полю  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 61409
softwarer> Различают только две ситуации - "в графе есть адрес" или "в графе нет адреса".
softwarer> Всё очень просто, как в бумажной анкете. Человек сдаёт бумажку, а там в графе
softwarer> либо буквы, либо пустота / прочерк. И никаких "адрес есть, но неизвестен".

Именно так, прочерк. Который в БД выродится либо в пустую строку
(не Null), либо в предоговорённое значение типа "__отсутствует".
А ты (видимо) для этой цели будешь пытаться добавить "галочку".


>> левое требование, которое не соответствует реальности
>> а зачем в этом простом журнале их различать?

Ась?! Необходимость отличать просто малоимущих
от бездомных - это левое требование? Серьёзно?


>> Его сфера применения очень узка. Настолько, что
>> реальных мест для него практически не случается.

Ты уж определись - "узка" или "не присутствует в реальной жизни".


>> Покажи мне хоть один конкретный пример, который ты назвал.
>> Ты оперируешь обрывками и общими словами.

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

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


>> И как же ты будешь это различать? Обрисуешь дизайн БД?

Не понял вопроса. Если делать как надо (я никогда не автоматизировал
УК, парковки и пр., поэтому навскидку) - для квартиры (а не жильца)
есть числовой параметр "количество нужных/желательных парк.мест"
(или 2, если хочется их различать - ХЗ). Если парк.места отличаются
по формату/площади/иным параметрам (охрана и пр.) - выделяется
отдельная реляция 1-N. Строковых параметров тут нет.


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

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



Posted via ActualForum NNTP Server 1.5

15 май 20, 09:14    [22133446]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC - присвоить Null полю  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 61933
Блог
Гаджимурадов Рустам
Именно так, прочерк. Который в БД выродится либо в пустую строку
(не Null), либо в предоговорённое значение типа "__отсутствует"

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

Что касается прочерка... у меня была мысль, что ты начнёшь говорить что-нибудь типа "можно оставить пустой, и это будет представлено в БД как пустая строка, и можно поставить прочерк, и это будет аналог null", но я и вообразить не мог, что ты станешь натягивать на то, что прочерк - это аналог пустой строки.

Нет. Прочерк - это "особое значение, показывающее отсутствие значения". Null в чистом виде. Точно так же прочерк можно поставить в нестроковой графе анкеты, например, "стаж работы" (если его нет) или "дата смерти" (если человек жив). И в сколько-нибудь адекватной БД прочерк будет представлен именно что null-ом.

Гаджимурадов Рустам
А ты (видимо) для этой цели будешь пытаться добавить "галочку".

Чушь не пори.

Гаджимурадов Рустам
Ась?! Необходимость отличать просто малоимущих
от бездомных - это левое требование? Серьёзно?

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

Гаджимурадов Рустам
Ты уж определись - "узка" или "не присутствует в реальной жизни"

Я знаю один-единственный пример, когда дизайн с различием null и '' соответствует бизнес-логике. Кроме того, за десятилетия таких обсуждений я каждый раз просил дать мне примеры - и никто их не называл. Даже таких спорных, как у тебя - вообще не называли. Отделывались общими словами про особое значение null, идиотским аргументом про "а ноль тоже приравнять null-у" итп. Из этого я делаю вывод, что такого нет не только в моей практике, но и в практике тех, кто в спорах отстаивает этот подход. Но поскольку один пример я всё-таки знаю, я честно говорю "очень узка", а не "отсутствует в принципе".

Гаджимурадов Рустам
То, что тебе пример не нравится или ты считаешь его обрывком -
вовсе не значит, что его нет.

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

Гаджимурадов Рустам
Кстати, вот ещё пример, анкета (на допуск, на трудоустройство и пр.), поле "наличие судимостей у близких родственников" - ты понимаешь разницу между "нет судимостей" и "не располагаю сведениями"?

Я ни разу не видел в такой анкете предусмотренного способа указать "не располагаю сведениями". Уверен, что и ты не видел. Что ещё ты придумаешь, лишь бы не признавать отсутствие реальных примеров?

Гаджимурадов Рустам
Не понял вопроса.

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

Гаджимурадов Рустам

Если делать как надо (я никогда не автоматизировал
УК, парковки и пр., поэтому навскидку) - для квартиры (а не жильца)
есть числовой параметр "количество нужных/желательных парк.мест"
(или 2, если хочется их различать - ХЗ). Если парк.места отличаются
по формату/площади/иным параметрам (охрана и пр.) - выделяется
отдельная реляция 1-N. Строковых параметров тут нет.

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

Гаджимурадов Рустам
Во-первых, имена/отчества/адреса - это таки строковые поля/атрибуты

Во-первых, это категорически не строковые атрибуты. Полное имя, как и адрес - это составной объект. Если бизнес-логика ограничена простыми операциями, может хватить plain text представления этого объекта. Примерно как xml можно положить в строковое поле, но это не делает "анкету на трудоустройство" строковым атрибутом.

Отчество - это вообще не атрибут. Это один из возможных типов "составляющей имени".

Гаджимурадов Рустам

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

Извини, изложу это короче: "Бла-бла-бла, softwarer, ты излишне категоричен".

Это типовой упрёк в мою сторону. Я так не думаю, но могу и ошибаться. Факт в следующем: если взять любое реальное приложение, то окажется, что для 99.9% строковых полей в нём логике "null и пустая строка отличаются" не только не нужна, но и вредна. "Вредна" - означает, что в использующей её СУБД для решения той же задачи следует написать больше кода и выше вероятность допустить при этом ошибку. Поэтому даже если тебе удастся привести несколько примеров, когда эта логика полезна - с точки зрения разработки в целом рациональнее работать без неё, усложнив решение 0.1% задач ради упрощения 99.9% Можно считать моё мнение излишне категоричным, можно не считать, но факта это не отменит.

И да, можешь взять любое своё приложение и подсчитать - для скольких полей ты действительно используешь это различие. То, что ты не назвал ни одного примера из своей практики, говорит об этом количестве довольно ярко. Даже если не поднимать вопроса "а как стоило бы решить эту задачу на самом деле".
15 май 20, 10:42    [22133511]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC - присвоить Null полю  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 61409
softwarer> Прочерк - это "особое значение, показывающее отсутствие значения". Null в чистом виде

Прочерк в графе "адрес" чем будет, повтори ещё раз?
Только без "проживания", "регистрации" и пр.

softwarer> Необходимость отличать их по адресу - это бред

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

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

Таким - в смысле "определяют статус бездомного по адресу"
или "различают бездомных и тех, у кого адрес неизвестен"?

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

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

> Это структурный аналог твоего вопроса, единственная разница,
> что вместо информации об адресе информация об автомобиле.

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

> Это и есть правильное решение для этого случая,
> соответствующее логике реального мира

Разве кто-то спрашивал твоё мнение о правильном решении?
В реальных анкетах нет граф/возможностей "приложите таблицу
с полным списком адресов" или "разбейте имя на составляющие".

> "null и пустая строка отличаются" не только не нужна, но и вредна

Ну т.е. разницы между "не существует" и "по твоему скромному
не нужна и вредна" тоже нет?

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

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

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

Posted via ActualForum NNTP Server 1.5

15 май 20, 13:25    [22133641]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC - присвоить Null полю  [new]
vavan
Member

Откуда: Казань
Сообщений: 3513
softwarer
"Вредна" - означает, что в использующей её СУБД для решения той же задачи следует написать больше кода и выше вероятность допустить при этом ошибку
помню что когда после стольких лет на оракле пришлось заюзать постгре в первый момент даже был определенный сюрприз с их различием null и пустой
15 май 20, 13:39    [22133649]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC - присвоить Null полю  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 61933
Блог
Гаджимурадов Рустам
Прочерк в графе "адрес" чем будет, повтори ещё раз?

Прочерк в любой графе будет null-ом.

Гаджимурадов Рустам
Только без "проживания", "регистрации" и пр.

Вспомни об этом, когда ещё раз подумаешь, что даёшь "конкретные примеры".

Гаджимурадов Рустам
Отличают не по адресу, а по статусу.

Именно. То есть весь твой пафос в итоге свёлся к тому, что у человека есть статус (некое перечисление либо справочник). Есть некий бизнес-процесс, согласно которому он этот статус получает. В самом простом виде - по устному заявлению. То есть он говорит "я бездомный", секретарша выбирает в комбобоксе "Бездомный", при этом поле "Адрес" в интерфейсе автоматически исчезает. Может быть и более сложный процесс (например, запрос в ЕГРН). И всё это не имеет ни малейшего отношения к соотношению null-ов и пустых строк.

Гаджимурадов Рустам
Который может определяться по галочке (видимо, твой вариант)

Избитая тобой чушь пытается уползти и жалобно повизгивает.

Гаджимурадов Рустам
softwarer> Я крайне сомневаюсь, что "фонд помощи малоимущим" занимается таким

Таким - в смысле "определяют статус бездомного по адресу"
или "различают бездомных и тех, у кого адрес неизвестен"?

И второе, и тем более первое.

Гаджимурадов Рустам
Правильно, предусмотренного способа (галочки) нет.

Глупость стёр. Итак, предусмотренного способа нет. Соответственно, различение этого автором анкеты не предполагается. Не нужна была эта информация тому, кто анкету составлял. Соответственно, ты придумал левое требование о том, что она нужна.

Гаджимурадов Рустам
Поэтому пишут текстом "не располагаю сведениями"
Те, кто поумнее.

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

Гаджимурадов Рустам
Те, кто не такие умные, пишут "нет",
"отсутвуют и пр.". Никогда не слышал? Просвещайся.

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

Гаджимурадов Рустам
Аналогов много можно придумать, но это не сделает атрибуты других типов строковыми.

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

Гаджимурадов Рустам
Разве кто-то спрашивал твоё мнение о правильном решении?

Ты правда хочешь провести разговор в подобной манере?

Гаджимурадов Рустам
В реальных анкетах нет граф/возможностей "приложите таблицу
с полным списком адресов" или "разбейте имя на составляющие"

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

Гаджимурадов Рустам
Ну т.е. разницы между "не существует" и "по твоему скромному
не нужна и вредна" тоже нет?

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

Гаджимурадов Рустам
Во-первых, моя практика не покрывает все примеры реальной жизни

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

Гаджимурадов Рустам
Во-вторых, а смысл их тебе приводить, если ты на каждый говоришь
"неправильно", "обрывок", "надо отдельный атрибут/реляцию создавать"?

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

Гаджимурадов Рустам
Ну ОК, ещё один из относительно недавнего - отдел кадров, воинский
учёт (ты и сам должен был сталкиваться) - номер военника/приписного, разницу между "сотрудник не имеет документа" и "документ есть, но номер неизвестен" (и разную реакцию на них) понимаешь?

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

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

Таким образом, для учёта этого возникает следующий набор атрибутов:

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

Что не так?

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

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

Сообщение было отредактировано: 15 май 20, 14:23
15 май 20, 14:23    [22133693]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC - присвоить Null полю  [new]
ma1tus
Member

Откуда:
Сообщений: 738
Гаджимурадов Рустам
об адресе -
адрес временного пребывания в данном случае тоже "тернарный" -
конкретный адрес, "отсутствует" (совпадает с м.ж.) и "неизвестен".

Не тернарный. Каждый вид адреса существует и обрабатывается отдельно и заполняется или вручную или по кнопке "Заполнить из <имеющегося другого>".

Гаджимурадов Рустам
разницу между "сотрудник не имеет документа" и "документ есть, но
номер неизвестен"

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

Сообщение было отредактировано: 15 май 20, 15:11
15 май 20, 15:09    [22133725]     Ответить | Цитировать Сообщить модератору
 Re: FireDAC - присвоить Null полю  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 61409
softwarer> То есть он говорит "я бездомный", секретарша выбирает в комбобоксе

В каком ещё комбобоксе? Мы до компьютера ещё
не дошли, мы говорим о "логике реального мира".

> или "различают бездомных и тех, у кого адрес неизвестен"?
>
> И второе, и тем более первое.

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

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



В анкетах в конце даже бывает пункт/примечание про
"заведомо ложные сведения".

> После чего кадровичка говорит "Вы испортили бланк"

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

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

Это в смысле не слышал про "родственники не привлекались"
или про соотв. пункт в анкетах? Или что "идиоты, надо было
прочерк ставить или пусто оставлять"?

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

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

> Ты правда хочешь провести разговор в подобной манере?

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

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



> Если ты имеешь в виду что-то другое - вообще не понимаю смысла вопроса.

Я даже не знаю, как перефразировать. Ты видишь/понимаешь
разницу между "ABCD не существует" и "по твоему скромному
ABCD не нужно и вредно"? Безотносительно самого ABCD .

> Нет, не понимаю.

А она есть, включая статью КоАП со штрафом.

> в БД ничего со смыслом "военник у него есть, но номер неизвестен"

Опять БД... Кадровичка что такое БД может даже не
знать, у неё учет может быть до сих пор бумажный.

> Если не принёс, то считается, что он не стоит на учёте


Posted via ActualForum NNTP Server 1.5

15 май 20, 17:45    [22133852]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5   вперед  Ctrl      все
Все форумы / Delphi Ответить