2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Реляционная алгебра и отсутствующие значения
Сообщение12.01.2015, 11:46 


12/01/15
8
Добрый день.
Есть исходное отношение, применяя к которому операции реляционной алгебры я получаю нужное мне результирующее отношение. Но поскольку задача носит прикладной характер, а на практике идеального не бывает возникает проблема отсутствующих значений и в результате отношение имеет пустые элементы кортежей, что полностью ломает картину. Поискав в интернете, я ничего не нашел на предмет того, как реляционная алгебра обрабатывает пустые значения, буду благодарен если кто подскажет куда копать.

 Профиль  
                  
 
 Re: Реляционная алгебра и отсутствующие значения
Сообщение12.01.2015, 21:34 
Заслуженный участник


15/05/05
3445
USA
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 
Заслуженный участник


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

 Профиль  
                  
 
 Re: Реляционная алгебра и отсутствующие значения
Сообщение12.01.2015, 23:05 
Заслуженный участник


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

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

 Профиль  
                  
 
 Re: Реляционная алгебра и отсутствующие значения
Сообщение13.01.2015, 00:10 
Заслуженный участник


27/04/09
28128
Yuri Gendelman в сообщении #960866 писал(а):
IMHO использовать непосредственно реляционную алгебру для запросов можно только на бумаге и для теоретических курсов.
Согласен. Потому она, видимо, так редко попадается на глаза.

 Профиль  
                  
 
 Re: Реляционная алгебра и отсутствующие значения
Сообщение13.01.2015, 01:15 
Заслуженный участник


09/09/10
3729
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 
Заслуженный участник


27/04/09
28128
Joker_vD в сообщении #960991 писал(а):
это значение должно не равняться самому себе, кроме тех случаев, когда оно должно
А зачем это может понадобиться? Я думал, это просто неудачное решение создателей SQL.

 Профиль  
                  
 
 Re: Реляционная алгебра и отсутствующие значения
Сообщение13.01.2015, 02:27 
Заслуженный участник


09/09/10
3729
arseniiv в сообщении #961019 писал(а):
А зачем это может понадобиться? Я думал, это просто неудачное решение создателей SQL.

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

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


28/05/08
284
Трантор

(Оффтоп)

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

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

 Профиль  
                  
 
 Re: Реляционная алгебра и отсутствующие значения
Сообщение13.01.2015, 13:02 


12/01/15
8
Спасибо за ответы всем.
Joker_vD, вы как раз затронули интересную мне тему, именно проблема двойственности пустого значения меня и интересовала.
К сожалению, задача немного изменилась, и еще будет уточняться. Пока возьму таймаут. Еще раз всем спасибо.

 Профиль  
                  
 
 Re: Реляционная алгебра и отсутствующие значения
Сообщение13.01.2015, 18:44 
Заслуженный участник
Аватара пользователя


01/08/06
3136
Уфа
Вопрос давно и подробно рассмотрен в учебниках (например, "Введение в системы баз данных" Дейта). В Википедии тоже можно кратко прочитать.

 Профиль  
                  
 
 Re: Реляционная алгебра и отсутствующие значения
Сообщение13.01.2015, 22:49 
Заслуженный участник


15/05/05
3445
USA
Интересующимся теорией рекомендую вот эту книгу:
Цаленко М.Ш. Моделирование семантики в базах данных. 1989.
Ну и статьи Кодда (Codd).

 Профиль  
                  
 
 Re: Реляционная алгебра и отсутствующие значения
Сообщение20.01.2015, 09:55 


11/12/14
893
Мде, в SQL эта "проблема" сразу же поднимается и решается конструкций LEFT/RIGHT JOIN.

 Профиль  
                  
 
 Re: Реляционная алгебра и отсутствующие значения
Сообщение22.01.2015, 12:41 
Заслуженный участник


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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group