In your example you mentioned
if some order baby cot bed which product id is = 1, then the shipping cost will be £16.00 but if some order a spoon which product id = 2, the shipping cost will be £1.50.
I'm curious how you would like to hand the situation where both items 1 and 2 are in the cart together. Would you combine these shipping charges as a single charge or would you have a special rate based on multiple products? If you just had flat rate shipping rules in the cart you could have the rules setup like this:
if item [1] is in the cart, apply a flat rate of 16
You would configure this on the shipping tab of the cart object. The problem is that if you do this for each item you have available and add more than one type of item to the cart you will only be charged the shipping from the last rule that is triggered because it is just a flat rate and not an accumulated value.
I think it would be best to have a column in the cart to hold the shipping value, then for the shipping charge you would base it off of the subtotal of the shipping value column. This way you would have a single flat rate for a particular item regardless of how many the user purchases, then if they had another different item in the cart the shipping charge would be added to the one for the first item. Please let me know how you would like to handle it and any questions you have about any part of the process.