**Puzzle 120.**

> Take a database \\( F: \mathcal{C} \to \mathbf{Set}\\) and some functor \\( H : \mathcal{E} \to \mathcal{C} \\) that is not one-to-one on objects and morphisms

This transformed database \\( F \circ H : \mathcal{E} \to \mathbf{Set} \\) will obey the schema of \\(\mathcal{C}\\) where applicable but might be partial. The functor can be very general in terms of forgetting data or computing derived data. Splitting or combining "database columns" is essentially mapping between algebraic data types. I believe splitting or combining rows is also possible because as a functor \\(H\\) is polymorphic, a collection of general morphisms that don't have to be an element-wise function on sets. ETL "Extract Transfrom Load" (e.g. from CSV text to Dates) is ubiquitous, the source data \\(E\\) is typically validated, enriched, often grouped, sometimes filtered.

> Take a database \\( F: \mathcal{C} \to \mathbf{Set}\\) and some functor \\( H : \mathcal{E} \to \mathcal{C} \\) that is not one-to-one on objects and morphisms

This transformed database \\( F \circ H : \mathcal{E} \to \mathbf{Set} \\) will obey the schema of \\(\mathcal{C}\\) where applicable but might be partial. The functor can be very general in terms of forgetting data or computing derived data. Splitting or combining "database columns" is essentially mapping between algebraic data types. I believe splitting or combining rows is also possible because as a functor \\(H\\) is polymorphic, a collection of general morphisms that don't have to be an element-wise function on sets. ETL "Extract Transfrom Load" (e.g. from CSV text to Dates) is ubiquitous, the source data \\(E\\) is typically validated, enriched, often grouped, sometimes filtered.