Мне известны как минимум два разных теоретических подхода к пониманию реляционных баз данных: реляционная алгебра Кодда и теория категорий.
Есть ли связь между этими двумя подходами? В каком-то смысле они эквивалентны? Есть ли вводная работа, объясняющая, как обе эти структуры объясняют реляционные базы данных?
Фон: Некоторое время назад я прочитал « Теорию категорий» Дэвида Спивака для ученых, которая довольно долго обсуждала, как можно применить теорию категорий для понимания теории реляционных баз данных. Однако, имея небольшой личный опыт о том, что такое реляционные базы данных или почему они полезны, в то время я не до конца осознавал глубину понимания, обнаруженную в книге.
Однако недавно я узнал о SQL- запросах и двух R- пакетах для манипулирования данными: dplyr и data.table . SQL, очевидно, может выразить большую часть идей реляционной алгебры Кодла / исчисления / модели, но не все . Более того, автор dplyr Хэдли Уикхем прямо заявил, что его философия, лежащая в основе пакета, основана на работе Кодда по реляционной алгебре, и основные команды data.table довольно хорошо отображаются в команды SQL и dplyr.
Я также знаю, что теория категорий влияет на многих программистов, использующих функциональные языки программирования, такие как Haskell. Тем не менее, я на самом деле не знаю о каком-либо использовании функционального программирования для манипулирования данными или науки о данных, кроме пакета purrr Хэдли Уикхэма для R, факта, что Apache Spark написан на Scala , и технологий, связанных с MapReduce .
Все это как бы подсказывает мне, что должна быть какая-то связь между теорией категорий и реляционной алгеброй / исчислением Кодда, но я никогда не слышал, чтобы кто-то делал такую связь явной или объяснял, как она лежит в основе проектных решений в популярных манипуляциях с данными. и технологии реляционных баз данных. Поэтому я также подозреваю, что могу ошибаться.
РЕДАКТИРОВАТЬ: Видимо, Дэвид Спивак работал над " языком функторных запросов (FQL) ". Похоже, это может быть применение такой теоретической связи, если она существует.
Примечание: я не уверен, является ли «реляционные структуры» подходящим тегом для обсуждения реляционных баз данных или реляционной алгебры / исчисления. Эта статья в Википедии предполагает, что они могут быть связаны, но в конечном итоге я не знаю, что означает фраза «реляционная структура». Пожалуйста, не стесняйтесь повторно пометить.