[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Perl or Python?



Hello!

On Friday 20 March 2009 22:16:19 Grey Fenrir wrote:
> Насчёт идеологии возражений в принципе нет, но это лишь теория.
> В рассматриваемом примере я вижу взаимно однозначное соответствие
> NULL-евых и не-NULL-евых вариантов (разумеется. при _правильном_
> заполнении базы синоптиком), и бОльшей неоднозначности ни в одном из
> них я не нахожу.
>
> > А вариант с декомпозицией поможет различить
> > отсутствие измерения (нет записи в таблицах 1 и 2) и отсутствие
> > результата измерения (есть запись в таблице 1 и нет записи в таблице
> > 2)
>
> Ввиду очевидности не буду писать, как отличать эти события в NULL-евой
> базе.

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

Вот смотрите, что получается при следующем шаге индукции:
Мы рассматривали 1 таблицу с NULL и декомпозицию из 2-х таблиц, содержащие 
записи о
1) измерение проводилось или не проводилось
2) результат получен или не получен

Чтобы наша задачка была ближе к реальности, добавим:
3) измерение обязательно или не обязательно

Теперь посмотрим, как мы должны сохранить в БД информацию о следующих 
ситуациях:
А) Измерение не проведено И результат не получен И измерение обязательно.
Б) Измерение проведено И результат не получен И измерение не обязательно.

Вопрос:
Что вы будете писать в _одну_ таблицу, допускающую NULL? Сколько вариантов 
ответа на этот вопрос существует? (Подсказка: 2 варианта ответа для А и 
столько же для Б). 

Решение:
Анализируем условия слева направо:
А) Измерение не проведено - запись не делаем.
Б) Измерение проведено И результат не получен - делаем запись с NULL.

Анализируем условия справа налево:
А) Измерение обязательно И результат не получен - делаем запись с NULL.
Б) Измерение не обязательно И результат не получен - запись не делаем.

Как видим, ассоциативность нарушена, то есть проделанные вычисления не могут 
быть выполнены в рамках булевой алгебры. А это означает некорректность БД.

При использовании декомпозиции существует единственный вариант заполнения трех 
рассматриваемых нами таблиц. 


Best regards.

Reply to: