Sono a conoscenza di almeno due diversi approcci teorici per la comprensione dei database relazionali: l'algebra / calcolo relazionale di Codd e la teoria delle categorie.
C'è qualche relazione tra questi due approcci? Sono in qualche modo equivalenti? C'è qualche lavoro introduttivo che spiega come entrambi questi quadri spiegano i database relazionali?
Background: Qualche tempo fa ho letto la teoria delle categorie per scienziati di David Spivak, che ha trascorso parecchio tempo a discutere su come applicare la teoria delle categorie per comprendere la teoria dei database relazionali. Tuttavia, avendo poca esperienza personale su cosa siano i database relazionali o perché siano utili, al momento non apprezzavo appieno la profondità di intuizione trovata nel libro.
Tuttavia, recentemente ho imparato a conoscere le query SQL e due pacchetti R per la manipolazione dei dati: dplyr e data.table . Apparentemente SQL può esprimere molte delle idee dell'algebra / calcolo / modello relazionale di Codd, ma non tutte . Inoltre, l'autore di dplyr, Hadley Wickham, ha dichiarato esplicitamente che la sua filosofia alla base del pacchetto si basa sul lavoro di Codd sull'algebra relazionale e che i comandi di base di data.table mappano abbastanza bene i comandi in SQL e dplyr.
So anche che la teoria delle categorie influenza molti programmatori che usano linguaggi di programmazione funzionale come Haskell. Tuttavia, non sono a conoscenza del fatto che vi sia alcun uso della programmazione funzionale per la manipolazione o la scienza dei dati, oltre al pacchetto purrr di Hadley Wickham per R, il fatto che Apache Spark sia scritto in Scala e le tecnologie correlate a MapReduce .
Tutto questo mi suggerisce che dovrebbe esserci una sorta di relazione tra la teoria delle categorie e l'algebra / calcolo relazionale di Codd, ma non ho mai sentito parlare di qualcuno che espliciti tale connessione o spieghi come sia alla base delle decisioni di progettazione nella manipolazione popolare dei dati e tecnologie di database relazionali. Quindi sospetto anche che potrei sbagliarmi del tutto.
EDIT: Apparentemente David Spivak ha lavorato su un " linguaggio di query funzionale (FQL) ". Sembra che potrebbe essere un'applicazione di tale connessione teorica, a condizione che esista.
Nota: non sono sicuro che "strutture relazionali" sia il tag appropriato per la discussione di database relazionali o algebra / calcolo relazionale. Questo articolo di Wikipedia suggerisce che potrebbero essere collegati, ma alla fine non so cosa significhi la frase "struttura relazionale". Non esitate a ricodificare.