Database Programming & Design



         

UNK и равенство - часть 2


базе данных за информацией?

Серьезность последствий неадекватности подхода Дейта зависит от

ситуации. Например, предположим, что столбцы чисел - это

координаты ста целей, вычисленные независимыми прицельными

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

безопасности применяется правило, что ракета запускается только в

том случае, когда прицельные механизмы выдают одинаковые

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

настолько неудачны, что для всех 100 целей прицельные механизмы

не могут вычислить координаты. Поскольку каждый из них работает с

доменом TARGETING_COORDINATE_OR_UNK, он занесет в свой столбец

значение UNK во всех 100 строках.

Теперь используем интерфейс, основанный на новой схеме Дейта,

чтобы определить, по каким из ста целей следует стрелять. Мы

сказали: "Стрелять по каждой из 100 целей в том и только в том

случае, когда сравнение coordinate1=coordinate2 дает значение

true". И все 100 ракет будут запущены, хотя ни один из прицельных

механизмов не обеспечил координат ни одной цели!

Конечно, если бы мы догадались добавить к условию конъюнктивное

требование истинности сравнения coordinate1 != UNK, то ракеты не

были бы запущены.

Если Дейт захочет, он может назвать пересмотренный запрос

"решением", но для меня очевидно, что здесь что-то неправильно.

Пользователя заставляют компенсировать ошибку в семантике

оператора сравнения в схеме Дейта. Она связана с тем, что как

всем известно, ответом на вопрос "Равны ли два неизвестных

значения" не является "Да". И если Дейт ответит, что при

определении равенства специального значения UNK он не имел в виду

"неизвестные значения", то он должен признать, что его схема не

представляет семантику неизвестных значений "реального мира".




Содержание  Назад  Вперед