Aheo спрашивает, есть ли ok to have a table with just one column. Как насчет одного без столбцов, или, учитывая, что это кажется трудным сделать в большинстве современных «реляционных» СУБД, отношение без атрибутов?Отношения без атрибутов
ответ
DEE и декартовый продукт образуют моноид. На практике, если у вас есть оператор реляционного суммирования Date, вы должны использовать DEE в качестве отношения группировки для получения итоговых итогов. Существует много других примеров, где DEE практически полезен, например. в функциональной настройке с бинарным объединенным оператором вы получите n-ary join = foldr join dee
Таблица с одним столбцом - это набор, если вы не заботитесь о заказе значений или обмениваетесь любой другой информацией с ними, это кажется прекрасным. Вы можете проверить его членство, и в основном это все, что вы можете сделать. (Если у вас нет ограничения UNIQUE
на один столбец, я думаю, вы также можете подсчитать количество вхождений ... мультимножество).
Но что в blazes будет таблица без столбцов (или отношение без атрибутов) mean - или, как бы это было хорошо?
Что это значит и будет ли это хорошо, это две совершенно разные вещи ... –
И вот почему я задаю оба вопроса (к которым присоединяется OR, тоже ;-) - если у любого вопроса есть хороший ответ, я хочу услышать это! -) –
А теперь я открою секрет. :-) Это означает, что отношение (или «таблица») содержит либо один правильный кортеж (или «row»), либо нет. Это логический тип отношений. –
Hm. Поэтому мне не досталось отсутствие «реальных примеров», и я старался изо всех сил. Возможно, на удивление, я получил половину пути!
cjs=> CREATE TABLE D(); CREATE TABLE cjs=> SELECT COUNT (*) FROM D; count ------- 0 (1 row) cjs=> INSERT INTO D() VALUES(); ERROR: syntax error at or near ")" LINE 1: INSERT INTO D() VALUES();
Я заметил, что некоторые системы баз данных не будут терпеть инструкцию no-column 'CREATE', а некоторые из них, но затем не переносят инструкцию' INSERT' с нулевым значением. – seh
Существует ровно два отношения без атрибутов: один с пустым кортежем и один без него. В The Third Manifesto, Date и Darwen (несколько) юмористически называют их TABLE_DEE
и TABLE_DUM
(соответственно).
Они полезны в той мере, в какой они являются идентичностью множества реляционных операторов, играя роли, эквивалентные 1 и 0 в обычной алгебре.
Таблица с одной колонкой имела бы смысл как простой поиск. Допустим, у вас есть список строк, которые вы хотите отфильтровать, для введенного пользователем текста. В этой таблице будут храниться слова, которые вы хотите отфильтровать.
Но это таблица с еще одним столбцом, кроме колонки без столбцов, которая здесь интересна. Тем не менее, вы обнаружили идею предиката в реляционном мире, что хорошо. –
«Существует ровно два отношения без атрибутов: один с пустым кортежем и один без него. В« Третьем манифесте », Дата и Дарвен (в некоторой степени) с юмором называют их TABLE_DEE и TABLE_DUM (соответственно).
Они полезны в той мере, в какой они являются тождеством множества реляционных операторов, играя роли, эквивалентные 1 и 0 в обычной алгебре. "
И, конечно же, они также играют роль «ИСТИНА» и «ЛОЖЬ» в булевой алгебре. Это означает, что они полезны, когда такие предложения, как «Магазин открыт» и «Будильник установлен», должны быть представлены в базе данных.
Следствием этого является то, что они также могут быть использованы в любом выражении реляционной алгебры для их свойств «действовать как IF/ELSE»: присоединение к TABLE_DUM означает не сохранять никаких кортежей вообще из другого аргумента, присоединение к TABLE_DEE означает их сохранение. Таким образом, объединение R в relvar S, которое может быть равно TABLE_DEE или TABLE_DUM, является эквивалентом RA «если S тогда R else FI», при этом FI стоит для пустого отношения.
Трудно видеть полезность TABLE_DEE и TABLE_DUM с точки зрения базы данных SQL. В конце концов, не гарантируется, что ваш любимый поставщик db позволяет создать тот или иной.
Также трудно увидеть полезность TABLE_DEE и TABLE_DUM в реляционной алгебре. Нужно смотреть дальше этого.Чтобы получить представление о том, как эти константы могут ожить, рассмотрим реляционную алгебру, помещенную в надлежащую математическую форму, которая настолько близка, насколько это возможно для булевой алгебры. D & D Алгебра A - шаг в этом направлении. Затем можно выразить классические операции реляционной алгебры через более фундаментальные, и эти две константы станут действительно удобными.
Что это значит? «Какая связь без атрибутов?» Можете ли вы дать какой-либо пример в реальном мире? –
Я думаю, что проблема в том, что нет реальных примеров ... – jerryjvl
«CREATE TABLE dee()», за которым следует «INSERT INTO DEE VALUES()», должен делать трюк, если ваша СУБД действительно реляционная. –