Database schema for large possible product combinations and associated price
Is creating columns for all the combinations the correct way? Based on the little information you have given us: No, columns for all combinations is probably not the right solution. Imagine if you suddenly get more products, then you will need to add more columns. Or if some products are removed. Designing your schema so you have to alter a table to deal with something as trivial is bad practice. No, you should probably use records instead.  

Let's say you have a combination table, something like this:

CREATE TABLE combination (
  combination_id int unsigned auto_increment,
  product_id int unsigned,
  ...
  PRIMARY KEY (combination_id),
  CONSTRAINT combination_fk1 FOREIGN KEY (product_id) 
    REFERENCES product(product_id)
); 


So you will insert a record for each product in a certain combination. 

You can then select from this table, and join with your product table, to get a listing with all the combinations where a certain product is involved:

SELECT c.combination_id, p.product_name, p.width, p.height, p.price
FROM combination c
  JOIN product p USING(product_id)
WHERE p.product_id = 56
ORDER BY c.combination_id, c.product_id;