What I usually do is create a third table to track which products are available in which colors. Let's say a catalog table. All it stores is an primary ID and the ID of products and the ID of colors.
Table 3: Catalog
ID ColorsID ProductsID
1 1 1 // row one connects with colors and products and this is a red ball
2 2 1 // blue ball
3 1 2 // red cube
4 4 2 // yellow cube
Doing it this way you can connect as many attributes to products as you need. It requires more work to keep track of your catalog but makes things much easier in the long run. Remove the available colors from products and only store the product ID and product name in that table. Any else that is standard like description that will not necessarily change with color. This way if you change your available colors from 3 to say 10 you do not have to add new fields to track. You can also take the catalog and add extra fields like active or in-stock that tracks if product is currently available in that color. In catalog you can also store inventory numbers. What if your price is different based on color? White balls are cheaper? All good reasons for normal the data.
Normalization is about making sure each table has the only minimal fields and to get rid of dependencies. View this accepted answer for a good explanation of normalization on the theory level. Normalization in MYSQL
You can then use JOINS to connect them all to loop through the catalog table.
SELECT Colors.ColorID as Color, Products.ProductID as Product
FROM Catalog
INNER JOIN Colors
ON Catalog.ColorsID = Colors.ColorID
INNER JOIN Products
ON Catalog.ProductsID = Products.ProductID
More information on JOINS can be found here - http://en.wikipedia.org/wiki/Join_%28SQL%29