Cost of a Join
I love a good writeup backed up with some performance benchmarks.<p>But I'm a little befuddled as to why the three possible solutions to putting a "status" column in your Products table were:<p><pre><code>    1. Add a status_id column to the product table and reference a new status table
    2. Add a status_id column to the product table and let the app define the mapping of what each status_id is
    3. Add a status column of type text to the product table
</code></pre>
What about :<p><pre><code>    4. create an enum column with your possible statuses.
</code></pre>
If you ever reach more than 65k possible statuses, you've got a different problem.<p>Perhaps the status example is just a hypothetical example? Although the author says they would use option 1 in this case, so what gives? Seems crazy to create a join table for 'status'.