Relational Algebra
Join
Join combines matching rows and drops duplicate join columns for this key match.
Join matches keys
Equi-join keeps row pairs whose key cells are equal and drops the duplicate join key. It matters because non-matching rows disappear while matching rows can fan out. Note: this is set algebra join, not SQL NULL-aware join behavior.
Base join
In the base data, the student with no enrollment silently drops from the output. The recomputed row count is 3 and the recomputed arity is 3. Note: one left row also fans out when it matches multiple right rows.
set algebra not SQL bag/NULL, tiny finite tables, no product/perf claims
Added matching row
With one additional matching enrollment, the previously missing student now appears in the rendered output. The recomputed row count is 4 and the recomputed arity is 3. Note: join cardinality depends on matching keys, not just input sizes.
set algebra not SQL bag/NULL, tiny finite tables, no product/perf claims
Summary
Join drops non-matches and fans out multiple matches. Note: SQL outer joins, duplicates, and NULL behavior are for the next book.