Существует некоторая дискуссия в реляционной теории значения таблиц с нулевыми столбцами. Также описывается как отношения нулевой степени .
Исследователь реляционной теории С. Дж. Дата относится к TABLE_DUM
и TABLE_DEE
. Оба не имеют столбцов, но разница в том, что TABLE_DUM
не имеет ни столбцов, ни строк, тогда как TABLE_DEE
имеет одну строку (даже если в этой строке нет столбцов).
См. Этот отрывок из «Глубинной базы данных: теория отношений для практиков»: https://flylib.com/books/en/2.214.1.38/1/
Поэтому следующий запрос не будет возвращать строк:
SELECT * FROM TABLE_DUM CROSS JOIN MyTable;
Принимая во внимание, что этот запрос будет возвращать те же строки и столбцы, что и MyTable
:
SELECT * FROM TABLE_DEE CROSS JOIN MyTable;
Так что есть некоторый прецедент и значение для таблицы без столбцов. Вы можете думать об этом по аналогии как о роли 0 и 1 в умножении:
- 0 x любое число 0
- 1 x любое число такое же число
ОДНАКО стандартный SQL не позволяет этого. SQL не совсем точно реализует всю концепцию реляционной теории. В этом случае стандартный SQL определяет таблицу как имеющую хотя бы один столбец. Разработчики SQL решили, что таблица без столбцов не настолько интересна, чтобы оправдать поддержку языка SQL.
Если PostgreSQL или какая-либо другая реализация SQL решит разрешить таблицу без столбцов, они делают это как расширение стандартного SQL.