The same item may belong to multiple lists, and each list has many items.
The "proper" design: Make a join table, which has list_ID and item_ID. When I want all the items in a list, query for list_ID.
Design that breaks the atomicity rule: Make a list table. Primary Key, and either repeating columns or non-atomic columns. These deviations suffer as drawback the inability to efficiently query on items.
Normalizing a database to 1NF makes sure each column is atomic, so I should NOT do option B. That would make querying items hard. E.g. "how many of this item got sold?" or "how many times is this item in a list?"
I will never need that data. Should I break the atomicity rule storing a list of items when there is no reason to query about items? Verses a join table that requires a whole join table be scanned.
Is that already a mistake? Is there a meme like "you'll always want to be able to query, and you won't have time to reorganize the database when you scale"? Am I overestimating how long it wouldd take MySQL to scan a join table?
It's common sense to accept that non-compliant form if I know that the drawback is not important to the application.