Synopsis: Jaywalking

Let's see how using a comma-separated list causes an antipattern.

Let’s imagine that you are developing a feature in a bug-tracking application to designate a user as the primary contact for a product. You originally allow only one user to be the contact for each product. Unsurprisingly, however, you are soon requested to support assigning multiple users as contacts for a given product.

At the time, it seems simple enough to change the database to store a list of user account identifiers separated by commas in place of the single identifier that you used before. ...