such samples, usually fastened together in book form (at Net-A-Porter) a set of products which differ only by colour When managing a product in Fulcrum, we can edit its swatch -- adding and removing other products. On the public websites, when we see one of these products we also see a row of colours linking to the other products in the swatch. When translating this relationship between products into SQL, an intuitive first guess might be a table with fields (product_id, swatch_product_id), where getting all the swatches in this set would be To the left is a picture of the Graph representation of a swatch of 16 products, with each product as a vertex and each row as an edge between the product and one of its swatches. Things to note: A swatch of n products has n-n rows Adding/removing a product affects 2n-2 rows Can you see the missing edge? This is a good place to clarify our definition of data redundancy as s toring more data than necessary in order to deduce the information being stored. In traditional database design, this redundancy is regarded as A Bad Thing since omissions and errors can cause multiple mappings of the data into contradictory information. Back to the diagram above. Apart from the large amount of data required for representing this swatch, populating and maintaining it requires nested for-loops where out-by-one errors (think a missing edge) are hard to discern. Once this data discrepancy has been populated across the redundant web