Mysql – Modelling the structure of a database involving products with multiple barcodes

database-designMySQLrdbmsschema

What would be the best way to store barcodes for products? I have a situation where the same product can have many different barcodes, let's say I have 1 product and this product can have 100 different barcodes (which must be unique).

Is it better to store those barcodes in separate table? For example, the following diagram

enter image description here

means I will have 1 product and 100 rows with different barcodes for this product (same name and everything).

Or is it better to have 100 products with the same name, each with barcode column, as shown below?

enter image description here

Best Answer

If you have a truly one-to-many relationship between your products and barcodes, it makes sense to keep it in a separate table for barcodes (don't repeat yourself-- your name and description would be identical for each repeated barcode).

IF however there is any variation in the product itself (name or description could vary) then you need to store each as a discrete record.