Introducing the Join library DSL
Before we proceed, let's recall what a relation JOIN is. A relation can be viewed as a table. This table can have an arbitrary number of columns, but for the sake of this discussion, only three of them matter, as shown in the following table:
This table defines a relation of a set of individuals (alice, bob), a set of different genders (female, male), and a set of some other properties with values of foo and bar. If the table contained more than three columns, we could view all the other values in the table as a single value. The actual structure and data type of the value column are not relevant to the discussion, so we can assume that we only have a single value in the table.
Let's assume we have another table:
This table is a relationship between gender...