Alexey Pechnikov -> [email protected]  @ Thu, 19 Mar 2009 
13:27:57 +0300:

 >>  AP> А что скажете насчет ситуации с NULL в СУБД? Строгая типизация во
 >>  AP> многих СУБД - и такие "грабли".
 >>
 >> А где грабли-то?
 >>
 >> Там, конечно, от этого появляются грабли в теории, но это грабля в
 >> теории - потому что на практике оказалось, что не в каждом интересном
 >> тупле удается определить все значения.

 AP> Трехзначная логика получается. И на практике, например, приходится
 AP> обрабатывать _две_ ситуации - строка есть NULL или пустая строка,
 AP> при том, что с точки зрения приложения эти ситуации зачастую
 AP> различить нельзя.

Если с точки зрения приложения ситуации различить нельзя, то приложение
решает НЕ ТУ задачу.

 >>  AP> Собственно, сам я при использовании SQLite полностью отказался от
 >>  AP> NULL, при необходимости просто оперирую пустой строкой,
 >>
 >> А вот это - грабли...

 AP> В чем, по-вашему, смысл приводить тиклевскую переменную к NULL при
 AP> сохранении, чтобы потом при каждом извлечении проверять что не NULL
 AP> и не пустая?

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

Если с точки зрения логики приложения в этом месте не может быть пустой
строки, то скорее всего, это далеко не единственное ограничение на это
значение (более того, в честной формулировке ограничения "непустое"
вообще не фигурирует).  Просто честное ограничение Вам сложно проверить,
и Вы на это забиваете.

-- 
Artem Chuprina
RFC2822: <ran{}ran.pp.ru> Jabber: [email protected]

Вам правду резать или кусочком?
        Кнышев


-- 
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]

Ответить