2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Реляционная алгебра и отсутствующие значения
Сообщение12.01.2015, 11:46 
Добрый день.
Есть исходное отношение, применяя к которому операции реляционной алгебры я получаю нужное мне результирующее отношение. Но поскольку задача носит прикладной характер, а на практике идеального не бывает возникает проблема отсутствующих значений и в результате отношение имеет пустые элементы кортежей, что полностью ломает картину. Поискав в интернете, я ничего не нашел на предмет того, как реляционная алгебра обрабатывает пустые значения, буду благодарен если кто подскажет куда копать.

 
 
 
 Re: Реляционная алгебра и отсутствующие значения
Сообщение12.01.2015, 21:34 
drug в сообщении #960443 писал(а):
... как реляционная алгебра обрабатывает пустые значения ...
Непосредственно реляционную алгебру не использовал ни разу.
Если Вас интересуют SQL-запросы, то...

1. Отсечь пустые элементы можно SQL-запросом такого типа:
Используется синтаксис SQL
SELECT *
FROM mytable
WHERE (mycolumn IS NOT NULL)

2. Если нужно отсечь не только пустые элементы, но и пустые строки, то используйте:
Используется синтаксис SQL
SELECT *
FROM mytable
WHERE NOT (mycolumn IS NULL OR LTRIM(RTRIM(mycolumn)) = '')


P.S. SQL-синтаксис для разных СУБД может иметь свои особенности.
P.P.S. SQL уместнее обсуждать в подфоруме Computer Science.

 
 
 
 Re: Реляционная алгебра и отсутствующие значения
Сообщение12.01.2015, 22:04 
Про саму реляционную алгебру: насколько я понимаю, ей вообще безразлично, над какими множествами отношения. В эти множества (в какие надо) можно добавить какой-нибудь специальный элемент, отличный от всех остальных, и звать его на здоровье NULL. Работать с ним будет не сложнее чем с любым другим элементом.

 
 
 
 Re: Реляционная алгебра и отсутствующие значения
Сообщение12.01.2015, 23:05 
Реляционная алгебра - это теоретическая модель для реляционных баз данных. IMHO использовать непосредственно реляционную алгебру для запросов можно только на бумаге и для теоретических курсов. Любая компьютерная реализация с вероятностью 99% сведется к SQL, в котором значение NULL и соответствующие предикаты уже реализованы.

И напомню для ТС: для данных типа TEXT отсутствующее значение (NULL) и пустая строка ('') - это разные значения, которые нужно обрабатывать отдельно.

 
 
 
 Re: Реляционная алгебра и отсутствующие значения
Сообщение13.01.2015, 00:10 
Yuri Gendelman в сообщении #960866 писал(а):
IMHO использовать непосредственно реляционную алгебру для запросов можно только на бумаге и для теоретических курсов.
Согласен. Потому она, видимо, так редко попадается на глаза.

 
 
 
 Re: Реляционная алгебра и отсутствующие значения
Сообщение13.01.2015, 01:15 
drug в сообщении #960443 писал(а):
Есть исходное отношение, применяя к которому операции реляционной алгебры я получаю нужное мне результирующее отношение. Но поскольку задача носит прикладной характер, а на практике идеального не бывает возникает проблема отсутствующих значений и в результате отношение имеет пустые элементы кортежей, что полностью ломает картину.

Тут уже выше предлагали расширять домены с помощью специального значения NULL. К сожалению, данное расширение полностью удовлетворительно провести невозможно (это значение должно не равняться самому себе, кроме тех случаев, когда оно должно), и каноническим решением является разбиение отношения на два:

$$A(X_1\colon T_1,\dots,X_n\colon T_n\cup\{\mathrm{NULL}\})\sim A_p(X_1\colon T_1,\dots,X_n\colon T_n)\;\cup\; A_n(X_1\colon T_1,\dots,X_{n-1}\colon T_{n-1})$$

