Is adding rows better then adding columns in case their value is not consistent? In my project I have a table of customers, each customer has his own special price for each product, It's a small business and there are currently about 5 products. The manager says there might be more products in the future, but the business won't exceed 30 products. It's easier for me to not create special products table but to add columns to customer table (each new product - new column).

People advised me against it, but I didn't get an explantaion WHY still can't understand why in such case that product's prices has no relation (each customer has his own special price) adding rows to Products table is better then adding columns of products to Customers table? The only benefit I could think of is that customer that has only 5 products won't have to 'carry' 20 nullable products (saves space on server)?

any help would be greatly appreciated
First, it's about normalization. Today you have max 30 special products, tomorrow (or after 10 years for that matter) you might need another extra 5. You will need to write more code, but you will have greater flexibility after all. At least you won't need to code (or design) 30 columns!
You can have a schema like this:

CREATE TABLE Product (ProductId...)
CREATE TABLE Customer (CustomerId...)
CREATE TABLE CustomerProductPrice (ProductId, CustomerId, Price...)


In the third table you can put price for product/customer, but remember to create a unique constraint on foreign key columns like ProductId, CustomerId.