Search keys, multiple barcode
Products can have multiple barcode assigned to them. Other records could also be searched by barcode (like it is the case for customers, but not area, discount profile etc).
Barcode can hold any string (and not just barcodes) and is just an other search key. The reference could be thought as a mandatory search key too.
Currently, barcodes use a conventional name to prevent conflict within models (all customer's barcode begins with 'c'). Because the goal of search keys is to provide a fast input, there should not be a distinction about kind of barcodes (i.e. not asking if scanning for a customer, a product, a discount...).