Соответственно, интерпретация получаемых отношений такая: если у отношения $A$ интерпретация "$X_1,\dots,X_n$ удовлетворяют предикату $\overline{A}$", то у отношения $A_p$ интерпретация "$X_1,\dots,X_n$ удовлетворяют предикату $\overline{A}$, и нам известно значение $X_n$", а у отношения $A_n$ — "$X_1,\dots,X_n$ удовлетворяют предикату $\overline{A}$, но значение $X_n$ неизвестно" (другими словами, "Существует $X_n$ такой, что $X_1,\dots,X_n$ удовлетворяют предикату $\overline{A}$", что объясняет уменьшенную арность отношения — отбрасывание атрибута эквивалентно навешивание квантора существования на интерпретацию).

 
 
 
 Re: Реляционная алгебра и отсутствующие значения
Сообщение13.01.2015, 02:01 
Joker_vD в сообщении #960991 писал(а):
это значение должно не равняться самому себе, кроме тех случаев, когда оно должно
А зачем это может понадобиться? Я думал, это просто неудачное решение создателей SQL.

 
 
 
 Re: Реляционная алгебра и отсутствующие значения
Сообщение13.01.2015, 02:27 
arseniiv в сообщении #961019 писал(а):
А зачем это может понадобиться? Я думал, это просто неудачное решение создателей SQL.

Понятно, что неудачное — одним значением тут не отделаешься. Сходу сейчас не воспроизведу в 2 ночи примеры, но простейший — когда у вас есть две записи, у которых конкретные значения одного атрибута неизвестны, но известно, что они равны. Или когда запрос из одного кортежа делает несколько, то NULLы в производных кортежах от одного исходного должны считаться одинаковыми, но NULLы в производных кортежах от разных исходных должны считаться разными. Ну и прочие вариации той же мысли — если мы в БД моделируем не просто состояние предметной области, а состояние + ограниченность нашего знания о ней (что конкретно мы не знаем), то одно дополнительное значение "а тут неизвестно что" особо не помогает.

 
 
 
 Re: Реляционная алгебра и отсутствующие значения
Сообщение13.01.2015, 12:06 

(Оффтоп)

Yuri Gendelman в сообщении #960866 писал(а):
И напомню для ТС: для данных типа TEXT отсутствующее значение (NULL) и пустая строка ('') - это разные значения, которые нужно обрабатывать отдельно.

В Oracle это неверно (что, конечно, не соответствует стандарту SQL, но так уж сложилось).

 
 
 
 Re: Реляционная алгебра и отсутствующие значения
Сообщение13.01.2015, 13:02 
Спасибо за ответы всем.
Joker_vD, вы как раз затронули интересную мне тему, именно проблема двойственности пустого значения меня и интересовала.
К сожалению, задача немного изменилась, и еще будет уточняться. Пока возьму таймаут. Еще раз всем спасибо.

 
 
 
 Re: Реляционная алгебра и отсутствующие значения
Сообщение13.01.2015, 18:44 
Аватара пользователя
Вопрос давно и подробно рассмотрен в учебниках (например, "Введение в системы баз данных" Дейта). В Википедии тоже можно кратко прочитать.

 
 
 
 Re: Реляционная алгебра и отсутствующие значения
Сообщение13.01.2015, 22:49 
Интересующимся теорией рекомендую вот эту книгу:
Цаленко М.Ш. Моделирование семантики в базах данных. 1989.
Ну и статьи Кодда (Codd).

 
 
 
 Re: Реляционная алгебра и отсутствующие значения
Сообщение20.01.2015, 09:55 
Мде, в SQL эта "проблема" сразу же поднимается и решается конструкций LEFT/RIGHT JOIN.

 
 
 
 Re: Реляционная алгебра и отсутствующие значения
Сообщение22.01.2015, 12:41 
Yuri Gendelman в сообщении #960866 писал(а):
И напомню для ТС: для данных типа TEXT отсутствующее значение (NULL) и пустая строка ('') - это разные значения, которые нужно обрабатывать отдельно.
Зависит от СУБД. Например, в Postgres - это разные значения, в Oracle - одинаковые.

 
 
 [ Сообщений: 14 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group