Just wondering what others do when 99.999% of the time the data fits a standard model but there are a few exceptions.

e.g
inventory table
========================
inventory table
product_id store_id WK cost ##prod desc
100001 1 1 $2.00 ##Fred's
100001 2 1 $2.00 ##Fred's
100001 99 1 $2.00 ##Fred's
100002 1 1 $3.00 ##Barney's
100002 2 1 $3.00 ##Barney's
100002 99 1 $3.00 ##Barney's
100003 1 1 $1.00 ##Wilma's
100003 2 1 $1.00 ##Wilma's
100003 99 1 $10.00 ##Betty's

So as we can see normally across all stores product_id means the same thing except for 100003 and only in store 99.

To cater for this one exception I need to repeat each row
inventory_product
========================
product_id store_id prod_master_id
100001 1 1
100001 2 1
100001 99 1
100002 1 2
100002 2 2
100002 99 2
100003 1 3
100003 2 3
100003 99 4

product
========================
prod_master_id prod_desc
1 Freds' nails 1pk
2 Barney's string 12 inches
3 Wilma's soap 1pk
4 Betty's Paint 2 litres


What I want to do it something like this

inventory_product_exceptions
========================
product_id store_id prod_master_id
100003 99 4

inventory_product
========================
product_id prod_master_id
100001 1
100002 2
100003 3

What do/would others do in scenarios like this.
Problems with the exception table approach id that it requires program logic e.g check exception table if cannot find then use the normal table to get the right link but it does solve the need to create a huge table.

Note there are potentially tens of thousands of products and hundreds of stores

my other thought was to maybe have something like this:
inventory_product
========================
product_id store_id prod_master_id
100001 ALL OTHERS 1
100002 ALL OTHERS 2
100003 99 4
100003 ALL OTHERS 3