Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
Серега 4d_monsterВопросы : Кто как ? Почему? Иногда отсутствие NULL повышает производительность запросов (типа при where field_name is null индексы не работают). Почему это не работают? Очень даже работают на такой запрос, если по нему хорошая селективность. Только что проверил. По полю был уникальный индекс с разрешенным NULL, записей с NULL около 1% По запросу WHERE field_name IS NULL индекс на ура подхватился. (Сервер ASA 8) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 17:57 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
Забавно. Уже давно известно насколько плохой практикой является применение magic numbers в программировании. Но тут готовы вместо честных NULL применять некие "магические" записи ничтоже сумняшеся. Воистину сказано - опыт учит нас тому что он ничему нас не учит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 18:21 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
Old NickА если нужно вывести отчет по людям в городе и при этом пользователь должен подставить город выбрав его из справочника? Если не выбрать никакой город, то как вести себя? Вывести все записи или те что с 0? Лучше иметь в справочнике неопределенный город и подставлять его по-умолчанию. Красивее получается. Я думаю, мы можем придумать массу примеров, где null выгоден или невыгоден. Например, в данном случае, если давать пользователю возможность выбора из списка, то выгоден неопределенный город (хотя я всегда реализовывал это, подставляя label списка = чего-то осмысленное, а в значении списка - null). Но достаточно часто приходится выбирать данные с условием IS NULL, так вот тогда нам нужен список неопределенных значений для каждой сущности (о чем я написал в первом посте) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 18:24 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
да, блин... неудачно пошутил :-) Под новый год не у всех все в порядке с юмором. Плюньте и разотрите. И делайте как нравится и не смотрите на других. У каждого в голове свои тараканы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2004, 18:34 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
Чтобы героически не боротся с NULL у меня почти во всех справочниках есть: Код: plaintext 1. и этот нолик прекрасно к тому же подставляеться как умолчание при автоматическом или ручном заполнении таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2004, 20:43 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
Matt JuntunenDate с Вами :) ЗоринАндрейНо не с Вами ;) Кодд же, согласился бы. А насчет magic numbers это, IMHO, Вы зря, здесь не тот случай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2005, 03:44 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
ChAА насчет magic numbers это, IMHO, Вы зря, здесь не тот случай. Чем это он другой? Если в примере Matt-а замените нолик на -1 или 999999 - смысл от этого не изменится. Когда я вижу NULL - это означает "нет данных" однозначно. А если я увижу 0 то естественно придется задать вопрос - это что? И выслушать объяснения о том как оно замечательно подставляется, как защищены от удаления/изменения обязательные записи в каждом справочнике, как они создаются при инициализации базы и т.д. и т.п. Для решения одной надуманной проблемы столько лишних телодвижений. ИМХО, если вам не нравятся NULL, значит вы просто не умеете их готовить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2005, 11:26 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
ЗоринАндрейЧем это он другой?Возможно, мы имеем разночтения относительно понятия "magic numbers". IMHO, это относится к значениям жестко зашитым в программном коде, но если значение определяется через именованную константу, то оно не относится к magic numbers. Соответственно, если поведение системы можно изменить практически без рекомпиляции, то это не повод говорить о magic numbers. Практически во всех СУБД значения по умолчанию либо именованные, то есть, фактически представляют собой константу, либо привязано к описанию user defined type, опять же поименованному. Таким образом, если быть последовательным, то надо утверждать, что константы есть зло и от них надо избавляться, а кто пользуется ими, тот ничего не смыслит в программировании. Следовательно, все, кто вводит в обращение и поддерживает использование констант, или default, а это "ничтоже сумняшеся" все производители программных продуктов - безграмотны. ЗоринАндрейДля решения одной надуманной проблемы столько лишних телодвижений.Насколько она надуманна - отошлю Вас к Date, мне, простите, неинтересно, повторять здесь его рассуждения, с которыми, до определенной степени, согласен. ЗоринАндрейесли вам не нравятся NULL, значит вы просто не умеете их готовитьРади красного словца и т.д. ? Мне действительно не нравятся NULL, но, поверьте на слово, "готовлю" их не хуже Вас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2005, 16:53 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
ChA ЗоринАндрейДля решения одной надуманной проблемы столько лишних телодвижений.Насколько она надуманна - отошлю Вас к Date, мне, простите, неинтересно, повторять здесь его рассуждения, с которыми, до определенной степени, согласен.По всей видимости, для Вас авторитет тот, кто пишет толстые фолианты и громче всех кричит с различных трибун, так? Дейт допустил огромное количество ошибок, он умудряется противоречить себе, любимому, непростительно часто. В теории он откровенно слаб. Если не верите, то сравните, например, работы Ульмана и Дейта. В том что касается "проблемы" NULL, то это теоретическая "проблема" и здесь ссылки на Дейта... не имеют силы. NULL и трехзначная логика существуют объективно, вне нашего желания или наших представлений. И сводить "проблему" NULL к проектированию БД - это просто непонимать существа. Попробую пояснить простым примером. Допустим нам надо выбрать из двух таблиц Код: plaintext 1. 2. Код: plaintext 1. 2. 3. Значения NULL необходимо использовать и в тех случаях, когда значение одного из полей неизвестно. NULL корректно обрабатывается в агрегатных функциях, в отличие от DEFAULT-значений. Например, представьте, что в таблице FAMILIES поле BIRTHDAY является nullable. Если мы не знаем возраст члена семьи, то оставляем в этом поле значение NULL. Теперь изменим ситуацию, сделаем это поле not null, со значением по умолчанию, например, 01.01.1800. В результате нам становится сложнее найти сотрудника, у которого самый взрослый сын, поскольку мы должны не забыть удалить из выборки тех, кто имеет значение по умолчанию. Но хорошо, если мы знаем об этой "особенности" БД. А если не знаем, то результат выборки может оказаться неправильным. Аналогично можно рассмотреть связи между таблицами. Эти связи (объективно!) могут быть трех видов: детерминированные (FK входит в состав PK), обязательные (FK not nullable, но не входит в PK) и необязательные (FK nullable). Последний случай показывает, что внешний ключ (FK) может не ссылаться на запись в master-table. Как и в случае с DEFAULT здесь можно использовать паллиативное решение и создать дополнительную (промежуточную) таблицу, которая будет ссылаться и на master-table и на detail-table. Это устранит необходимость в хранении "пустых" ссылок. Однако такое решение усложнит структуру БД и, соответственно, повысит сложность запросов к БД. Но во имя чего? Запросы все равно будут содержать NULL в тех полях, значения которых неизвестны, но этого придется специально добиваться с помощью различных OUTER JOIN. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2005, 11:55 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
> Дейт допустил огромное количество ошибок, он умудряется противоречить > себе, любимому, непростительно часто. Цитаты - в студию. > Что вернет запрос в полях F.FIRST_NAME, F.LAST_NAME, F.BIRTHDAY, если у > сотрудника нет детей или возраст детей не соответствует критериям выборки? > Конечно, NULL. Есть ли альтернатива? А как это Дейту противоречит, позвольте полюбопытствовать? Данные должны _храниться_ без значений null. Потому как null невозможно достоверно интерпретировать: это отсутствие данных как таковых (по целому ряду причин), тупоголовость оператора, ошибка СУБД или что-то еще. А вот в Вашем запросе null интерпретируется абсолютно однозначно. Почувствуйте разницу. > здесь можно использовать паллиативное решение и создать дополнительную > (промежуточную) таблицу, которая будет ссылаться и на master-table и на > detail-table. Это устранит необходимость в хранении "пустых" ссылок. Об этом и говорилось. > Однако такое решение усложнит структуру БД и, соответственно, повысит > сложность запросов к БД. Конечно. > Но во имя чего? А Вы сами что по этому поводу думаете? > Запросы все равно будут содержать NULL в тех полях, > значения которых неизвестны, но этого придется специально добиваться с > помощью различных OUTER JOIN. Не будет неизвестных полей. В принципе. См. выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2005, 13:23 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
OK, есть таблица допустим значений датчиков температуры. Поля: id - Идентификатор записи, может быть например timestamp t1 - температура 1 датчика t2 - температура 2 датчика t3 - температура 3 датчика t4 - температура 4 датчика t5 - температура 5 датчика Данные собираются различными датчиками. Если не испльзовать NULL, как обозначить факт отсутствия данных? Ввести еще 5 полей? Как потом считать средние значения, дисперсию итп(0 - не катит, испортит статистику, -1, 9999, итп тоже) "Прежде чем убить человека, узнай, нет ли у него влиятельных родственников" (с) Библия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2005, 13:52 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
hell. Вообще-то первоначальный вопрос был про значения полей по которым может осущетвлятся соединение таблиц или поиск В Вашем примере никто на необходимость NULL не посягает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2005, 14:38 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
Всё пошло с Old NickАбсолютно правильная система (идеальная, как идеальный газ): 1. не должна иметь null 2. для ввода первичных данных должен использоваться только insert (никаких update и delete не должно быть вообще в системе) 3. для отчетов и вывода данных использовать только select ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2005, 14:51 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
> Всё пошло с И в общем совершенно справедливо сказано. Посмотрите, насколько информативнее будет база данных для Ваших датчиков, спроектированная по приведенным Old Nick правилам. Imho схема может примерно такой: таблица таймера, таблица датчиков, таблица значений температуры датчиков (связи, думаю, понятны), таблиц ошибок (связи тоже понятны; можно с таблицей типов ошибок). Никаких null. Плюс хранение ошибок. Среднее, дисперсию и пр. считать - без проблем. Добавление новых датчиков - без изменения структуры данных. Другое дело, что Вам для Вашей задачи не нужна ни обработка ошибок, ни новые датчики. А критична, например, скорость вставки или размер таблицы. Вы находите компромисс в виде приведенного Вами решения. С null значениями. Работает? - работает. Ценой того, что ошибки Вы не обрабатываете (т. е., не фиксируете, например, штатную остановку датчика (ремонт, замена) или аварийную). Устраивает Вас такое решение? - замечательно. Но при этом не стоит говорить, что используемое Вами решение единственно возможное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2005, 15:42 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
guest_20040621 SemaphoreДейт допустил огромное количество ошибок, он умудряется противоречить себе, любимому, непростительно частоЦитаты - в студиюПочитайте его определения функциональных зависимостей, описания уровней изоляции, выбора ключей, распределенных систем и... рассуждения по трехзначной логике. И сравните эти опусы с работами тех, кто знает то, о чем пишет. guest_20040621 SemaphoreЧто вернет запрос в полях F.FIRST_NAME, F.LAST_NAME, F.BIRTHDAY, если у сотрудника нет детей или возраст детей не соответствует критериям выборки? Конечно, NULL. Есть ли альтернатива?А как это Дейту противоречит, позвольте полюбопытствовать?Любопытство не порок... Дейт "Введение в системы баз данных", К. Диалектика, 1998 г. (стр. 118) Но хотелось бы внести ясность: по нашему мнению, null-значения - целая теория трехзначной логики, на которой они базируются, - являются фундаментальным заблуждением и не должны иметь места в чистой формальной системе, такой какой подразумевается реляционная модель... Но нужно также подчеркнуть, что другие авторы полагают совсем противоположное: в частности, Кодд фактически рассматривает null-значения как неотъемлемую часть реляционной модели (подразумевается работа Codd E.F. The Relational Model for Database Management Version 2)Как видите, Дейт с легкостью вообще исключил NULL из реляционной модели, а Вы хотите, чтобы выборка из РБД возвращала NULL... guest_20040621Данные должны _храниться_ без значений null. Потому как null невозможно достоверно интерпретировать: это отсутствие данных как таковых (по целому ряду причин), тупоголовость оператора, ошибка СУБД или что-то еще. А вот в Вашем запросе null интерпретируется абсолютно однозначно. Почувствуйте разницуИ в моем запросе, и в таблице NULL означает только одно - отсутствие данных и никакой другой интерпретации нет! guest_20040621 SemaphoreНо во имя чего?А Вы сами что по этому поводу думаете?Я думаю, что "сон разума рождает чудовищ"... guest_20040621 SemaphoreЗапросы все равно будут содержать NULL в тех полях, значения которых неизвестны, но этого придется специально добиваться с помощью различных OUTER JOIN.Не будет неизвестных полей. В принципе. См. выше.Вы хотите сказать, что если запрос вернул NULL, то Вам известно значение, которое скрывает этот NULL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2005, 15:43 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
guest_20040621> Всё пошло с И в общем совершенно справедливо сказано. Посмотрите, насколько информативнее будет база данных для Ваших датчиков, спроектированная по приведенным Old Nick правилам. Imho схема может примерно такой: таблица таймера, таблица датчиков, таблица значений температуры датчиков (связи, думаю, понятны), таблиц ошибок (связи тоже понятны; можно с таблицей типов ошибок). Никаких null. Плюс хранение ошибок. Среднее, дисперсию и пр. считать - без проблем. Добавление новых датчиков - без изменения структуры данных. Отлично. Пусть в определенный момент ошибка контроллера одного из датчиков. Датчик не отвечает вообще. Что пишем в таблицу значений? Или делаем таблицу id датчика timestamp значение и pk по первым двум? Получаем в момент времени t 4 записи, сбойный не записываем. Великолепно, и даже понять можно. Теперь напишите мне одним запросом как вернуть среднее скользящее значение по каждому датчику(т.е. (текущий+предыдущий+следующий)/3) для каждого момента времени, когда осуществлялось считывание. Представляю, 5 вложенных селектов. Очень изящно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2005, 15:55 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
> Почитайте его определения функциональных зависимостей, описания уровней > изоляции, выбора ключей, распределенных систем и... рассуждения по > трехзначной логике. "Введение в базы данных" - это академическая работа, цель которой - концептуальное изложение, а не фактические рекомендации. Возможно, где-то есть не слишком оправданные допущения. Общего смысла они не меняют. > И сравните эти опусы с работами тех, кто знает то, о чем пишет. Например? > И в моем запросе, и в таблице NULL означает только одно - отсутствие данных и > никакой другой интерпретации нет! Вы ошибаетесь. Что null означает в таблице, сказать невозможно. А в Вашем запросе null означает ответ на вполне конкретный вопрос. > Вы хотите сказать, что если запрос вернул NULL, то Вам известно значение, > которое скрывает этот NULL? Вы сами привели пример запроса, ответ на который "у сотрудника нет детей или возраст детей не соответствует критериям выборки". Здесь null - единственно логически возможные значения. _Однозначно_ интерпретируемые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2005, 15:58 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
> Пусть в определенный момент ошибка контроллера одного из датчиков. Датчик не > отвечает вообще. Что пишем в таблицу значений? Разумеется ничего. А в таблицу ошибок пишем код таймера, код датчика и код ошибки "ошибка контроллера датчика". > Получаем в момент времени t 4 записи, сбойный не записываем. Правильно. > Представляю, 5 вложенных селектов. Да, именно так. > Очень изящно Что вызывает Ваш сарказм, позвольте полюбопытствовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2005, 16:06 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
guest_20040621"Введение в базы данных" - это академическая работа, цель которой - концептуальное изложение, а не фактические рекомендации. Возможно, где-то есть не слишком оправданные допущения. Общего смысла они не меняютАкадемическая работа?!! С каких пор безграмотность стала признаком "академичности"? guest_20040621 SemaphoreИ сравните эти опусы с работами тех, кто знает то, о чем пишетНапример?Я называл Ульмана, из российских можете почитать Когаловского (старшего). guest_20040621 SemaphoreИ в моем запросе, и в таблице NULL означает только одно - отсутствие данных и никакой другой интерпретации нет!Вы ошибаетесь. Что null означает в таблице, сказать невозможно. А в Вашем запросе null означает ответ на вполне конкретный вопрос.NULL в таблице означает отсутствие данных, NULL в результате запроса означает то же самое. Если Вы не согласны, то дайте свою интерпретацию NULL в таблице и результате запроса. Тогда и поговорим. guest_20040621 SemaphoreВы хотите сказать, что если запрос вернул NULL, то Вам известно значение, которое скрывает этот NULL?Вы сами привели пример запроса, ответ на который "у сотрудника нет детей или возраст детей не соответствует критериям выборки". Здесь null - единственно логически возможные значения. _Однозначно_ интерпретируемые.Так NULL и означает, что информации нет, тоже самое и в таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2005, 16:12 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
Как вы думаете, 5 циклов перебора, суммирования, деления займет столько же времени сколько 1 перебор, пять суммирований, пять делений? На хранение уйдет в 5 раз больше служебной информации и медленней выборка по составному индексу. И эта система будет идеальней. Ну-ну. "Прежде чем убить человека, узнай, нет ли у него влиятельных родственников" (с) Библия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2005, 16:15 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
> Академическая работа?!! С каких пор безграмотность стала признаком > "академичности"? ;) > NULL в таблице означает отсутствие данных, NULL в результате запроса означает > то же самое. Если Вы не согласны, то дайте свою интерпретацию NULL в таблице > и результате запроса. Тогда и поговорим. Что, собственно, я и сделал в [1225597]. ОК, если читать недосуг, еще раз: null в таблице означает именно отсутствие данных. Т. е., их нет. Вообще. Никаких. И совершенно непонятно, почему. А null в Вашем запросе означает отсутствие у сотрудников детей определенного возраста. Т. е. несет абсолютно определенную смысловую нагрузку. > Так NULL и означает, что информации нет, тоже самое и в таблице. Дружище, пока Вы не поймете разницу между отсутствием информации и отрицательным ответом на вопрос, нет смысла дискутировать. > Как вы думаете, 5 циклов перебора, суммирования, деления займет столько же > времени сколько 1 перебор, пять суммирований, пять делений? Не знаю. Если интересно, пробуйте. > На хранение уйдет в 5 раз больше служебной информации и медленней выборка > по составному индексу. Хех, ну вот тут Вы, любезный, лукавите. Потому как совершенно непонятно, что с чем сравнивается. Если просто размер таблицы, - так это глупость. Приведите техническое задание, - разговор будет предметным. Есть масса способов сделать выборку быстрой, если Вас это заботит. Например, экстенсивно: держать очень небольшую таблицу оперативных данных. Ы? ;) > И эта система будет идеальней. Ну-ну. Нет, эта система не будет идеальной. Эта система будет оптимальной по удобству эксплуатации и сопровождения. Кроме того, если Вы заметили, то описанная мной структура данных решает как бы отличную от Вашей задачу: она фиксирует и состояние датчиков, и их показания. Плюс бесплатные бонусы в виде возможности: описания характеристик датчиков, точности измерения, хронологии изменений и пр. И всего пара-тройка лишних таблиц. ;) Ну, может, немного побольше. ;)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2005, 18:07 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
SemaphoreПо всей видимости, для Вас авторитет тот, кто пишет толстые фолиантыА для Вас, по видимому, Вася Пупкин ? Или пишущий не менее толстые фолианты Когаловский или Ульман сотоварищи ? Будьте последовательны, отрицая авторитеты. SemaphoreДейт допустил огромное количество ошибок, он умудряется противоречить себе, любимому, непростительно частоПозвольте посмотреть хотя бы на список Ваших работ ? Кроме того, приведите, если уж на то пошло, цитату из Date, где он заблуждается относительно NULL ? Он отрицает NULL ? Так, собственно, об этом и речь, хотя это и неверное понимание, о чем и говорит guest_20040621Данные должны _храниться_ без значений null. Потому как null невозможно достоверно интерпретировать: это отсутствие данных как таковых (по целому ряду причин), тупоголовость оператора, ошибка СУБД или что-то еще.Это как раз то, о чем и говорит Date, что отсутствие значения не является значением, смысл NULL определяется совершенно произвольно, в зависимости от ситуации, что Вы, кстати, иллюстрируете своим собственным примером. Вы определяете смысл для NULL, но представим, что оператор, получив его, должен понять, какой из них верен, только на основе результата выполнения запроса ? Для того, чтобы понять, ему надо знать контекст, в данном случае, вид запроса и, возможно даже, исходные данные, для правильной интерпретации полученных NULL. Date и предлагает заменять незнание значения реальным значением, которое имеет конкретный смысл для определенного типа данных, что отличается от отсутствия значения, для которого тип, вообще говоря, неопределен в принципе и может предполагаться только из контекста. Математика, в отличие от естественного языка как раз тем и отличается, что верность утверждений не зависит от контекста использования ее конструкций. Введение NULL в SQL противоречит формальной теории РМД, так как вводит понятие, зависящие от контекста. Именно это обстоятельство и привело Date к предложению замены неизвестного значения на нечто конкретное, грубо говоря - это как в математике был введен 0, который абсолютно равноправен с остальными числами, хотя в реальной жизни он обычно не имеет смысла. Не говорят "у меня 0 яблок", говорят - "у меня нет яблок", при этом что важно - яблок (!), а не груш, апельсинов и т.д. Неизвестное значение отличается от отсутствия значения, если Вы этого не понимаете, то здесь ничем помочь не могу, значит надо больше читать и много думать. Кстати, не менее уважаемый Ульман со товарищи тоже упоминает о неоднозначности интерпретации NULL, просто он не стал заострять на этом внимание, так как он писал учебник, а не монографию. В учебниках редко поднимаются спорные вопросы теории, а просто излагают превалирующее мнение, но это из другой оперы. SemaphoreОднако такое решение усложнит структуру БД и, соответственно, повысит сложность запросов к БД.Да ради Бога, когда ситуация можно разрешить с помощью использования NULL, то почему не использовать. Надо только помнить, что это не потому, что NULL - это правильно, а потому, что ни одна СУБД не поддерживает механизма неизвестных значений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2005, 20:49 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
Кстати, пока за памятью. Даже в VB есть две различные функции - IsNull и IsEmpty, их применение имеет несколько разный контекст. В первом случае - отсутствие значения, во втором - неприсвоенное, или неизвестное, значение. Вот ведь уроды, и зачем путают людёв ? P.S. guest_20040621, респект за поддержку :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2005, 21:08 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
> Это как раз то, о чем и говорит Date В данном конкретном случае мнение Дейта, Ваше и мое совпадают. ;) > Вы определяете смысл для NULL [] Это частный случай. Да, иногда в контексте запроса null приобретает смысл, но это редкая ситуация. Может, я недостаточно прямо выразился: моя позиция заключается в том, что значений null нужно избегать везде, где возможно. > Date и предлагает заменять незнание значения реальным значением, которое > имеет конкретный смысл для определенного типа данных, что отличается от > отсутствия значения, для которого тип, вообще говоря, неопределен в принципе > и может предполагаться только из контекста. А вот здесь - пожалуй, поспорю. Т. е. формально, возможно, Дейт предлагает лучшее из возможных решений (на самом деле, это решение вполне можно привести к продакшн путем некоторых дополнительных структур данных), но так или иначе это [псевдо]реальное значение останется контекстно-зависимым, что меня лично не устраивает. И я в 99% случаев предпочту более сложную структуру данных структуре с использованием null значений. > Неизвестное значение отличается от отсутствия значения, если Вы этого не > понимаете, то здесь ничем помочь не могу, ;) Дружище, прочтите Дейта еще раз. Потом - еще раз топик, можно начиная со второй страницы. ;)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2005, 21:31 |
|
||
|
Обязательность полей
|
|||
|---|---|---|---|
|
#18+
guest_20040621Я писал не для Вас, просто использовал Вашу цитату, практически весь текст был для Semaphore ;) guest_20040621возможно, Дейт предлагает лучшее из возможных решений ... И я в 99% случаев предпочту более сложную структуру данных структуре с использованием null значений.IMHO, надо отталкиваться от активного использования доменов (user defined type), о чем неоднократно упоминает Date, и в рамках домена должно быть значение, которое играет роль неизвестного значения. И тогда утверждением guest_20040621[псевдо]реальное значение останется контекстно-зависимымможно будет смело пренебречь. Если же говорить о том, что на практике, сплошь и рядом, для совершенно разных по смыслу типов данных используется один и тот же системный тип, то тогда действительно приходится учитывать контекст. Собственно, мы говорим об одном и том же, принципиальных разногласий не вижу. Или они есть ? С уважением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2005, 01:10 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=32852053&tid=1546103]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 371ms |

| 0 / 0 |
