I've been working on something similar, implementing a relational language on top of a tensor library[0].
Mathematically, einsum and database joins are the same thing, just over different semirings (real numbers for einsum, booleans for databases). A lot of papers about datalog explore this sort of thing in more depth. In particular, Dyna[1] might be interesting.
[0]: https://arxiv.org/abs/2509.22614 [1]: https://dyna.org/