From a database point of view you would have a pivot table between stores and products. And in that pivot table you would have additional columns like the price.
Using native fields
You can‘t do that on a relation field per se. (In this case entry field, assuming that products are entries) But you could wrap a repeatable field around an entry field and a price field, e.g. matrix or table and build the relationship this way. This way you can select products from within a store entry and put a price on each product.
One caveat is that you can’t bulk select products anymore. You’d have to select them one by one.
Alternative solution
You could write a custom module where you create a new field type that solves your problem. This would not result in an actual pivot table but it would work in a similar way. As far as I know a field type's value is bound to be saved in a single database column (may be wrong). However, you could even come up with some kind of bulk editing solution if you want to, although this would require some more work.